Nie wszystko jest “Sztuczną Inteligencją”
Czym jest wyszukiwanie wektorowe i w jaki sposób współpracuje z modelami językowymi
Bardzo wiele projektów „sztucznej inteligencji” korzysta z techniki zwanej wyszukiwaniem wektorowym. To często najlepszy sposób by z dużego zbioru danych wybrać te informacje które następnie zostaną użyte przez model językowy do przygotowania odpowiedzi na nasze zapytanie. Wyszukiwanie wektorowe bardzo często stosowane jest w Retrieval-Augmented Generation (RAG) - technikach zwiększania dokładności i wiarygodności generatywnych modeli sztucznej inteligencji za pomocą faktów pobieranych ze źródeł zewnętrznych.
Przykład interakcji wyszukiwania wektorowego i LLM
Chcielibyśmy dowiedzieć się "How many liters of water does a Dutch windmill pump out per minute?". Pierwsza czynnością jest przekształcenie naszego zapytania na wektor - proces znajdywania podobnych informacji szuka podobnych wektorów do wektora referencyjnego. W rezultacie przeszukiwania zbioru wektorowa baza danych zwraca kilka rekordów z największym podobieństwem do naszego wzorca (naszego zapytania). Te rekordy są siła rzeczy powiązane kontekstowo z naszym zapytaniem.
Tak uzyskana informacja trafia do Dużego Modelu językowego jako dane które zostaną użyte do przygotowania finalnej odpowiedzi. LLM do wygenerowania odpowiedzi wykorzystał wiedzę zawartą w modelu plus dostarczoną z wektorowej bazy danych.
Czym są „wektory” i jak działa wyszukiwanie wektorowe?
Wektory to matematyczne reprezentacje danych w przestrzeni wielowymiarowej. W tej przestrzeni każde dane posiadają swoje koordynaty (wektory), a do reprezentowania skomplikowanych danych można użyć dziesiątek tysięcy wymiarów. Słowa, frazy lub całe dokumenty, a także obrazy, pliki audio i inne typy danych można wektoryzować. Np. dla każdego opisu produktu obliczany jest wektor cech - tzw. "osadzenie" (po angielsku "embeddings"). Wyszukując informacji podobnych, używamy algorytmów które dostarczają nam informacje zapisane w podobnych lokalizacji przestrzeni wielowymiarowej co informacja referencyjna. Np. "pies" znajduje się niedaleko "pieska" czy "szczeniaka" (dla uproszczenia, bo jak napisałem wyżej, można umieścić tam całe dokumenty, obrazy, dźwięk).
Najpopularniejsze metody obliczania odległości miedzy informacjami umieszczonymi w przestrzenie (podobieństwo między wektorami) to metoda Euclidesa i Cosine.
Dla uproszczenia - tak mogłoby wyglądać miejsce gdzie przechowujemy informacje o owocach; kolejne barwy reprezentują przestrzeń zajętą przez opisy podobnych owoców.
Tworzenie embeddings czyli wektorów
By utworzyć „osadzenie” danej informacji w wielowymiarowej przestrzeni wektorowej bazy danych niezbędne jest użycie odpowiedniego modelu. Modele te są wyspecjalizowane w tworzeniu „embeddings” dla sentencji tekstowych, obrazów i dźwięków. Jak możesz się spodziewać modele wrażliwe są na język.
Wyszukiwanie wektorowe działa dobrze dla sentencji zawierających wyraziste informacje, kiedy sentencja parametr podobna jest długości zapisanej jako wektor sentencji. Do obsługi sentencji asymetrycznych (na podstawie krótkiego zapytanie przeszukujemy dłuższe ciągi informacji) stosowane są zwykle inne modele. Jeśli chcesz dowiedzieć się więcej o modelach, dobrym miejscem jest strona Huggingface.
Co jeszcze należy wiedzieć o wektorowych bazach danych
Samo wyszukiwanie trudno nazwać „sztuczną inteligencją”. Wyszukiwanie wektorowe nie jest też tą jedyną, wspaniałą metodą przeszukiwania zbiorów danych właściwą dla każdego zastosowania. Jeśli informacje których poszukujesz nie połączone są kontekstem, są to proste i krótkie frazy lub poszukujesz dokładnie to co zawiera wzorzec, odpuść sobie wektory – systemy takie jak Apache Solr (i wiele innych) sprawdzą się dużo lepiej.
Codziennie korzystasz z wyszukiwania wektorowego korzystając z wyszukiwarki Google. Jeśli wpisujesz „przepis na pieczenie” a Google dopowiada „ciasta… mięsa…chleba” to jest to właśnie wyszukiwanie wektorowe – znalezienie blisko osadzonych fraz.