Wybieranie usługi platformy Azure na potrzeby wyszukiwania wektorowego
Wyszukiwanie wektorowe to metoda 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. Wektory są znaczącym postępem nad tradycyjnymi metodami wyszukiwania opartymi na słowach kluczowych. Oferują one szybsze, dokładniejsze wyniki, rozumiejąc relacje semantyczne w informacjach.
Platforma Azure oferuje wiele sposobów przechowywania i wyszukiwania wektoryzowanych danych. Ten artykuł pomaga architektom i deweloperom, którzy muszą zrozumieć i wybrać odpowiednią usługę platformy Azure do wyszukiwania wektorowego dla swojej aplikacji.
W tym artykule porównaliśmy następujące usługi na podstawie ich możliwości wyszukiwania wektorowego:
- Azure AI Search
- Azure Cosmos DB for NoSQL
- Usługa Azure Cosmos DB dla bazy danych MongoDB (rdzeń wirtualny)
- Azure Cosmos DB for PostgreSQL
- Azure Database for PostgreSQL
- Azure SQL Database
Architekci i deweloperzy powinni porównać dostępne usługi z perspektywy wymagań systemowych w temacie Wybieranie usługi kandydata i macierzy możliwości.
Wybieranie usługi kandydata
Ta sekcja ułatwia wybranie najbardziej prawdopodobnych usług dla Twoich potrzeb. Aby zawęzić opcje, zacznij od rozważenia wymagań systemowych.
Podstawowe wymagania
Podczas decydowania, czy używać tradycyjnego rozwiązania bazy danych, czy usługa wyszukiwania sztucznej inteligencji platformy Azure, należy wziąć pod uwagę wymagania i to, czy można wykonywać wyszukiwanie wektorów na żywo lub w czasie rzeczywistym na danych. Tradycyjna relacyjna baza danych lub NoSQL jest najlepszym rozwiązaniem dla danego scenariusza, jeśli często zmieniasz wartości w polach wektoryzowanych, a zmiany muszą być przeszukiwalne w czasie rzeczywistym lub niemal w czasie rzeczywistym. Podobnie użycie istniejącej bazy danych może być najlepszym rozwiązaniem, które pozwala spełnić cele dotyczące wydajności. Z drugiej strony, jeśli obciążenie nie wymaga wyszukiwania wektorów w czasie rzeczywistym lub niemal w czasie rzeczywistym i akceptujesz zarządzanie indeksem wektorów, wyszukiwanie sztucznej inteligencji może być atrakcyjnym wyborem.
W przypadku wybrania tradycyjnego rozwiązania bazy danych określony typ usługi bazy danych, którego zdecydujesz się używać, zależy głównie od zestawu umiejętności twojego zespołu i baz danych, które obecnie działają. Jeśli używasz już określonego typu bazy danych, na przykład bazy danych MongoDB, użycie tego samego typu bazy danych może być najprostszym rozwiązaniem dla danego scenariusza. Jak pokazano w sekcji Macierz możliwości, każda usługa bazy danych ma pewne unikatowe możliwości i ograniczenia dotyczące wyszukiwania wektorów. Przejrzyj te informacje, aby upewnić się, że preferowany typ bazy danych obsługuje wymagane funkcje.
Jeśli problem z kosztami jest czynnikiem wpływającym, utrzymanie istniejącego projektu jest prawdopodobnie najlepszym rozwiązaniem dla danego scenariusza, ponieważ wprowadzenie nowych usług lub innych wystąpień usługi bazy danych może zwiększyć nowe koszty netto i złożoność. Korzystanie z bieżących baz danych na potrzeby wyszukiwania wektorów prawdopodobnie wpływa na koszty mniejsze niż użycie dedykowanej usługi.
Jeśli zdecydujesz się używać tradycyjnej bazy danych zamiast wyszukiwania sztucznej inteligencji, niektóre funkcje wyszukiwania zaawansowanego nie są domyślnie dostępne. Jeśli na przykład chcesz przeprowadzić ponowne korbowanie lub wyszukiwanie hybrydowe, włącz tę funkcję za pomocą języka Transact-SQL (T-SQL) lub innego kodowania.
Macierz możliwości
Tabele w tej sekcji zawierają podsumowanie kluczowych różnic w możliwościach.
Funkcje podstawowe
Natywna obsługa typów danych wektorów, przybliżone indeksy wektorów najbliższego sąsiada (ANN), limity wymiarów wektorów, wiele pól wektorów i wiele indeksów wektorów są czasami różne między usługami. Wymagania dotyczące obciążenia mogą wymagać niektórych z tych określonych funkcji. Zapoznaj się z podstawowymi funkcjami wektorów każdej usługi platformy Azure, jak pokazano w poniższej tabeli.
Możliwość | Azure Cosmos DB for PostgreSQL | Azure Cosmos DB for NoSQL | Usługa Azure Cosmos DB dla bazy danych MongoDB (rdzeń wirtualny) | Azure Database for PostgreSQL (Flex) | Wyszukiwanie AI platformy Azure | Azure SQL Database |
---|---|---|---|---|---|---|
Wbudowane wyszukiwanie wektorów | Tak 1 | Tak | Tak 2 | Tak 1 | Tak 3 | Tak 4 |
Typ danych wektora | Tak | Tak | Tak | Tak | Tak | Nie. |
Limity wymiarów 6 | 16 000 7 lub 2000 | 5058 lub 4096 | 2000 | 16 000 7 lub 2000 | 3072 | 1998 (wersja zapoznawcza)5 |
Wiele pól wektorów | Tak | Tak | Nie | Tak | Tak | Tak |
Wiele indeksów wektorów | Tak | Tak | Nie | Tak | Tak | Tak |
- Element "pgvector" obsługuje wyszukiwanie wektorów, czyli rozszerzenie bazy danych PostgreSQL.
- Używanie wyszukiwania wektorowego podczas osadzania w usłudze Azure Cosmos DB dla rdzeni wirtualnych bazy danych MongoDB
- Wektory w usłudze Azure AI Search
- Wyszukiwanie wektorów natywnych jest dostępne w wersji zapoznawczej wczesnego wdrażania usługi Azure SQL Database
- Wektory mogą być przechowywane w kolumnie LUB zmiennej VARBINARY(8000).
- Osadzanie modeli z openAI, 1536 dla osadzania tekstu-ada-002 i osadzania tekstu-3-small i 3072 dla osadzania tekstu-3-large. W przypadku modeli osadzania wielomodalnego usługi Azure AI Vision 1024 dla obrazu i tekstu.
- Wektory mogą mieć maksymalnie 16 000 wymiarów. Jednak indeks przy użyciu funkcji "IVFFlat" i "HNSW" obsługuje wektory o wymiarach do 2000.
- Wektory indeksowane z typem indeksu płaskiego mogą mieć co najwyżej 505 wymiarów. Wektory indeksowane przy użyciu kwantyzowanego typu indeksuFlat lub DiskANN mogą mieć co najwyżej 4096 wymiarów.
Metody wyszukiwania
Obciążenia często muszą łączyć wyszukiwanie wektorowe z wyszukiwaniem pełnotekstowym, a nawet wyszukiwaniem hybrydowym (wyszukiwanie pełnotekstowe lub wyszukiwanie semantyczne oraz wyszukiwanie wektorowe). Połączenie wyszukiwania hybrydowego i ponownego korektowania zapewnia wysoką dokładność obciążeń. Możesz ręcznie zaimplementować wyszukiwanie hybrydowe i ponowne korektowanie przy użyciu własnego kodu. Możesz też rozważyć, w jaki sposób magazyn wektorów obsługuje to wymaganie dotyczące obciążenia.
Metoda wyszukiwania | Azure Cosmos DB for PostgreSQL | Azure Cosmos DB for NoSQL | Usługa Azure Cosmos DB dla bazy danych MongoDB (rdzeń wirtualny) | Azure Database for PostgreSQL (Flex) | Wyszukiwanie AI platformy Azure | Azure SQL Database |
---|---|---|---|---|---|---|
Wyszukiwanie pełnotekstowe | Tak 1 | Nie. | Tak 2 | Tak 1 | Tak 3 | Tak 4 |
Wyszukiwanie hybrydowe | Tak 5 | Nie | Nie. | Tak 5 | Tak 6 | Tak 7 |
Wbudowane ponowne korbowanie | Nie | Nie. | Nie. | Nie. | Tak 8 | Nie. |
- Wyszukiwanie pełnotekstowe bazy danych PostgreSQL
- Wyszukiwanie i wykonywanie zapytań za pomocą indeksów tekstowych w usłudze Azure Cosmos DB dla rdzeni wirtualnych bazy danych MongoDB
- Wprowadzenie do wyszukiwania pełnotekstowego
- Dane wektorowe w programie SQL Server
- Nie podano jako funkcji pierwszej klasy, ale podano przykładowe kody .
- Wyszukiwanie hybrydowe (kombinacja wyszukiwania pełnotekstowego, wyszukiwania wektorowego i klasyfikacji semantycznej) jest udostępniana jako funkcja pierwszej klasy.
- Przykład wyszukiwania hybrydowego dla usługi Azure SQL Database i programu SQL Server.
- Reranking o nazwie Semantic Ranking to funkcja pierwszej klasy do ponownego korbowania wyniku wyszukiwania pełnotekstowego i/lub wyszukiwania wektorowego.
Algorytmy indeksowania danych wektorowych
Indeksowanie danych wektorowych to możliwość wydajnego przechowywania i pobierania wektorów. Ta funkcja jest ważna, ponieważ indeksowanie wpływa na szybkość i dokładność wyszukiwań podobieństw i zapytań najbliższych sąsiadów dotyczących źródeł danych.
Indeksy są zwykle oparte na wyczerpującym k najbliższym sąsiadie (Ek-NN) lub algorytmie ANN. Ek-NN wykonuje wyczerpujące wyszukiwanie wszystkich punktów danych jeden po jednym i zwraca dokładne k najbliższych sąsiadów. Ek-NN działa w milisekundach z niewielką ilością danych, ale może spowodować opóźnienie dużych ilości danych.
DiskANN, HNSW i IVFFlat to indeksy algorytmów ANN. Wybranie odpowiedniej strategii indeksowania wymaga dokładnego rozważenia różnych czynników, takich jak charakter zestawu danych, określone wymagania dotyczące zapytań i dostępnych zasobów. 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. IvFFlat jest skuteczny w środowiskach, w których zasoby sprzętowe są ograniczone lub woluminy zapytań nie są wysokie.
Dowiedz się, jakie rodzaje indeksowania danych wektorowych znajdują się w poniższej tabeli.
Podejście indeksowania | Azure Cosmos DB for PostgreSQL | Azure Cosmos DB for NoSQL | Usługa Azure Cosmos DB dla bazy danych MongoDB (rdzeń wirtualny) | Azure Database for PostgreSQL (Flex) | Wyszukiwanie AI platformy Azure | Azure SQL Database |
---|---|---|---|---|---|---|
DiskANN | Nie. | Tak | Nie. | Nie. | Nie. | Nie. |
Wyczerpujący najbliższy sąsiad (EKNN) | Tak | Tak | Tak | Tak | Tak | Tak |
Hierarchiczny nawigowalny mały świat (HNSW) | Tak | Nie. | Tak (wersja zapoznawcza)1 | Tak | Tak | Nie. |
IvFflat | Tak | Nie | Tak | Tak | Nie. | Nie. |
Inne | - | płaskie, kwantyzowaneFlat2 | Ograniczenie pola wektorowego 3 Ograniczenie indeksu wektora 4 |
- | - | Biblioteki zewnętrzne są dostępne5 |
- Azure Cosmos DB for MongoDB — omówienie wyszukiwania wektorowego
- Zasady indeksowania wektorów
- Dla kontenera jest dostępne tylko jedno pole wektorowe.
- Na kontener jest dostępny tylko jeden indeks wektorowy.
- Indeks można utworzyć przy użyciu bibliotek zewnętrznych, takich jak Scikit Learn lub FAISS
Możliwości obliczania podobieństwa i odległości
Istnieją metody obliczania odległości cosinusowej, produktu kropkowego i euklidy na potrzeby wyszukiwania wektorów. Te metody służą do obliczania podobieństwa między dwoma wektorami lub odległości między dwoma wektorami.
Wstępna analiza danych zapewnia korzyści zarówno z metryk, jak i odległości euklidesowych, które umożliwiają wyodrębnianie różnych szczegółowych informacji na temat struktury danych, natomiast klasyfikacja tekstu zazwyczaj działa lepiej w odległościach euklidesowych. Pobieranie najbardziej podobnych tekstów do danego tekstu zwykle działa lepiej z podobieństwem cosinusu.
Osadzanie usługi Azure OpenAI Polega na podobieństwie cosinus do obliczania podobieństwa między dokumentami a zapytaniem.
Wbudowane obliczenie porównania wektorów | Azure Cosmos DB for PostgreSQL | Azure Cosmos DB for NoSQL | Usługa Azure Cosmos DB dla bazy danych MongoDB (rdzeń wirtualny) | Azure Database for PostgreSQL (Flex) | Wyszukiwanie AI platformy Azure | Azure SQL Database |
---|---|---|---|---|---|---|
Podobieństwo cosinusowe | Tak | Tak1 | Tak | Tak | Tak | Tak 2 |
Odległość euklidesowa (odległość L2) | Tak | Tak1 | Tak | Tak | Tak | Tak 2 |
Produkt kropkowy | Tak | Tak1 | Tak | Tak | Tak | Tak 2 |
- Obliczanie odległości wektorowej dla usługi Azure Cosmos DB dla noSQL.
- Przykłady obliczeń odległości dla bazy danych Azure SQL Database i programu SQL Server.
Integracja z usługą Azure OpenAI i innymi składnikami
Podczas implementowania wyszukiwania wektorów można również rozważyć połączenie z innymi składnikami firmy Microsoft. Na przykład usługa Azure OpenAI Service ułatwia tworzenie wektorów dla danych i zapytań wejściowych dotyczących wyszukiwania podobieństwa wektorów.
Możliwość | Azure Cosmos DB for PostgreSQL | Azure Cosmos DB for NoSQL | Usługa Azure Cosmos DB dla bazy danych MongoDB (rdzeń wirtualny) | Azure Database for PostgreSQL (Flex) | Wyszukiwanie AI platformy Azure | Azure SQL Database |
---|---|---|---|---|---|---|
Azure OpenAI Service — dodawanie własnych danych | Nie | Nie. | Tak 1 | Nie. | Tak 2 | Nie. |
Osadzanie wektorów za pomocą usługi Azure OpenAI | Nie | Nie. | Nie. | Tak 3 | Tak 4 | Tak 5 |
Integracja z przepływem monitów | Nie | Nie. | Nie. | Nie. | Tak 6 | Nie. |
Integracja z jądrem semantycznym | Tak 7 | Tak8 | Tak9 | Tak 7 | Tak 10 | Tak 11 |
- Usługa Azure Cosmos DB dla bazy danych MongoDB (rdzeń wirtualny) jest obsługiwana jako źródło danych dla usługi Azure OpenAI w danych.
- Usługa Azure AI Search jest obsługiwana jako źródło danych dla usługi Azure OpenAI w danych.
- Dostępne jest rozszerzenie usługi Azure AI (wersja zapoznawcza).
- Usługa Azure AI Search umożliwia wektoryzowanie fragmentowanego tekstu.
- Możesz utworzyć procedurę składowaną dla wdrożenia modelu osadzania.
- Obsługiwane jako wektorowa baza danych w narzędziu wyszukiwania wektorów bazy danych.
- Obsługiwane jako łącznik pamięci i łącznik wektorowej bazy danych (C#).
- Obsługiwane jako łącznik pamięci i łącznik wektorowej bazy danych (C#, Python).
- Obsługiwane jako łącznik wektorowej bazy danych (C#, Python).
- Obsługiwane jako łącznik pamięci i łącznik wektorowej bazy danych (C#, Python).
- Obsługiwane jako łącznik pamięci.
Współautorzy
Ten artykuł jest obsługiwany przez firmę Microsoft. Pierwotnie został napisany przez następujących współautorów.
Autorzy zabezpieczeń:
- Keita Onabuta | Starszy inżynier klienta
- Gary Lee | Starszy inżynier klienta
Inni współautorzy:
- Kruti Mehta | Inżynier klienta
Aby wyświetlić niepubalne profile serwisu LinkedIn, zaloguj się do serwisu LinkedIn.
Następny krok
Implementowanie wyszukiwania wiedzy za pomocą usługi Azure AI Search. Ta ścieżka szkoleniowa zawiera informacje na temat korzystania z usługi Azure AI Search.
Powiązane zasoby
- Omówienie modeli magazynu danych
- Opcje technologii dla rozwiązań platformy Azure
- Ogłoszenie obsługi protokołu EAP dla wektorów w usłudze Azure SQL Database
- Natywna obsługa wektorów w usługach Azure SQL i SQL Server
- Wektorowa baza danych w usłudze Azure Cosmos DB
- Wprowadzenie do możliwości wektorowej bazy danych w usłudze Azure Cosmos DB for NoSQL
- Wyszukiwanie wektorowe w usłudze Azure Cosmos DB dla NoSQL
- Przykłady usługi Azure Vector Database