Wektory w usłudze Azure AI Search

Wyszukiwanie wektorowe to podejście do pobierania informacji, które obsługuje indeksowanie i wykonywanie zapytań w przypadku liczbowych reprezentacji zawartości. Ponieważ zawartość jest liczbowa, a nie zwykły tekst, dopasowanie jest oparte na wektorach, które są najbardziej podobne do wektora zapytania, co umożliwia dopasowywanie między:

  • semantyczna lub koncepcyjna podobieństwo ("pies" i "psi", koncepcyjnie podobne, ale lingwistyczne odrębne)
  • wielojęzyczna zawartość ("pies" w języku angielskim i "hund" w języku niemieckim)
  • wiele typów zawartości ("pies" w postaci zwykłego tekstu i zdjęcie psa w pliku obrazu)

Ten artykuł zawiera ogólne wprowadzenie do wektorów w usłudze Azure AI Search. Objaśniono również integrację z innymi usługami platformy Azure oraz omówiono terminologię i pojęcia związane z opracowywaniem wyszukiwania wektorów.

Zalecamy, aby zapoznać się z tym artykułem w tle, ale jeśli wolisz rozpocząć pracę, wykonaj następujące kroki:

Możesz również rozpocząć od przewodnika Szybki start wektora lub przykładów kodu w usłudze GitHub.

Jakie scenariusze mogą obsługiwać wyszukiwanie wektorowe?

Scenariusze wyszukiwania wektorowego obejmują:

  • Wyszukiwanie podobieństwa. Kodowanie tekstu przy użyciu modeli osadzania, takich jak osadzanie openAI lub modele typu open source, takie jak SBERT, i pobieranie dokumentów z zapytaniami, które są również kodowane jako wektory.

  • Wyszukiwanie w różnych typach zawartości (wielomodalnych). Kodowanie obrazów i tekstu przy użyciu osadzania wielomodalnego (na przykład za pomocą biblioteki OpenAI CLIP lub GPT-4 Turbo z funkcją Vision w usłudze Azure OpenAI) i wykonywanie zapytań o osadzaną przestrzeń składającą się z wektorów z obu typów zawartości.

  • Wyszukiwanie hybrydowe. W usłudze Azure AI Search wyszukiwanie hybrydowe odnosi się do wektora i wykonywania zapytań słów kluczowych w tym samym żądaniu. Obsługa wektorów jest implementowana na poziomie pola z indeksem zawierającym zarówno pola wektorowe, jak i pola tekstowe z możliwością wyszukiwania. Zapytania są wykonywane równolegle, a wyniki są scalane w jedną odpowiedź. Opcjonalnie dodaj klasyfikację semantyczną, aby uzyskać większą dokładność dzięki ponownemu korbowaniu L2 przy użyciu tych samych modeli językowych, które zasilają usługę Bing.

  • Wyszukiwanie wielojęzyczne. Zapewnienie środowiska wyszukiwania we własnym języku użytkowników jest możliwe dzięki osadzaniu modeli i modeli czatów wyszkolonych w wielu językach. Jeśli potrzebujesz większej kontroli nad tłumaczeniem, możesz uzupełnić funkcje wielojęzyczne obsługiwane przez usługę Azure AI Search dla zawartości niewektorowej w scenariuszach wyszukiwania hybrydowego.

  • Filtrowane wyszukiwanie wektorów. Żądanie zapytania może zawierać zapytanie wektorowe i wyrażenie filtru. Filtry mają zastosowanie do pól tekstowych i liczbowych oraz są przydatne w przypadku filtrów metadanych oraz dołączania lub wykluczania wyników wyszukiwania na podstawie kryteriów filtru. Chociaż pole wektorowe nie jest możliwe do filtrowania, można skonfigurować filtrowalny tekst lub pole liczbowe. Aparat wyszukiwania może przetworzyć filtr przed wykonaniem zapytania wektorowego lub po nim.

  • Wektorowa baza danych. Usługa Azure AI Search przechowuje dane, nad którymi wykonujesz zapytania. Używaj go jako czystego magazynu wektorów w dowolnym momencie, gdy potrzebujesz pamięci długoterminowej lub baza wiedzy lub danych uziemowych dla architektury rozszerzonej generacji pobierania (RAG) lub dowolnej aplikacji korzystającej z wektorów.

Obsługa wektorów obejmuje indeksowanie, przechowywanie i wykonywanie zapytań dotyczących osadzania wektorów z indeksu wyszukiwania.

Na poniższym diagramie przedstawiono indeksowanie i przepływy pracy zapytań na potrzeby wyszukiwania wektorów.

Architektura przepływu pracy wyszukiwania wektorowego.

