Wybieranie usługi platformy Azure na potrzeby wyszukiwania wektorowego

Wyszukiwanie wektorowe to sposób znajdowania informacji przechowywanych w bazie danych w kształcie wektorów. Wektory to grupy liczb reprezentujące cechy lub cechy multimediów, takie jak tekst lub obrazy. Przechwytują relacje semantyczne w informacjach, co umożliwia wyszukiwanie podobieństw poza dokładnym dopasowaniem słów kluczowych.

Platforma Azure oferuje wiele sposobów przechowywania i wyszukiwania wektoryzowanych danych. Ten artykuł pomaga wybrać odpowiednią usługę wyszukiwania wektorów Azure dla aplikacji.

W tym artykule porównaliśmy następujące usługi na podstawie ich możliwości wyszukiwania wektorowego:

Aby porównać wymagania systemowe poszczególnych usług, zobacz Wybór usługi kandydującej i macierz możliwości.

Wybierz usługę kandydata

Ta sekcja pomaga wybrać najlepszą usługę lub usługi dla Twoich potrzeb. Aby zawęzić opcje, zacznij od rozważenia wymagań systemowych.

Podstawowe wymagania

Schemat blokowy, który pomaga wybrać odpowiednią usługę wyszukiwania wektorów Azure.

Schemat blokowy, który pomaga wybrać odpowiednią usługę wyszukiwania wektorów Azure. Schemat blokowy pyta, czy często wstawiasz, aktualizujesz lub usuwasz dane wektorowe i potrzebujesz wyników wyszukiwania w czasie rzeczywistym lub niemal w czasie rzeczywistym. Jeśli odpowiesz „nie”, zostaną zadane dwa dodatkowe pytania dotyczące zaawansowanego wyszukiwania hybrydowego wykorzystującego semantyczny reranking, indeksowania na dużą skalę treści nieustrukturyzowanych, optymalizacji kosztów oraz używanej obecnie usługi bazy danych. Jeśli optymalizacja kosztów jest priorytetem lub jeśli usługa bazy danych obsługuje wyszukiwanie wektorowe, schemat blokowy przeprowadzi Cię do korzystania z istniejącej usługi bazy danych. Jeśli optymalizacja kosztów nie jest priorytetem lub jeśli obecnie nie obsługujesz usługi bazy danych obsługującej wyszukiwanie wektorowe, schemat blokowy przeprowadzi Cię do Wyszukiwanie AI platformy Azure. Jeśli odpowiesz twierdząco na pierwsze pytanie, schemat blokowy pyta, czy potrzebujesz wyszukiwania wektorowego w pamięci o ultraniskich opóźnieniach, czy już używasz usługi Azure Managed Redis. Jeśli odpowiesz tak, schemat blokowy przeprowadzi Cię do użycia lub kontynuowania korzystania z usługi Azure Managed Redis. Jeśli nie odpowiadasz, schemat blokowy pyta, czy wolisz użyć systemu zarządzania relacyjnymi bazami danych (RDBMS). Jeśli odpowiesz twierdząco, na schemacie blokowym pojawia się pytanie, czy liczba wymiarów embeddingów przekracza 1 998. Jeśli odpowiesz tak, schemat blokowy pyta, czy potrzebujesz fragmentowania poziomego dla bardzo dużych zestawów danych wektorowych. Jeśli odpowiesz tak, schemat blokowy przeprowadzi Cię do Azure Database for PostgreSQL z klastrami elastycznymi. Jeśli nie odpowiesz, schemat blokowy przeprowadzi Cię do Azure Database for PostgreSQL. Jeśli Twoje embeddingi nie przekraczają 1 998 wymiarów, schemat blokowy pyta, czy wolisz Azure SQL Database czy Azure Database for PostgreSQL, i kieruje Cię do jednej z tych opcji w zależności od odpowiedzi. Jeśli nie chcesz używać systemu RDBMS, na schemacie blokowym pojawia się pytanie, czy chcesz przechowywać dane operacyjne i wyszukiwanie wektorowe w tym samym repozytorium, z wyszukiwaniem hybrydowym i wbudowanym rerankingiem. Jeśli odpowiesz tak, schemat blokowy przeprowadzi Cię do Azure Cosmos DB dla NoSQL. Jeśli nie odpowiadasz, schemat blokowy pyta, czy potrzebujesz wymiarów wektorów do 16 000 lub interfejsów API zgodnych z bazą danych MongoDB. Jeśli odpowiesz tak, schemat blokowy przeprowadzi Cię do Azure documentDB. Jeśli nie odpowiesz, schemat blokowy przeprowadzi Cię do Azure Cosmos DB dla NoSQL.

