✨ Świeża dostawa•nowe kody na kinetyka.pl: Gemini Pro 18 mies. 170 zł•Cursor, ElevenLabs, Lovable i więcej, roczne plany AI w ułamku ceny Zobacz →
Przejdź do treści
Artykuły

Embeddingi i bazy wektorowe po ludzku (z testem po polsku)

Embedding i baza wektorowa wytłumaczone prosto, z testem dwóch darmowych modeli na polskich tekstach i tabelą: kiedy numpy, Chroma, pgvector.

6 min czytania
Logo Ollamy - embeddingi i bazy wektorowe po ludzku

👁 119 przeczytań

// w skrócie
  • Model bge-m3 znalazł właściwy przepis z polskich ustaw w 8 przypadkach na 10, podczas gdy nomic-embed-text tylko w 4 na 10.
  • bge-m3 ma wektor 1024-wymiarowy i zajmuje 664 MB pamięci karty, a nomic-embed-text 768 wymiarów i 323 MB, przy licencjach odpowiednio MIT i Apache 2.0.
  • W bge-m3 pytanie spoza dokumentów uzyskało podobieństwo maksymalnie 0,43, co pozwala ustawić próg i odpowiadać 'nie wiem', czego nie da się zrobić z nomic-embed-text.

Embedding to zamiana tekstu na listę liczb (wektor), w której teksty o podobnym znaczeniu dostają podobne liczby. Baza wektorowa przechowuje takie wektory i szybko znajduje te najbliższe pytaniu. Na tym stoi wyszukiwanie „po znaczeniu”, RAG i pamięć agentów AI. Poniżej tłumaczę to bez matematyki i pokazuję test dwóch darmowych modeli embeddingów na polskich zdaniach i polskich ustawach: jeden znalazł właściwy przepis w 8 przypadkach na 10, drugi w 4. Tekst jest częścią ścieżki Agenci AI od zera.

Stan na 4 października 2026

  • Testowałem dwa modele uruchamiane lokalnie w Ollamie 0.35.1 na RTX 4090: bge-m3 (licencja MIT) i nomic-embed-text (Apache 2.0). Oba można używać komercyjnie.
  • Test: 5 zdań do porównania oraz 10 pytań do 920 fragmentów trzech polskich ustaw.
  • Koszt: 0 zł, wszystko liczone na moim komputerze.
  • Kod testu jest w paczce promptowy-agenci-starter (04_rag.py).

Embedding, prostymi słowami

Wyobraź sobie mapę, na której każde zdanie jest punktem. Zdania o kaucji za mieszkanie leżą blisko siebie, zdania o urlopie trochę dalej, a zdania o pogodzie na drugim końcu mapy. Embedding to współrzędne zdania na takiej mapie. Różnica jest taka, że mapa nie ma dwóch wymiarów, tylko kilkaset albo ponad tysiąc.

Tak wygląda początek embeddingu zdania „Ile wynosi kaucja za wynajem mieszkania?” z modelu bge-m3:

[-0.0375, 0.0463, -0.0196, -0.0042, 0.0015, ... ]   (razem 1024 liczby)

Pojedyncze liczby nic nie znaczą. Znaczenie ma odległość między wektorami. Najczęściej liczy się ją jako podobieństwo cosinusowe: 1 to identyczny kierunek (to samo znaczenie), okolice 0 to brak związku.

Test na pięciu zdaniach

Porównałem zdanie „Ile wynosi kaucja za wynajem mieszkania?” z czterema innymi. Dobry model powinien uznać za najbliższe zdanie o tym samym sensie, nawet jeśli używa innych słów albo innego języka.

Zdanie porównywanebge-m3nomic-embed-text
How much is the rental deposit for a flat? (to samo po angielsku)0,7360,416
Jaki depozyt wpłaca najemca lokalu? (ten sam sens, inne słowa)0,6780,665
Kaucja za butelki zwrotne w sklepie (to samo słowo, inny sens)0,5690,713
Ile dni urlopu wypoczynkowego mam w roku? (inny temat)0,4420,755

