AI: wyszukiwanie wektorowe
AI: wyszukiwanie wektorowe szereguje wiersze tabeli według tego, jak blisko wektora zapytania znajduje się ich kolumna wektorowa, i zapisuje najbliższe wiersze — wraz z odległością, która o tym zdecydowała — w tabeli docelowej. Podaj kilka wektorów zapytań, a każdy z nich otrzyma własny zestaw dopasowań, wszystko w jednym przejściu po tabeli źródłowej i w jednej tabeli wyjściowej.
Wyszukiwanie jest dokładne. Każdy wiersz, który przechodzi filtr kroku, jest porównywany z każdym wektorem zapytania, więc dopasowania to rzeczywiście najbliższe wiersze, a nie przybliżenie — a nakład pracy rośnie wraz z liczbą przeszukiwanych wierszy pomnożoną przez liczbę wektorów zapytań. Nie ma indeksu wektorowego do zbudowania, dostrojenia ani do awaryjnego użycia.
Źródło i cel
Dział zatytułowany „Źródło i cel”- Tabela do przeszukania — tabela, której zapisane wektory są przeszukiwane.
- Tabela docelowa — tabela, do której zapisywane są dopasowania.
Wyszukiwanie
Dział zatytułowany „Wyszukiwanie”- Kolumna wektorowa — kolumna Wektor w tabeli do przeszukania, względem której mierzona jest odległość. Każdy inny typ danych jest odrzucany, z podaniem kolumny i typu, który faktycznie zawiera.
- Metryka odległości — Cosinusowa lub Euklidesowa (L2). Odległość cosinusowa mierzy kąt między dwoma wektorami i ignoruje ich długości, co jest właściwe dla osadzeń tekstu; euklidesowa mierzy odległość w linii prostej i uwzględnia długość. W obu przypadkach mniejsza odległość oznacza bliższy wiersz. Domyślnie wybrana jest cosinusowa.
- Liczba dopasowań na zapytanie — ile najbliższych wierszy zachować dla każdego wektora zapytania. Wartość domyślna to 10.
Wektory zapytań
Dział zatytułowany „Wektory zapytań”Karta Wektory zapytań przyjmuje tablicę JSON z jednym wpisem na zapytanie, każdy z id i vector:
[ {"id": "q1", "vector": [0.1, 0.2, 0.3]}, {"id": "q2", "vector": [0.4, 0.5, 0.6]}]Każde zapytanie zwraca własny zestaw dopasowań, a id identyfikuje je w wyniku. Identyfikatory muszą być unikatowe, każda wartość musi być liczbą skończoną, a każdy wektor zapytania musi mieć tyle samo wartości co wektory zapisane — odległość jest zdefiniowana tylko między wektorami o równej szerokości. Niezgodność jest odrzucana, z podaniem zapytania, liczby jego wartości i szerokości, którą ma lub deklaruje kolumna.
Wybierz podzbiór danych
Dział zatytułowany „Wybierz podzbiór danych”Filtr ogranicza, które wiersze są kandydatami. Wiersze są filtrowane przed szeregowaniem, więc dopasowania to najbliższe wiersze spośród tych, które przechodzą filtr — a nie najbliższe ogółem, filtrowane później. To główny sposób kontrolowania, ile pracy wykonuje krok; zobacz Dobór rozmiaru wyszukiwania.
Kolumny wyjściowe
Dział zatytułowany „Kolumny wyjściowe”Każde dopasowanie jest zapisywane jako jeden wiersz zawierający kolumny wybrane na karcie Wybór danych tabeli oraz dwie kolumny obliczane, których nazwami możesz sterować:
- Kolumna nazwy zapytania — identyfikator wektora zapytania, na który odpowiada ten wiersz. Domyślnie
query_id. - Kolumna odległości — zmierzona odległość między dopasowaniem a tym wektorem zapytania. Domyślnie
distance. Jest to również klucz szeregowania.
Nazwa zapytania jest w wyniku pierwsza, po niej następują wybrane kolumny, a odległość jest ostatnia. Nazwy kolumn wyjściowych muszą być unikatowe.
Pomijane wiersze
Dział zatytułowany „Pomijane wiersze”Wiersz, którego odległości nie da się zmierzyć, jest wykluczany z dopasowań, zamiast być zwracany tak, jakby był najbliższy. Z takim przypadkiem się spotkasz, gdy wartość bezwzględna wektora przekracza zakres 32-bitowej liczby zmiennoprzecinkowej: nie jest dla niego zwracana żadna mierzalna odległość, a ponieważ nic dostępnego nie umieszcza niemierzalnej odległości na końcu, uwzględnienie takiego wiersza umieściłoby na szczycie każdego wyniku wiersze, o których wyszukiwanie wie najmniej.
Uruchom przepływ pracy z włączonym Tryb diagnostyczny, aby zobaczyć liczbę. Dziennik przepływu pracy raportuje wtedy, ile wierszy pominęło każde zapytanie, lub informuje, że krok zmierzył każdy przeszukany wiersz. Policzenie ich wymaga drugiego przejścia po tabeli, dlatego jest naliczane tylko na żądanie; przy wyłączonym trybie diagnostycznym dziennik informuje, że niemierzalne wiersze są pomijane z założenia, i odsyła do trybu diagnostycznego po liczbę.
Zapisany wektor zawierający brakującą wartość wewnątrz tablicy to inna sprawa: nie można zmierzyć odległości względem żadnej tablicy, która ją zawiera, więc wyszukiwanie jest odrzucane w całości, z podaniem kolumny, zamiast po cichu zwracać częściowy wynik. Popraw lub usuń te wiersze i uruchom ponownie.
Dobór rozmiaru wyszukiwania
Dział zatytułowany „Dobór rozmiaru wyszukiwania”Koszt uruchomienia to liczba wierszy-kandydatów pomnożona przez liczbę wektorów zapytań, a krok odrzuca wyszukiwanie, którego suma przekracza dziesięć miliardów pomiarów odległości — raportując liczbę wierszy, liczbę zapytań i limit — zamiast zaczynać pracę, której nie da się ukończyć. Dwie rzeczy utrzymują wyszukiwanie dobrze w tych granicach:
- Filtruj do istotnego wycinka. Zawęź kandydatów do jednej jednostki, jednego okresu lub jednego zbioru dokumentów, zamiast skanować cały korpus, by odpowiedzieć na pytanie dotyczące jego części.
- Podziel tabelę według wymiaru, według którego zawsze filtrujesz, i przeszukuj odpowiednią tabelę. Ograniczenie liczby kandydatów jest znacznie skuteczniejsze niż cokolwiek innego, co tu dostępne.
Zadeklarowanie Szerokość wektora dla kolumny również pomaga: po jej zadeklarowaniu krok bierze szerokość z deklaracji zamiast próbkować wiersz, by ją poznać. Zobacz Typ danych Wektor.
Do czego nie można użyć kolumny wektorowej
Dział zatytułowany „Do czego nie można użyć kolumny wektorowej”Kolumna Wektor jest odrzucana jako klucz złączenia, kolumna grupowania i cel agregacji — w tym kroku i w każdym innym. Komunikat wskazuje kolumnę i rolę, w której ją użyto, zarówno przy zapisie kroku, jak i przy uruchomieniu kroku zapisanego wcześniej. Zamiast tego łącz i grupuj według kluczy biznesowych obok wektora. Przekazywanie wektora przez krok jako zwykłej kolumny wyjściowej jest dozwolone, podobnie jak zliczanie wierszy i zliczanie unikalnych wartości.
Powiązane
Dział zatytułowany „Powiązane”- Typ danych Wektor — deklarowanie kolumny Wektor, ustawianie jej szerokości i ładowanie do niej osadzeń
- Spatial Find Nearest — ten sam schemat najbliższych sąsiadów dla geometrii zamiast osadzeń
- Table Lookup — przywróć kolumny opisowe do dopasowanych wierszy
- Importuj Parquet — załaduj osadzenia z pliku Parquet