Aby zdecydować, czy używać tradycyjnego rozwiązania bazy danych, czy wyszukiwania sztucznej inteligencji, weź pod uwagę wymagania i czy można wykonywać wyszukiwania wektorów na żywo lub w czasie rzeczywistym na danych. Jeśli często zmieniasz wartości w polach wektoryzowanych i jeśli te zmiany muszą być przeszukiwalne w czasie rzeczywistym lub niemal w czasie rzeczywistym, tradycyjna relacyjna lub NoSQL baza danych jest najlepszym rozwiązaniem dla danego scenariusza. Podobnie istniejąca baza danych może być najlepszym sposobem spełnienia celu wydajności. Jeśli jednak obciążenie nie wymaga wyszukiwania wektorów w czasie rzeczywistym lub niemal w czasie rzeczywistym i możesz zarządzać indeksem wektorów, możesz użyć funkcji wyszukiwania sztucznej inteligencji.

Jeśli wybierzesz tradycyjne rozwiązanie bazy danych, wybierz usługę bazy danych na podstawie zestawu umiejętności twojego zespołu i istniejących baz danych. Jeśli używasz już usługi bazy danych, takiej jak Azure Cosmos DB na potrzeby NoSQL, usługa ta może być najprostszym rozwiązaniem dla danego scenariusza.

  • Azure Cosmos DB for NoSQL jest dobrym rozwiązaniem, jeśli chcesz przechowywać dane operacyjne i wykonywać wyszukiwanie wektorowe w tym samym systemie oraz jeśli potrzebujesz punktacji pełnotekstowej, wyszukiwania hybrydowego lub wbudowanego ponownego rankingowania.

  • Wyszukiwanie sztucznej inteligencji może być dobrym wyborem, jeśli obciążenie wymaga najwyższej klasy wyszukiwania hybrydowego i klasyfikacji semantycznej.

  • Azure Database for PostgreSQL obsługuje skalowanie w poziomie przy użyciu klastrów elastycznych — zarządzanej wersji rozszerzenia Citus typu open source, które obsługuje partycjonowanie horyzontalne. Ta funkcja dystrybuuje dane wektorowe między wieloma węzłami, co może być przydatne w przypadku dużych zestawów danych wektorowych.

  • Rozważ usługę Azure Managed Redis, gdy potrzebujesz ultraniskich opóźnień i wektorowego wyszukiwania w pamięci lub gdy Redis wdrożono już na potrzeby buforowania albo zarządzania sesjami.

Każda usługa bazy danych ma unikatowe możliwości i ograniczenia dotyczące wyszukiwania wektorów. Sprawdź, czy typ bazy danych ma wymagane funkcje.

Nowe usługi i dodatkowe wystąpienia bazy danych mogą zwiększyć koszty i złożoność. Aby zmniejszyć nakład pracy, możesz nadal używać istniejącego projektu. Wyszukiwanie wektorowe w bieżących bazach danych może być bardziej ekonomiczne niż dedykowana usługa wyszukiwania wektorów. Jednak niektóre funkcje wyszukiwania zaawansowanego nie są domyślnie dostępne w tradycyjnych bazach danych. Jeśli na przykład potrzebujesz ponownego rankingowania lub wyszukiwania hybrydowego, możesz zaimplementować te funkcje za pomocą kodu, takiego jak Transact-SQL (T-SQL).