Po stronie indeksowania usługa Azure AI Search przyjmuje osadzanie wektorów i używa algorytmu najbliższych sąsiadów, aby umieścić podobne wektory blisko siebie w indeksie. Wewnętrznie tworzy indeksy wektorów dla każdego pola wektora.

Sposób osadzania z zawartości źródłowej do usługi Azure AI Search zależy od podejścia i tego, czy można korzystać z funkcji w wersji zapoznawczej. Osadzanie można wektoryzować lub wygenerować jako wstępny krok przy użyciu modeli z platformy OpenAI, usługi Azure OpenAI i dowolnej liczby dostawców, w szerokim zakresie zawartości źródłowej, w tym tekstu, obrazów i innych typów zawartości obsługiwanych przez modele. Następnie można wypchnąć zawartość wstępnie wektorową do pól wektorowych w magazynie wektorów. Jest to ogólnie dostępne podejście. Jeśli możesz korzystać z funkcji w wersji zapoznawczej, usługa Azure AI Search oferuje zintegrowane fragmentowanie i wektoryzacja danych w potoku indeksatora. Nadal udostępniasz zasoby (punkty końcowe i informacje o połączeniu z usługą Azure OpenAI), ale usługa Azure AI Search wykonuje wszystkie wywołania i obsługuje przejścia.

Po stronie zapytania w aplikacji klienckiej zbierasz dane wejściowe zapytania od użytkownika, zazwyczaj za pośrednictwem przepływu pracy monitu. Następnie możesz dodać krok kodowania, który konwertuje dane wejściowe na wektor, a następnie wysłać zapytanie wektorowe do indeksu w usłudze Azure AI Search w celu wyszukania podobieństwa. Podobnie jak w przypadku indeksowania, można wdrożyć zintegrowaną wektoryzację (wersja zapoznawcza), aby przekonwertować pytanie na wektor. W przypadku obu metod usługa Azure AI Search zwraca dokumenty z żądanymi k najbliższymi sąsiadami (kNN) w wynikach.

Usługa Azure AI Search obsługuje scenariusze hybrydowe, które równolegle uruchamiają wyszukiwanie wektorów i słów kluczowych, zwracając ujednolicony zestaw wyników, który często zapewnia lepsze wyniki niż tylko wyszukiwanie wektorów lub słów kluczowych. W przypadku zawartości hybrydowej, wektorowej i niewektorowej są pozyskiwane do tego samego indeksu, w przypadku zapytań uruchamianych obok siebie.

Dostępność i cennik

Wyszukiwanie wektorowe jest dostępne w ramach wszystkich warstw usługi Azure AI Search we wszystkich regionach bez dodatkowych opłat.

Nowsze usługi utworzone po 3 kwietnia 2024 r. obsługują wyższe limity przydziału dla indeksów wektorów.

Wyszukiwanie wektorowe jest dostępne w:

Uwaga

Niektóre starsze usługi wyszukiwania utworzone przed 1 stycznia 2019 r. są wdrażane w infrastrukturze, która nie obsługuje obciążeń wektorowych. Jeśli spróbujesz dodać pole wektora do schematu i wystąpi błąd, jest to wynik nieaktualnych usług. W takiej sytuacji należy utworzyć nową usługę wyszukiwania, aby wypróbować funkcję wektora.

Usługa Azure AI Search jest głęboko zintegrowana z platformą Azure AI. W poniższej tabeli wymieniono kilka przydatnych w obciążeniach wektorowych.

Rezultat Integracja
Azure OpenAI Studio Na czacie z narzędziem zabaw dla danych dodaj własne dane używa usługi Azure AI Search na potrzeby uziemienia danych i wyszukiwania konwersacyjnego. Jest to najprostsze i najszybsze podejście do rozmowy z danymi.
Azure OpenAI Usługa Azure OpenAI udostępnia modele osadzania i modele czatów. Pokazy i przykłady są przeznaczone dla tekstu osadzania-ada-002. Zalecamy używanie usługi Azure OpenAI do generowania osadzonych obiektów tekstowych.
Usługi platformy Azure AI Pobieranie obrazu Vectorize Image API (wersja zapoznawcza) obsługuje wektoryzację zawartości obrazu. Zalecamy ten interfejs API do generowania osadzonych obrazów.
Platformy danych platformy Azure: Azure Blob Storage, Azure Cosmos DB Indeksatory umożliwiają automatyzowanie pozyskiwania danych, a następnie używanie zintegrowanej wektoryzacji (wersja zapoznawcza) do generowania osadzania. Usługa Azure AI Search może automatycznie indeksować dane wektorów z dwóch źródeł danych: indeksatory obiektów blob platformy Azure i indeksatory usługi Azure Cosmos DB for NoSQL. Aby uzyskać więcej informacji, zobacz Dodawanie pól wektorów do indeksu wyszukiwania.

