Od słów do wektorów — czym są embeddings?
Tradycyjne bazy danych, relacyjne i dokumentowe, przez dziesięciolecia opierały wyszukiwanie na dokładnym dopasowaniu słów kluczowych. Problem pojawia się, gdy użytkownik formułuje zapytanie innymi słowami niż te, którymi opisano dokument — system po prostu tego nie znajdzie.
Rozwiązaniem są wektory zanurzeń, czyli embeddings. To gęste, numeryczne reprezentacje danych (tekstu, obrazów, dźwięków) umieszczone w wielowymiarowej przestrzeni wektorowej. Modele uczenia maszynowego — takie jak Sentence Transformers, modele OpenAI czy Google BERT — przekształcają surowe dane w ciąg liczb zmiennoprzecinkowych. Typowy wektor reprezentujący akapit tekstu może mieć od 384 do 3072 wymiarów.
Kluczowa właściwość: obiekty o podobnym znaczeniu lądują blisko siebie w tej abstrakcyjnej przestrzeni. Przykład z dema poniżej: „kość" i „karma" — dwa stereotypowe psie przysmaki — leżą tuż obok siebie, bo łączą wysokie skojarzenie z psem z wysokim skojarzeniem z jedzeniem. „Szynka" siedzi blisko, ale nieco dalej — jest jedzeniem, lecz słabiej kojarzonym z psami. „Smycz" i „miska" są z kolei silnie psie, ale to nie jedzenie — trafiają do zupełnie innego rejonu przestrzeni. Wektorowa baza danych przechowuje te reprezentacje i potrafi błyskawicznie odnaleźć te „najbliższe" danemu zapytaniu.
Miary podobieństwa — matematyczny rdzeń wyszukiwania
Sercem wektorowej bazy danych jest obliczanie podobieństwa między wektorem zapytania a wektorami w bazie. Stosuje się kilka głównych metryk:
- Podobieństwo kosinusowe — najczęściej używane w NLP i wyszukiwaniu semantycznym. Mierzy cosinus kąta między dwoma wektorami, ignorując ich długość. Wartość 1 oznacza identyczne znaczenie, 0 — brak podobieństwa, -1 — znaczenia przeciwstawne. Idealnie sprawdza się w RAG, gdzie krótkie zapytanie musi znaleźć długi dokument.
- Odległość euklidesowa (L2) — intuicyjna miara prostoliniowej odległości w przestrzeni n-wymiarowej. Stosowana tam, gdzie bezwzględna wielkość wektora ma znaczenie, np. w wizji komputerowej czy wykrywaniu anomalii.
- Iloczyn skalarny — łączy analizę kąta i długości wektorów. Popularny w systemach rekomendacyjnych, gdzie długość wektora może kodować intensywność preferencji użytkownika. Z punktu widzenia obliczeń — najszybsza metryka do ewaluacji.
| Metryka | Uwzględnia kierunek | Uwzględnia wielkość | Typowe zastosowanie |
|---|---|---|---|
| Cosinus | ✅ | ❌ | NLP, wyszukiwanie semantyczne, RAG |
| Iloczyn skalarny | ✅ | ✅ | Rekomendacje, ranking |
| L2 (euklidesowa) | ✅ | ✅ | Wizja komputerowa, wykrywanie anomalii |
Algorytmy indeksowania — jak baza szuka w miliardach wektorów
Dokładne wyszukiwanie najbliższego sąsiada (k-NN) wymaga porównania zapytania z każdym wektorem w bazie. Dla zbiorów rzędu miliardów rekordów to obliczeniowo niewykonalne — wchodzi w grę tzw. przekleństwo wielowymiarowości.
Rozwiązaniem są algorytmy przybliżonego wyszukiwania sąsiadów (ANN — Approximate Nearest Neighbor), które poświęcają minimalny procent precyzji na rzecz logarytmicznego wzrostu szybkości.
- HNSW (Hierarchical Navigable Small World) — najpopularniejszy i najszybszy algorytm grafowy, zaimplementowany w Qdrant, Pinecone i pgvector. Tworzy wielowarstwowy hierarchiczny graf, gdzie najwyższe warstwy zawierają rzadkie połączenia między odległymi klastrami (szybka nawigacja ogólna), a niższe warstwy zagęszczają połączenia lokalne. Wyszukiwanie schodzi przez warstwy do dokładnego poziomu w czasie milisekund.
- IVF (Inverted File Index) + PQ (Product Quantization) — IVF grupuje przestrzeń wektorową w komórki Voronoia definiowane przez centroidy. Wyszukiwanie sprawdza tylko najbliższe klastry. W połączeniu z PQ (kwantyzacja produktowa) kompresuje wektory o wysokiej rozdzielczości do zajmujących dużo mniej RAM, kosztem lekkiego spadku precyzji. Sprawdza się w ogromnych, rzadko aktualizowanych zbiorach.
- DiskANN — algorytm opracowany przez Microsoft Research (używany przez Azure Cosmos DB i Milvus) umożliwiający potężne operacje wektorowe bezpośrednio na dyskach SSD, minimalizując koszty operacji in-memory.
Architektura RAG — jak wektorowa baza zasila LLM
Duże modele językowe jak GPT-4, LLaMA czy Claude mają wiedzę zamrożoną w czasie treningu. Cierpią na trzy krytyczne ograniczenia: halucynacje (generowanie fałszywych, ale wiarygodnie brzmiących informacji), knowledge cutoff (brak dostępu do aktualnych danych) oraz brak specyficznej wiedzy domenowej (prywatne dokumenty firmowe nigdy nie wchodziły w skład otwartych zbiorów treningowych).
Retrieval-Augmented Generation rozwiązuje te problemy, łącząc statyczną „pamięć parametryczną" modelu z zewnętrzną „pamięcią nieparametryczną" w wektorowej bazie danych. Mechanizm zaproponowany przez badaczy Meta AI w 2020 roku jako alternatywa dla kosztownego fine-tuningu.
Proces RAG przebiega w trzech fazach:
- Faza indeksowania — przygotowanie wiedzy „do zapamiętania":
- Surowe dokumenty (PDF, wiki, e-maile, bazy ticketów) są dzielone na krótkie fragmenty (chunki), np. po kilka akapitów każdy. Sąsiednie chunki celowo zachodzą na siebie końcówkami (overlap, zazwyczaj ostatnie 1–2 zdania), żeby zdanie wypadające na granicy cięcia nie zostało rozerwane.
- Każdy chunk przepuszczany jest przez model embeddingowy — wyspecjalizowaną sieć neuronową (np. text-embedding-ada-002 od OpenAI), której jedynym zadaniem jest zamienić tekst na listę liczb (wektor) opisującą jego znaczenie. Dwa fragmenty o podobnej treści dostają podobne wektory, nawet jeśli używają zupełnie innych słów.
- Wektor trafia do bazy razem z metadanymi źródła (skąd pochodzi, kiedy powstał, kto jest autorem), żeby później dało się go odnaleźć i wskazać oryginał.
- Faza wyszukiwania — odnajdywanie pasujących fragmentów w czasie rzeczywistym:
- Gdy użytkownik zadaje pytanie, system zamienia je na wektor tym samym modelem embeddingowym, którym wcześniej zaindeksowano dokumenty (wektory pytania i fragmentów muszą „mówić tym samym językiem liczb").
- Baza porównuje wektor pytania ze wszystkimi wektorami chunków i wybiera te leżące najbliżej w przestrzeni znaczeń. Zwracana jest krótka lista najlepszych dopasowań (zwykle 3–10 fragmentów, w żargonie Top-K) — żeby LLM dostał skondensowany kontekst, a nie całą bibliotekę.
- Dokładne przeszukanie milionów wektorów (k-NN, k-nearest neighbors) byłoby zbyt wolne, więc bazy wektorowe stosują sprytne przybliżenie (ANN, approximate nearest neighbors) — oddaje minimalny procent trafności w zamian za odpowiedź w milisekundach zamiast minut.
- Faza generowania — odzyskane fragmenty konstruują prompt przekazywany do LLM (pytanie użytkownika + precyzyjny kontekst z bazy). Model generuje odpowiedź opartą na faktach z weryfikowalnymi źródłami, zamiast zgadywać z wag sieci.
Wyszukiwanie hybrydowe — kiedy samo wyszukiwanie semantyczne nie wystarcza
Czyste wyszukiwanie wektorowe świetnie radzi sobie z dopasowaniem koncepcyjnym, ale zawodzi przy konkretnych identyfikatorach: numerze faktury, nazwie kodowej, skrócie. Tu wchodzi wyszukiwanie hybrydowe.
Nowoczesne wektorowe bazy danych łączą klasyczne wyszukiwanie leksykalne (algorytm BM25) z wyszukiwaniem wektorowym. Umożliwiają też filtrowanie metadanych — przed wyliczeniem podobieństwa milionów wektorów baza może najpierw ograniczyć przestrzeń poszukiwań logicznie: np. tylko dokumenty z datą po 2024 r. lub tylko z określonego działu firmy. Podejście hybrydowe radykalnie zwiększa trafność wyników RAG.
Przegląd głównych systemów wektorowych
Rynek wektorowych baz danych jest dziś wysoce zdywersyfikowany. Można wyróżnić dwie kategorie: natywne bazy wektorowe (Qdrant, Pinecone, Milvus, Weaviate, Chroma) oraz systemy rozszerzone o możliwości wektorowe (pgvector na PostgreSQL, Azure Cosmos DB).
- Pinecone to lider komercyjnych rozwiązań SaaS — w pełni zarządzana, bezserwerowa baza wektorowa. Zerowa bariera wejścia, automatyczne skalowanie, zgodność SOC2. Wada: model zamknięty generujący vendor lock-in, przy dużych zbiorach danych koszty diametralnie rosną.
- Qdrant napisany w Rust zdobył ogromną popularność wśród startupów wymagających ekstremalnie niskich opóźnień. Unikalny mechanizm payload filtering — filtrowanie metadanych wplecione bezpośrednio w wędrówkę po grafie HNSW. Opóźnienia p99 rzędu ~12 ms przy wielomilionowych zbiorach. Dostępny open-source i w chmurze.
- Weaviate z holenderskim rodowodem, napisany w Go, wyróżnia się wbudowanymi modułami wektoryzacji w locie oraz potężnym wyszukiwaniem hybrydowym z alpha-blending parametrów (BM25 + odległość wektorowa). Interfejs GraphQL, choć o stromej krzywej uczenia.
- Milvus (wspierany przez Zilliz) — open-source klasy enterprise, przeznaczony na miliardy i tryliony wektorów. Natywna architektura Kubernetes, ogromna różnorodność indeksów (FAISS, HNSW, IVF, DiskANN), wsparcie akceleracji GPU. Wymaga zaawansowanego zespołu DevOps.
- pgvector — rozszerzenie PostgreSQL umożliwiające operacje wektorowe (np. ORDER BY embedding <=> query_vector) przy zachowaniu pełnej zgodności ACID. Eliminuje problem synchronizacji między tradycyjną infrastrukturą a oddzielną bazą wektorową. Optymalny wybór dla firm z istniejącą infrastrukturą Postgres i zbiorami do ~5 milionów wektorów.
- Chroma — dedykowana szybkiemu lokalnemu prototypowaniu AI i systemom agentowym z LangChain. Ogromna prostota instalacji, wsparcie Python i JavaScript. Gorzej radzi sobie z dużymi środowiskami produkcyjnymi.
Praktyczne zastosowania poza RAG
Elastyczność embeddings znalazła zastosowanie daleko poza chatbotami korporacyjnymi.
- Systemy rekomendacyjne w e-commerce — bazy wektorowe mapują produkty i klientów do gęstych profili numerycznych. Sklep internetowy rozumie abstrakcyjne powiązania semantyczne: klienci przeglądający luksusowe kurtki skórzane mogą zmierzać w stronę określonej palety kolorystycznej obuwia — mimo braku wspólnych słów kluczowych w historii zakupów.
- Zarządzanie wiedzą w organizacjach — RAG oparty na wektorowych bazach unifikuje setki rozproszonych wiki, dokumentów Confluence, polityk PDF z SharePoint. Zamiast szukać konkretnej frazy, pracownik pyta naturalnie: „co zrobić, jeśli rano zapomniałem hasła?" — i dostaje precyzyjną odpowiedź z powołaniem na politykę bezpieczeństwa IT.
- Współczesne SEO — wyszukiwarki takie jak Google AI Overviews w pełni implementują semantyczne dopasowanie wektorowe. Specjaliści SEO analizują podobieństwo kosinusowe swoich artykułów do „idealnego wektora odpowiedzi" na pytania rynkowe. Upychanie słów kluczowych traci sens — liczy się spójność semantyczna treści.
Podsumowanie — jak wybrać właściwą technologię?
Wektorowe bazy danych przestały być domeną globalnych korporacji. Demokratyzacja narzędzi sprawia, że małe firmy konfigurują architektury RAG za ułamek dawnych kosztów.
Wybór sprowadza się do kilku kluczowych pytań: czy potrzebujesz ekstremalnie niskich opóźnień przy własnej infrastrukturze (Qdrant)? Czy wolisz zero zarządzania infrastrukturą za cenę vendor lock-in (Pinecone)? Czy masz istniejącą bazę Postgres i zbiór do 5 milionów wektorów (pgvector)? Czy budujesz system na miliardach wektorów z akceleracją GPU (Milvus)?
Przyszłość kieruje systemy w stronę analizy wielomodalnej — rzadszych połączeń między słowem, obrazem i dźwiękiem w czasie rzeczywistym. Wektorowe bazy danych pozostaną krytycznym interfejsem napędzającym racjonalność asystentów ery Generatywnej Inteligencji.