Macierz możliwości

Tabele w tej sekcji podsumowują możliwości usługi Azure Vector Search. Porównaj dostępne usługi z wymaganiami. Niektóre usługi są lepiej dopasowane do konkretnych scenariuszy, dlatego należy wziąć pod uwagę kompromisy przedstawione w każdej tabeli.

Jeśli pracujesz w Microsoft Fabric, możesz użyć Real-Time Intelligence na potrzeby wyszukiwania podobieństwa wektorów (VSS) przy użyciu magazynu zdarzeń jako wektorowej bazy danych. Aby uzyskać więcej informacji, zobacz dokumentację Fabric.

Funkcje podstawowe

Natywna obsługa wektorowych typów danych, przybliżonych indeksów wektorowych najbliższych sąsiadów (ANN), limitów wymiarów wektorów, wielu pól wektorowych i wielu indeksów wektorowych różni się w zależności od usługi. Obciążenie może wymagać co najmniej jednej z tych funkcji.

W poniższej tabeli przedstawiono możliwości wektorów każdej usługi Azure.

Zdolność Azure Cosmos DB for NoSQL Azure DocumentDB Azure Database for PostgreSQL Zarządzany Redis w Azure Wyszukiwanie AI Baza danych SQL
Wbudowane wyszukiwanie wektorów Tak Tak1 Tak2 Tak3 Tak4 Tak
Typ danych wektora Tak Tak Tak Tak Tak Tak5
Limity wymiarów6 5057 lub 4096 16 0008, 4000 lub 2000 w zależności od konfiguracji 16 0009 lub 2000 32,768 409610 1998 11
Wiele pól wektorów Tak Nie. Tak Tak Tak Tak
Wiele indeksów wektorów Tak Nie. Tak Tak Tak Tak
  1. Azure DocumentDB obsługuje wyszukiwanie wektorowe na embeddingach.
  2. pgvector, rozszerzenie bazy danych PostgreSQL, obsługuje wyszukiwanie wektorów. Rozszerzenie pg_diskann umożliwia indeksowanie wektorowe oparte na technologii DiskANN na potrzeby wydajnego wyszukiwania ANN na dużą skalę.
  3. Moduł RediSearch w usłudze Azure Managed Redis udostępnia wyszukiwanie wektorów.
  4. Wyszukiwanie sztucznej inteligencji obsługuje wektory.
  5. Usługa SQL Database obsługuje typ danych wektorowych.
  6. Modele embeddingów OpenAI mają 1 536 wymiarów dla text-embedding-ada-002 i text-embedding-3-small oraz 3 072 wymiary dla text-embedding-3-large. Wielomodalne modele osadzania Azure Vision mają 1024 wymiary zarówno dla obrazów, jak i tekstu.
  7. Wektory indeksowane przy użyciu typu indeksu płaskiego mogą mieć maksymalnie 505 wymiarów. Wektory indeksowane przy użyciu kwantyzowanego typu indeksuFlat lub DiskANN mogą mieć maksymalnie 4096 wymiarów.
  8. Można indeksować wektory o wymiarowości do 16 000 za pomocą DiskANN i kwantyzacji iloczynowej. Hierarchical Navigable Small World (HNSW) lub IVFFlat z półprecyzją obsługują indeksy wektorowe o wymiarach do 4 000. Bez kompresji domyślny maksymalny wymiar wektora indeksowania wynosi 2000. Aby uzyskać więcej informacji, zobacz wymiary wektorów dla Azure DocumentDB.
  9. Wektory mogą mieć maksymalnie 16 000 wymiarów. Jednak indeksowanie przy użyciu algorytmów IVFFlat i HNSW obsługuje wektory z maksymalnie 2000 wymiarami.
  10. Wyszukiwanie AI obsługuje przycinanie wymiarów oparte na Matryoshka Representation Learning. Modele osadzania tekstu–3 mogą zmniejszyć wymiary wektorów. Można na przykład użyć wymiarów 256 lub 512.
  11. Usługa SQL Database obsługuje natywny typ danych wektorowych z maksymalnie 1998 wymiarami.