Jest on również często używany w strukturach typu open source, takich jak LangChain.

Pojęcia dotyczące wyszukiwania wektorowego

Jeśli dopiero zaczynasz korzystać z wektorów, w tej sekcji opisano niektóre podstawowe pojęcia.

Wyszukiwanie wektorowe to metoda pobierania informacji, w której dokumenty i zapytania są reprezentowane jako wektory zamiast zwykłego tekstu. W wyszukiwaniu wektorowym modele uczenia maszynowego generują wektorowe reprezentacje danych wejściowych źródłowych, które mogą być tekstem, obrazami lub inną zawartością. Posiadanie matematycznej reprezentacji zawartości stanowi wspólną podstawę dla scenariuszy wyszukiwania. Jeśli wszystko jest wektorem, zapytanie może znaleźć dopasowanie w przestrzeni wektorowej, nawet jeśli skojarzona oryginalna zawartość znajduje się na innym nośniku lub w innym języku niż zapytanie.

Gdy zawartość z możliwością wyszukiwania jest reprezentowana jako wektory, zapytanie może znaleźć bliskie dopasowania w podobnej zawartości. Model osadzania używany do generowania wektorów wie, który wyrazy i pojęcia są podobne, i umieszcza wynikowe wektory blisko siebie w przestrzeni osadzania. Na przykład wektoryzowane dokumenty źródłowe dotyczące "chmur" i "mgły" są bardziej prawdopodobne, aby pojawić się w zapytaniu o "mgły", ponieważ są one semantycznie podobne, nawet jeśli nie są zgodne leksykalne.

Osadzanie i wektoryzacja