bge-m3 ułożył zdania dokładnie tak, jak zrobiłby to człowiek: tłumaczenie najbliżej, potem parafraza, potem „kaucja za butelki”, a urlop najdalej. nomic-embed-text uznał pytanie o urlop za najbardziej podobne do pytania o kaucję, a angielskie tłumaczenie za najmniej. To model trenowany głównie na angielskim i po polsku łapie raczej budowę zdania („Ile wynosi… / Ile dni…”) niż jego sens.

Test na polskich ustawach

W tekście RAG krok po kroku zbudowałem wyszukiwarkę po Kodeksie pracy, ustawie o ochronie praw lokatorów i ustawie o prawach pacjenta (920 fragmentów). Zadałem 10 pytań potocznym językiem i sprawdziłem, na którym miejscu wyników pojawia się właściwy artykuł.

Cechabge-m3nomic-embed-text
Właściwy artykuł na 1. miejscu5 z 102 z 10
Właściwy artykuł w pierwszej piątce8 z 104 z 10
Wymiary wektora1024768
Maksymalna długość tekstu (kontekst w Ollamie)8192 tokeny2048 tokenów
Pamięć karty po załadowaniu664 MB323 MB
Rozmiar indeksu 920 fragmentów8,5 MB7,5 MB
Czas indeksowania 920 fragmentów*155 s105 s
Rozrzut podobieństw (pytanie spoza dokumentów vs trafne)0,43 vs 0,64-0,720,69 vs 0,69-0,77
LicencjaMITApache 2.0

* Karta była w czasie pomiaru obciążona innym zadaniem, więc czasy traktuj orientacyjnie. Na wolnej karcie oba modele są szybsze.

Ostatni wiersz jest równie ważny jak trafność. W bge-m3 pytanie o prędkość na autostradzie (brak w ustawach) dostało najwyższe podobieństwo 0,43, wyraźnie niżej niż trafne fragmenty. Można więc ustawić próg i odpowiadać „nie wiem” bez pytania modelu. W nomic-embed-text wszystko ma podobieństwo około 0,7 i takiego progu nie da się ustawić.

Co to jest baza wektorowa

Baza wektorowa to miejsce, w którym trzymasz embeddingi razem z tekstem i metadanymi (plik, numer artykułu, data) i które umie szybko znaleźć najbliższe wektory. Przy małych zbiorach wystarczy zwykła tablica w numpy: moje 920 wektorów to 8,5 MB, a przeszukanie ich to jedno mnożenie macierzy. Bazę bierzesz, gdy:

  • masz setki tysięcy fragmentów i liczenie wszystkiego naraz robi się wolne;
  • chcesz filtrować wyniki po metadanych („tylko Kodeks pracy”, „tylko dokumenty z 2026 roku”);
  • dokumenty często dochodzą i nie chcesz przeliczać całego indeksu;
  • z wyszukiwarki korzysta wiele osób naraz.
RozwiązanieGdzie działaDla kogo
numpy (plik .npz)w Twoim skrypcienauka, do kilkudziesięciu tysięcy fragmentów
Chromalokalnie, plik na dysku albo serwerpierwszy projekt, prototypy
pgvector (PostgreSQL)Twoja baza PostgreSQLmasz już PostgreSQL i chcesz jednego miejsca na dane
Qdrant, Weaviate, Milvusserwer własny albo chmuraduże zbiory, wielu użytkowników

Sprawdziłem, że Chroma 1.5.9 zwraca dla moich danych dokładnie te same wyniki co numpy. Baza wektorowa nie poprawia trafności, poprawia wygodę i skalę. Trafność zależy od modelu embeddingów i od tego, jak potniesz tekst.

Jak wybrać model embeddingów do polskiego

Nie przepłacaj za te subskrypcje

Prowadzę sklep z rocznymi dostępami do narzędzi AI - te same konta, o których piszę wyżej, tylko taniej niż w cenniku producenta.