Metody wyszukiwania

Obciążenia często muszą łączyć wyszukiwanie wektorów z wyszukiwaniem pełnotekstowym lub wyszukiwaniem hybrydowym. Wyszukiwanie hybrydowe to wyszukiwanie pełnotekstowe lub wyszukiwanie semantyczne połączone z wyszukiwaniem wektorowym. Po połączeniu wyszukiwanie hybrydowe i ponowne rangowanie zapewniają wysoką dokładność w przypadku obciążeń roboczych. Możesz ręcznie zaimplementować wyszukiwanie hybrydowe i ponowne klasyfikowanie przy użyciu własnego kodu lub rozważyć, jak Twój magazyn wektorów wspiera tę potrzebę obciążenia.

Metoda wyszukiwania Azure Cosmos DB for NoSQL Azure DocumentDB Azure Database for PostgreSQL Zarządzany Redis w Azure Wyszukiwanie AI Baza danych SQL
Wyszukiwanie pełnotekstowe Tak12 Tak2 Tak3 Tak4 Tak Tak5
Wyszukiwanie hybrydowe Tak6 Tak7 Tak8 Tak9 Tak10 Tak11
Wbudowane ponowne rangowanie Tak Nie. Nie. Nie. Tak1 Nie.
  1. Rangowanie semantyczne ponownie szereguje wyniki wyszukiwania pełnotekstowego i wyszukiwania wektorowego.
  2. Usługa Azure DocumentDB obsługuje wyszukiwanie i wykonywanie zapytań przy użyciu indeksów tekstowych.
  3. Baza danych PostgreSQL obsługuje wyszukiwanie pełnotekstowe.
  4. usługa Azure Managed Redis obsługuje wyszukiwanie pełnotekstowe przy użyciu modułu RediSearch, w tym tokenizacji tekstu, stemmingu i klasyfikacji.
  5. SQL Server obsługuje wyszukiwanie pełnotekstowe.
  6. Azure Cosmos DB dla NoSQL obsługuje wyszukiwanie hybrydowe.
  7. Azure DocumentDB natywnie obsługuje wyszukiwanie hybrydowe, które łączy wyszukiwanie pełnotekstowe i wektorowe z wzajemnym łączeniem rangi.
  8. Wyszukiwanie hybrydowe nie jest wbudowane, ale dostępny jest przykładowy kod.
  9. usługa Azure Managed Redis obsługuje wyszukiwanie hybrydowe przy użyciu usługi VSS połączonej z filtrowaniem atrybutów w polach tekstowych, liczbowych, tagowych i geograficznych.
  10. Wyszukiwanie hybrydowe, które łączy wyszukiwanie pełnotekstowe, wyszukiwanie wektorów i klasyfikację semantyczną, jest funkcją wyszukiwania sztucznej inteligencji.
  11. Dostępny jest przykład wyszukiwania hybrydowego dla SQL Database i SQL Server.
  12. Azure Cosmos DB dla NoSQL obsługuje wyszukiwanie pełnotekstowe i ocenianie pełnotekstowe.

Algorytmy indeksowania danych wektorowych

Indeksowanie danych wektorowych to możliwość wydajnego przechowywania i pobierania wektorów. Indeksowanie wpływa na szybkość i dokładność wyszukiwań podobieństw i zapytań najbliższych sąsiadów w źródłach danych.

