Omówienie wyszukiwania semantycznego
Przejdźmy do podstaw wyszukiwania semantycznego:
- Czym różni się od standardowego wyszukiwania leksyktycznego.
- Co to jest osadzanie wektorów?
- Co robią bazy danych wektorów?
Co to jest wyszukiwanie semantyczne?
Standardowe wyszukiwanie leksykalne lub wyszukiwanie słów kluczowych wysyła zapytania do dokumentów przez pasujące znaki. Na przykład zapytanie "light" pasuje do tekstu "jasne światło", ponieważ znak light
pojawia się w dokumencie.
Wyszukiwanie leksykalne można rozszerzyć za pomocą dopasowywania rozmytego; na przykład zapytanie "lights" może nadal odpowiadać tekstowi "jasne światło" lub błędnie napisanym lihgts
z powodu wyłączenia jednego znaku (brakującego s,
lub zamienionego elementu g
i h
). Chociaż dopasowywanie rozmyte i inne techniki, takie jak stemming , są przydatne, ta technika musi odpowiadać synonimom lub semantycznie podobnym języku: różne frazy, slang, słownictwo techniczne itp. Aby udostępnić najbardziej odpowiednie wyniki wyszukiwania leksykalne, autorzy muszą osadzić słowa kluczowe w metadanych lub samym tekście (co może być niewygodnym środowiskiem użytkownika).
Wprowadź wyszukiwanie semantyczne. Wyszukiwanie semantyczne nie używa podobieństwa znaków. Zamiast tego używa ona liczbowych reprezentacji pojęć w słowach i frazach. Te reprezentacje liczbowe są nazywane wektorami osadzania lub po prostu osadzaniem.
Jeśli dwa osadzania są liczbowo podobne, są one również semantycznie podobne. Podobieństwo to jest bardziej ogólne niż testowanie nakładania się słów kluczowych, ponieważ jest mniej wrażliwe na precyzyjne wybieranie lub frazy słów kluczowych.
Aby przeprowadzić wyszukiwanie semantyczne, najpierw wygeneruj wektor osadzania zapytania. Następnie porównaj ten wektor z bazą danych wektorów. Osadzanie znajdujące się najbliżej osadzania zapytania są dokumentami najbardziej semantycznie podobnymi do zapytania.
Większość przypadków użycia relacyjnej bazy danych nie obejmuje przechowywania wektorów nwymiarowych i obliczania odległości liczbowej między nimi. Wydajne wyszukiwanie semantyczne wymaga funkcji wektorowej bazy danych .
Osadzanie
Osadzanie to liczbowa reprezentacja semantyki. Osadzanie jest reprezentowane jako wektory n-wymiarowe: tablice n liczb. Każdy wymiar reprezentuje pewną jakość semantyczną określaną przez model osadzania.
Jeśli dwa wektory osadzania wskazują w podobnych kierunkach, reprezentują podobne pojęcia, takie jak "jasne" i "słoneczne". Jeśli wskazują od siebie, reprezentują przeciwne pojęcia, takie jak "smutne" i "szczęśliwe". Struktura modelu osadzania i dane szkoleniowe określają, co jest uważane za podobne i różne.
Osadzanie można stosować do tekstu i dowolnego rodzaju danych, takich jak obrazy lub dźwięk. Krytyczna część polega na przekształcaniu danych w nwymiarowe wektory osadzania na podstawie modelu lub funkcji. Numeryczne podobieństwo osadzania serwerów proxy semantyczne podobieństwo odpowiadających im danych.
Numeryczne podobieństwo dwóch nwymiarowych wektorów v1
i v2
jest podane przez ich produkt kropkowy, napisany v1·v2
. Aby obliczyć produkt kropkowy, pomnóż wartości poszczególnych wymiarów w parze, a następnie zsumuj wynik:
dot_product(v1, v2) = SUM(
v1[0] * v2[0] +
v1[1] * v2[1],
...,
v1[n-1] * v2[n-1],
v1[n] * v2[n]
)
Ponieważ osadzanie to wektory jednostkowe (wektory długości jednej), produkt kropki jest równy podobieństwu cosinus wektorów, czyli wartości z zakresu od -1 (dokładnie przeciwległych kierunkach) do 1 (dokładnie w tym samym kierunku). Wektory z podobieństwem cosinusu zero są ortogonalne: semantycznie niepowiązane.
Przestrzenie nwymiarowe można wizualizować, projektując je na 3-wymiarową przestrzeń przy użyciu analizy głównych składników (PCA). PCA to standardowa technika zmniejszania wymiarów wektorów. Wynik jest uproszczonym, ale wizualizowalnym projekcją przestrzeni nwymiarowej. Renderowanie osadzania dokumentów w ten sposób spowoduje pokazanie, że bardziej podobne dokumenty są pogrupowane w klastrach, podczas gdy więcej różnych dokumentów jest dalej.
Biorąc pod uwagę te definicje, wykonywanie semantycznego wyszukiwania zapytania względem kolekcji osadzania dokumentów jest proste matematycznie:
- Wygeneruj osadzanie zapytania przy użyciu modelu językowego.
- Zajmij produkt kropkowy zapytania osadzania względem wstępnie obliczonego osadzania każdego dokumentu.
- Posortuj produkty kropkowe z zakresu od -1 do 1.
- Najbardziej istotne (semantycznie podobne) dokumenty mają najwyższe wyniki, a najmniej istotne (semantycznie różne) dokumenty mają najniższe wyniki.
Chociaż proste matematycznie, nie jest to proste lub wydajne zapytanie w relacyjnej bazie danych. Aby przechowywać i przetwarzać tego rodzaju zapytanie podobieństwa wektorów, użyj wektorowej bazy danych.
Wektorowe bazy danych
Baza danych wektorów optymalizuje magazyn i obliczanie wektorów wielowymiarowych, takich jak osadzanie. W szczególności bazy danych wektorów zapewniają szybkie i dokładne obliczenia dot-product w celu wykonania zapytania o podobieństwo wektorów.
Wyszukiwania podobieństwa wektorów mają kilka przypadków użycia:
- znajdowanie obrazów podobnych do osadzania obrazu zapytania
- znajdowanie dokumentów semantycznie podobnych do tekstu zapytania
- znajdowanie produktów z podobnymi funkcjami i ocenami dla systemu rekomendacji
Wyszukiwanie semantyczne wysyła zapytanie do wektorowej bazy danych pod kątem podobieństwa osadzania zapytania do każdego przechowywanego osadzania. Aplikacje mogą następnie pobierać dane odpowiadające osadzaniu.
Istnieje wiele natywnych baz danych wektorów i rozszerzeń bazy danych do wyboru. Następujące usługi platformy Azure mogą pomóc w spełnieniu potrzeb wektorowej bazy danych:
- Rozszerzenie pgvector serwera Azure PostgreSQL
- Rozszerzenie wektorowej bazy danych usługi Azure Cosmos DB
- Azure AI Search