Zobacz, co jest dostępne

  1. Wybierz model wielojęzyczny. Z darmowych lokalnych sprawdziłem bge-m3 i dobrze radzi sobie z polskim.
  2. Zbuduj mały zestaw testowy: 10-20 pytań, do których znasz właściwy fragment. Bez tego wybór modelu to zgadywanie.
  3. Mierz „czy właściwy fragment jest w pierwszej piątce”, bo właśnie tyle fragmentów zwykle dostaje model w RAG.
  4. Sprawdź rozrzut podobieństw dla pytań spoza tematu. Duża różnica oznacza, że da się ustawić próg „nie wiem”.
  5. Pamiętaj o prefiksach: nomic-embed-text wymaga dopisku search_query: przed pytaniem i search_document: przed dokumentem. Bez nich wyniki są jeszcze gorsze.

Embeddingi oferują też API w chmurze (OpenAI, Google, Mistral, Cohere). Płacisz wtedy za tokeny, a dokumenty wysyłasz do dostawcy. Jak liczyć tokeny i koszt, opisuje tekst o tokenach.

Gdzie embeddingi przydają się poza RAG

  • Wyszukiwarka w sklepie albo bazie wiedzy, która rozumie „buty na deszcz” jako „obuwie wodoodporne”.
  • Wykrywanie duplikatów zgłoszeń, pytań na forum albo artykułów.
  • Grupowanie opinii klientów w tematy bez ręcznego tagowania.
  • Pamięć agenta: agent zapisuje wnioski jako embeddingi i przy nowym zadaniu wyszukuje podobne sytuacje z przeszłości. Przykłady agentów: Agent AI: 12 przykładów.

Najczęstsze pytania

Embedding co to jest w jednym zdaniu?

Lista liczb opisująca znaczenie tekstu, dzięki której komputer może porównywać teksty po sensie, a nie po słowach.

Czym się różni embedding od tokenu?

Token to kawałek tekstu (część słowa), na które model dzieli tekst. Embedding to wektor opisujący znaczenie całego fragmentu. Model embeddingów najpierw dzieli tekst na tokeny, a potem zamienia je na jeden wektor.

Czy embeddingi trzeba liczyć na karcie graficznej?

Nie, małe modele działają też na procesorze, tylko wolniej. bge-m3 zajmował u mnie 664 MB pamięci karty, więc zmieści się na prawie każdej karcie z ostatnich lat.

Czy mogę mieszać embeddingi z różnych modeli?

Nie. Każdy model ma własną „mapę”. Pytanie musi być zamienione na wektor tym samym modelem co dokumenty. Po zmianie modelu trzeba przeliczyć cały indeks.

Baza wektorowa czy zwykła baza danych?

Zwykła baza szuka po słowach i wartościach, wektorowa po znaczeniu. Najlepsze wyniki daje często połączenie obu (wyszukiwanie hybrydowe), bo słowa kluczowe łapią nazwy własne i numery, a wektory parafrazy.

Ile kosztują embeddingi?

Lokalnie nic poza prądem. W API to jedne z najtańszych zapytań do modeli AI, zwykle ułamki dolara za milion tokenów. Aktualne ceny sprawdzaj w cenniku dostawcy.

Google · Twoje źródłaPromptowy wyżej w Twoim Google - jednym kliknięciemDodaj do preferowanych źródeł →

Źródła i data sprawdzenia

// Newsletter

Cały tydzień w AI, w jednym mailu

Wybrane premiery, narzędzia i analizy. Raz w tygodniu, prosto do skrzynki.

Zapisz się za darmo →
Za darmo. Wypisujesz się jednym kliknięciem.
// czytaj też

Podobne tematy na Promptowym

Piotr Olszewski

Piotr Olszewski

AUTOR I WYDAWCA

Piotr Olszewski - twórca i autor Promptowego, polskiego serwisu o sztucznej inteligencji. Codziennie śledzi premiery modeli, narzędzia i regulacje AI, i tłumaczy je prostym, konkretnym językiem.

// mapa strony

🛒 Sklep Kinetyka Google AI Gemini Pro 170 zł CapCut Pro 460 zł/rok Lovable Pro 400 zł/rok Zobacz wszystko →
promptowy w liczbach 0tekstów w archiwum0newsów z ostatnich 7 dni0modeli wideo w obserwatorium0zagadek w grach
× ‹ powiększenie ›