Indeksy zazwyczaj używają wyczerpującego algorytmu k najbliższego sąsiada (Ek-NN) lub algorytmu ANN. Ek-NN wykonuje wyczerpujące wyszukiwanie wszystkich punktów danych i zwraca dokładne k najbliższych sąsiadów. Podczas wyszukiwania niewielkiej ilości danych Ek-NN działa w milisekundach. W przypadku większych zestawów danych może wystąpić opóźnienie.

DiskANN, HNSW i IVFFlat to indeksy algorytmów ANN. Wybranie odpowiedniej strategii indeksowania wymaga starannego rozważenia różnych czynników, takich jak charakter zestawu danych, określone wymagania zapytań i dostępne zasoby. Funkcja DiskANN może dostosować się do zmian w zestawie danych i zapisać zasoby obliczeniowe. Usługa HNSW wyróżnia się w systemach wymagających szybkich odpowiedzi na zapytania i może dostosować się do zmian w zestawie danych. Narzędzie IVFFlat jest skuteczne w środowiskach, w których zasoby sprzętowe są ograniczone lub woluminy zapytań nie są wysokie.

W poniższej tabeli przedstawiono dostępne typy indeksowania danych wektorowych.

Podejście indeksowania Azure Cosmos DB for NoSQL Azure DocumentDB Azure Database for PostgreSQL Zarządzany Redis w Azure Wyszukiwanie AI Baza danych SQL
DiskANN Tak Tak1 Tak2 Nie. Nie. Tak3
Ek-NN Tak Tak Tak Tak4 Tak Tak
HNSW Nie. Tak1 Tak Tak5 Tak Nie.
IVFFlat Nie. Tak Tak Nie. Nie. Nie.
Inne Płaskie, kwantyzowaneflat6 Ograniczenie pola wektorowego,7
ograniczenie indeksu wektorowego8
- - Kwantyzacja skalarna, kwantyzacja binarna9 -
  1. Aby uzyskać więcej informacji, zobacz Zintegrowany magazyn wektorów w usłudze Azure DocumentDB.
  2. Aby uzyskać więcej informacji, zobacz DiskANN for Azure Database for PostgreSQL.
  3. Indeksowanie wektorów DiskANN natywne jest w wersji zapoznawczej. Aby uzyskać więcej informacji, zobacz Wyszukiwanie wektorowe i indeksy wektorowe w aparacie bazy danych SQL.
  4. Usługa Azure Managed Redis obsługuje wyszukiwanie eK‑NN przy użyciu typu indeksu FLAT do wyszukiwania metodą brute force.
  5. usługa Azure Managed Redis obsługuje usługę HNSW na potrzeby wyszukiwania ANN. Aby uzyskać więcej informacji, zobacz VSS.
  6. Aby uzyskać więcej informacji, zobacz Zasady indeksowania wektorów.
  7. Indeksowanie dotyczy tylko jednego wektora na ścieżkę.
  8. Można utworzyć tylko jeden indeks na ścieżkę wektora.
  9. Funkcja wyszukiwania sztucznej inteligencji obsługuje kwantyzację skalarną i binarną w celu zmniejszenia rozmiaru wektora w indeksie wyszukiwania.

Możliwości obliczania podobieństwa i odległości

Wyszukiwanie wektorowe obsługuje obliczanie podobieństwa cosinusowego, iloczynu skalarnego i odległości euklidesowej. Użyj tych metod, aby obliczyć podobieństwo lub odległość między dwoma wektorami.

Wstępna analiza danych używa metryk i odległości euklidesowych, dzięki czemu można wyodrębnić różne szczegółowe informacje o strukturze danych. Klasyfikacja tekstu zazwyczaj działa lepiej pod odległościami euklidesowymi. Pobieranie tekstów najbardziej podobnych do danego zwykle działa lepiej przy użyciu podobieństwa cosinusowego.

Osadzenia w Azure OpenAI opierają się na podobieństwie cosinusa do obliczania podobieństwa między dokumentami a zapytaniem.