Osadzanie to określony typ wektorowej reprezentacji zawartości lub zapytania utworzonego przez modele uczenia maszynowego, które przechwytują semantyczne znaczenie tekstu lub reprezentacji innej zawartości, takiej jak obrazy. Modele uczenia maszynowego w języku naturalnym są trenowane na dużych ilościach danych w celu identyfikowania wzorców i relacji między wyrazami. Podczas trenowania uczą się reprezentować dowolne dane wejściowe jako wektor liczb rzeczywistych w kroku pośrednim nazywanym koderem. Po zakończeniu trenowania te modele językowe można modyfikować, aby reprezentacja wektora pośredniego stała się danymi wyjściowymi modelu. Wynikowe osadzanie to wektory wielowymiarowe, w których wyrazy o podobnych znaczeniach są bliżej siebie w przestrzeni wektorowej, jak wyjaśniono w artykule Understand embeddings (Azure OpenAI) (Omówienie osadzania (Azure OpenAI).

Skuteczność wyszukiwania wektorów w pobieraniu odpowiednich informacji zależy od skuteczności modelu osadzania w celu destylowania znaczenia dokumentów i zapytań do wynikowego wektora. Najlepsze modele są dobrze wytrenowane na typach danych, które reprezentują. Możesz ocenić istniejące modele, takie jak osadzanie tekstu w usłudze Azure OpenAI-ada-002, przynieść własny model, który jest trenowany bezpośrednio w przestrzeni problemowej, lub dostosować model ogólnego przeznaczenia. Usługa Azure AI Search nie nakłada ograniczeń dotyczących wybranego modelu, dlatego wybierz najlepszy dla danych.

Aby utworzyć efektywne osadzanie na potrzeby wyszukiwania wektorów, należy uwzględnić ograniczenia rozmiaru danych wejściowych. Zalecamy przestrzeganie wytycznych dotyczących fragmentowania danych przed wygenerowaniem osadzonych. To najlepsze rozwiązanie zapewnia, że osadzanie dokładnie przechwytuje odpowiednie informacje i umożliwia bardziej wydajne wyszukiwanie wektorów.

Co to jest miejsce osadzania?

Osadzanie miejsca jest korpusem zapytań wektorowych. W indeksie wyszukiwania miejsce osadzania jest wszystkimi polami wektorowymi wypełnionymi osadzanymi z tego samego modelu osadzania. Modele uczenia maszynowego tworzą przestrzeń osadzania, mapując poszczególne wyrazy, frazy lub dokumenty (na potrzeby przetwarzania języka naturalnego), obrazy lub inne formy danych w reprezentację składającą się z wektora liczb rzeczywistych reprezentujących współrzędną w przestrzeni wielowymiarowej. W tym miejscu osadzania podobne elementy znajdują się blisko siebie, a różne elementy znajdują się dalej.

Na przykład dokumenty, które mówią o różnych gatunkach psów, zostaną zgrupowane blisko siebie w przestrzeni osadzania. Dokumenty na temat kotów byłyby blisko siebie, ale dalej od klastra psów, jednocześnie będąc w okolicy dla zwierząt. Różne pojęcia, takie jak przetwarzanie w chmurze, byłyby znacznie dalej. W praktyce te miejsca osadzania są abstrakcyjne i nie mają dobrze zdefiniowanych, zrozumiałych dla człowieka znaczenia, ale podstawowa idea pozostaje taka sama.

W wyszukiwaniu wektorowym wyszukiwarka skanuje wektory w przestrzeni osadzania w celu zidentyfikowania wektorów znajdujących się najbliżej wektora zapytania. Ta technika jest nazywana wyszukiwaniem najbliższego sąsiada. Najbliżsi sąsiedzi pomagają oszacować podobieństwo między elementami. Wysoki stopień podobieństwa wektorów wskazuje, że oryginalne dane również były podobne. Aby ułatwić szybkie wyszukiwanie najbliższych sąsiadów, aparat wyszukiwania wykonuje optymalizacje lub stosuje struktury danych i partycjonowanie danych, aby zmniejszyć przestrzeń wyszukiwania. Każdy algorytm wyszukiwania wektorów rozwiązuje problemy najbliższego sąsiada na różne sposoby, ponieważ optymalizują one minimalne opóźnienia, maksymalną przepływność, kompletność i pamięć. Aby obliczyć podobieństwo, metryki podobieństwa zapewniają mechanizm obliczania odległości obliczeniowej.

Usługa Azure AI Search obecnie obsługuje następujące algorytmy:

  • Hierarchiczny nawigowalny mały świat (HNSW): HNSW jest wiodącym algorytmem ANN zoptymalizowanym pod kątem aplikacji o wysokim opóźnieniu, w których dystrybucja danych jest nieznana lub często się zmienia. Organizuje ona punkty danych o wysokim wymiarach w hierarchiczną strukturę grafu, która umożliwia szybkie i skalowalne wyszukiwanie podobieństwa, jednocześnie umożliwiając dostrajanie kompromisu między dokładnością wyszukiwania a kosztami obliczeniowymi. Ponieważ algorytm wymaga, aby wszystkie punkty danych znajdowały się w pamięci w celu uzyskania szybkiego dostępu losowego, ten algorytm zużywa limit przydziału rozmiaru indeksu wektorowego.

  • Wyczerpujące k najbliższych sąsiadów (KNN): oblicza odległości między wektorem zapytania a wszystkimi punktami danych. Jest intensywnie obciążana obliczeniami, więc najlepiej sprawdza się w przypadku mniejszych zestawów danych. Ponieważ algorytm nie wymaga szybkiego losowego dostępu do punktów danych, ten algorytm nie używa limitu przydziału rozmiaru indeksu wektorowego. Jednak ten algorytm zapewnia globalny zestaw najbliższych sąsiadów.

W definicji indeksu można określić jeden lub więcej algorytmów, a następnie dla każdego pola wektora określ algorytm do użycia:

Parametry algorytmu używane do inicjowania indeksu podczas tworzenia indeksu są niezmienne i nie można ich zmienić po utworzeniu indeksu. Można jednak modyfikować parametry wpływające na charakterystykę czasu zapytania (efSearch).

Ponadto pola określające algorytm HNSW obsługują również wyczerpujące wyszukiwanie KNN przy użyciu parametru "exhaustive": trueżądania zapytania . Przeciwieństwo nie jest jednak prawdziwe. Jeśli pole jest indeksowane dla exhaustiveKnn, nie można użyć HNSW w zapytaniu, ponieważ dodatkowe struktury danych, które umożliwiają wydajne wyszukiwanie, nie istnieją.

Przybliżone najbliższe sąsiady

Przybliżone wyszukiwanie najbliższego sąsiada (ANN) to klasa algorytmów do znajdowania dopasowań w przestrzeni wektorowej. Ta klasa algorytmów wykorzystuje różne struktury danych lub metody partycjonowania danych, aby znacznie zmniejszyć przestrzeń wyszukiwania w celu przyspieszenia przetwarzania zapytań.

Algorytmy ANN poświęcają pewną dokładność, ale oferują skalowalne i szybsze pobieranie przybliżonych najbliższych sąsiadów, co sprawia, że idealnie nadają się do równoważenia dokładności przed wydajnością w nowoczesnych aplikacjach pobierania informacji. Parametry algorytmu można dostosować, aby dostosować wymagania dotyczące odwoływania, opóźnienia, pamięci i śladu dysku aplikacji wyszukiwania.

Usługa Azure AI Search używa protokołu HNSW dla algorytmu ANN.

Następne kroki