Wbudowane obliczenie porównania wektorów Azure Cosmos DB for NoSQL Azure DocumentDB Azure Database for PostgreSQL Zarządzany Redis w Azure Wyszukiwanie AI Baza danych SQL
Podobieństwo cosinusowe Tak1 Tak Tak Tak2 Tak Tak3
Odległość euklidesowa Tak1 Tak Tak Tak2 Tak Tak3
Produkt kropkowy Tak1 Tak Tak Tak2 Tak Tak3
  1. Aby uzyskać więcej informacji, zobacz obliczenia odległości wektorów dla Azure Cosmos DB dla NoSQL.
  2. usługa Azure Managed Redis obsługuje podobieństwo cosinusowe, odległość euklidesa i wewnętrzne metryki odległości produktu. Aby uzyskać więcej informacji, zobacz VSS.
  3. Aby uzyskać więcej informacji, zobacz przykłady obliczeń odległości dla usługi SQL Database i SQL Server.

Integracja z usługą Azure OpenAI i innymi składnikami

Wyszukiwanie wektorów można połączyć z innymi składnikami Microsoft. Na przykład Azure OpenAI ułatwia tworzenie wektorów dla danych i zapytań wejściowych dla usługi VSS.

Zdolność Azure Cosmos DB for NoSQL Azure DocumentDB Azure Database for PostgreSQL Zarządzany Redis w Azure Wyszukiwanie AI Baza danych SQL
Integracja z Foundry IQ Nie. Nie. Nie. Nie. Tak Nie.
Integracja z usługą agenta Foundry Tak1 Nie. Tak2 Tak2 Tak3 Tak2
Zintegrowane generowanie osadzeń w usłudze Azure OpenAI Nie. Nie. Tak4 Nie. Tak5 Tak6
Integracja z Semantic Kernel Tak7 Tak8 Tak9 Tak10 Tak11 Tak12
  1. Integracja z usługą agenta Foundry jest realizowana za pośrednictwem magazynu stanów agenta.
  2. Integracja z usługą Foundry Agent Service odbywa się za pośrednictwem danych, wyszukiwania wektorowego lub dostępu do narzędzi.
  3. Integracja usługi Foundry Agent Service jest zapewniana za pośrednictwem pobierania wiedzy i wyszukiwania wektorowego.
  4. Dostępne jest rozszerzenie azure AI.
  5. Wyszukiwanie AI obejmuje umiejętność, która przekształca fragmenty tekstu w wektory.
  6. Możesz utworzyć procedurę składowaną na potrzeby wdrożenia modelu embeddingu.
  7. Ta usługa jest dostępna jako konektor pamięci oraz konektor do wektorowej bazy danych. Aby uzyskać więcej informacji, zobacz dokumentację języka C# i dokumentację Python.
  8. Ta usługa działa jako konektor bazy danych wektorowych. Aby uzyskać więcej informacji, zobacz dokumentację języka C# i dokumentację Python.
  9. Ta usługa jest obsługiwana w roli konektora pamięci i konektora bazy danych wektorowych. Aby uzyskać więcej informacji, zobacz dokumentację języka C#.
  10. Ta usługa działa jako konektor bazy danych wektorowych. Aby uzyskać więcej informacji, zobacz Using the Redis connector (Korzystanie z łącznika usługi Redis).
  11. Ta usługa jest wspierana jako konektor pamięci i konektor do wektorowej bazy danych. Aby uzyskać więcej informacji, zobacz dokumentację języka C# i dokumentację Python.
  12. Ta usługa jest wspierana jako konektor pamięci.

Współautorzy

Firma Microsoft utrzymuje ten artykuł. Następujący współautorzy napisali ten artykuł.

Główni autorzy

Inny współautor:

Aby wyświetlić niepubliczne profile serwisu LinkedIn, zaloguj się do serwisu LinkedIn.

Dalsze kroki