Co to są osadzanie wektorów i wyszukiwanie wektorów w usłudze Azure Cache for Redis
Wyszukiwanie podobieństwa wektorów (VSS) stało się popularną technologią inteligentnych aplikacji opartych na sztucznej inteligencji. Usługa Azure Cache for Redis może służyć jako baza danych wektorów, łącząc je z modelami takimi jak Azure OpenAI for Retrieval-Augmented Generative AI i scenariusze analizy. W tym artykule przedstawiono ogólne wprowadzenie do koncepcji osadzania wektorów, wyszukiwania podobieństwa wektorów oraz sposobu użycia usługi Redis jako wektorowej bazy danych obsługujących inteligentne aplikacje.
Aby zapoznać się z samouczkami i przykładowymi aplikacjami dotyczącymi używania usługi Azure Cache for Redis i usługi Azure OpenAI do wykonywania wyszukiwania podobieństwa wektorów, zobacz następujące artykuły:
- Samouczek: przeprowadzanie wyszukiwania podobieństwa wektorów na potrzeby osadzania w usłudze Azure OpenAI przy użyciu usługi Azure Cache for Redis z rozwiązaniem LangChain
- Przykład: używanie bazy danych Redis jako wektorowej bazy danych w aplikacji Chatbot z jądrem semantycznym platformy .NET
- Przykład: używanie usługi Redis jako pamięci podręcznej semantycznej w galerii obrazów obsługiwanej przez platformę Dall-E za pomocą pakietu Redis OM dla platformy .NET
Zakres dostępności
Funkcje wyszukiwania wektorowego w usłudze Redis wymagają usługi Redis Stack, w szczególności modułu RediSearch . Ta funkcja jest dostępna tylko w warstwach Enterprise usługi Azure Cache for Redis.
Ta tabela zawiera informacje dotyczące dostępności wyszukiwania wektorów w różnych warstwach.
Warstwa | Podstawowa/Standardowa | Premium | Przedsiębiorstwa | Enterprise Flash |
---|---|---|---|---|
Dostępny | Nie | Nie. | Tak | Tak (wersja zapoznawcza) |
Co to są osadzanie wektorów?
Pojęcie
Osadzanie wektorów to podstawowa koncepcja uczenia maszynowego i przetwarzania języka naturalnego, która umożliwia reprezentację danych, takich jak słowa, dokumenty lub obrazy jako wektory liczbowe w przestrzeni wektorów o wysokim wymiarze. Podstawową ideą osadzania wektorów jest przechwycenie podstawowych relacji i semantyki danych przez mapowanie ich na punkty w tej przestrzeni wektorowej. Oznacza to przekonwertowanie tekstu lub obrazów na sekwencję liczb reprezentujących dane, a następnie porównanie różnych sekwencji liczb. Dzięki temu złożone dane mogą być manipulowane i analizowane matematycznie, co ułatwia wykonywanie zadań, takich jak porównanie podobieństwa, rekomendacja i klasyfikacja.
Każdy model uczenia maszynowego klasyfikuje dane i tworzy wektor w inny sposób. Ponadto zazwyczaj nie można określić dokładnie, co oznacza semantyka każdego wymiaru wektora. Jednak ponieważ model jest spójny między każdym blokiem danych wejściowych, podobnymi słowami, dokumentami lub obrazami mają również podobne wektory. Na przykład wyrazy basketball
i baseball
wektory osadzania są znacznie bliżej siebie niż wyraz podobny rainforest
do .
Porównanie wektorów
Wektory można porównać przy użyciu różnych metryk. Najpopularniejszym sposobem porównywania wektorów jest użycie podobieństwa cosinusu, który mierzy cosinus kąta między dwoma wektorami w przestrzeni wielowymiarowej. Im bliżej wektorów, tym mniejszy kąt. Inne typowe metryki odległości obejmują odległość euklidesową i produkt wewnętrzny.
Generowanie osadzania
Wiele modeli uczenia maszynowego obsługuje interfejsy API osadzania. Aby zapoznać się z przykładem tworzenia osadzania wektorów przy użyciu usługi Azure OpenAI Service, zobacz Dowiedz się, jak generować osadzanie za pomocą usługi Azure OpenAI.
Co to jest baza danych wektorów?
Wektorowa baza danych to baza danych, która może przechowywać wektory, zarządzać nimi, pobierać i porównywać. Bazy danych wektorów muszą być w stanie wydajnie przechowywać wektor o wysokim wymiarach i pobierać je z minimalnym opóźnieniem i wysoką przepływnością. Magazyny danych nierelacyjnych są najczęściej używane jako wektorowe bazy danych, chociaż można używać relacyjnych baz danych, takich jak PostgreSQL, na przykład z rozszerzeniem pgvector .
Metoda indeksowania i wyszukiwania
Wektorowe bazy danych muszą indeksować dane w celu szybkiego wyszukiwania i pobierania. Ponadto baza danych wektorów powinna obsługiwać wbudowane zapytania wyszukiwania dla uproszczonych środowisk programistycznych.
Istnieje kilka metod indeksowania, takich jak:
- FLAT — indeks siłowy
- HNSW — wydajne i niezawodne przybliżone wyszukiwanie najbliższych sąsiadów przy użyciu hierarchicznych grafów nawigowalnego małego świata
Istnieje kilka typowych metod wyszukiwania, w tym:
- K-Najbliższe sąsiady (KNN) — wyczerpująca metoda zapewniająca największą precyzję, ale z wyższym kosztem obliczeniowym.
- Przybliżone najbliższe sąsiady (ANN) - bardziej wydajne dzięki precyzji handlu w celu zwiększenia szybkości i niższego obciążenia związanego z przetwarzaniem.
Możliwości wyszukiwania
Na koniec bazy danych wektorów wykonują wyszukiwania wektorów przy użyciu wybranej metody porównania wektorów, aby zwrócić najbardziej podobne wektory. Niektóre wektorowe bazy danych mogą również wykonywać wyszukiwania hybrydowe , najpierw zawężając wyniki na podstawie cech lub metadanych przechowywanych w bazie danych przed przeprowadzeniem wyszukiwania wektorowego. Jest to sposób na zwiększenie skuteczności i dostosowywania wyszukiwania wektorów. Na przykład wyszukiwanie wektorów może być ograniczone tylko do wektorów z określonym tagiem w bazie danych lub wektorów z danymi geolokalizacji w określonym regionie.
Scenariusze klucza wyszukiwania wektorowego
Wyszukiwanie podobieństwa wektorowego może być używane w wielu aplikacjach. Oto niektóre typowe przypadki użycia:
- Semantyczne pytania i pytania Utwórz czatbota, który może odpowiedzieć na pytania dotyczące własnych danych. Na przykład czatbot, który może odpowiedzieć na pytania pracowników dotyczące ich opieki zdrowotnej. Setki stron dokumentacji gęstej opieki zdrowotnej można podzielić na fragmenty, przekonwertować na wektory osadzania i wyszukać na podstawie podobieństwa wektorów. Wynikowe dokumenty można następnie podsumować dla pracowników przy użyciu innego dużego modelu językowego (LLM). Semantyczny przykład pytań i pytań
- Pobieranie dokumentu. Aby zapewnić bogatsze środowisko wyszukiwania dokumentów, w którym brakuje tradycyjnego wyszukiwania opartego na słowach kluczowych, użyj bardziej semantycznego zrozumienia tekstu dostarczonego przez program LLMs. Przykład pobierania dokumentu
- Zalecenie dotyczące produktu. Znajdź podobne produkty lub usługi, które mają być zalecane na podstawie poprzednich działań użytkowników, takich jak historia wyszukiwania lub poprzednie zakupy. Przykład rekomendacji produktu
- Wyszukiwanie wizualne. Wyszukaj produkty podobne do obrazu zrobionego przez użytkownika lub obrazu innego produktu. Przykład wyszukiwania wizualnego
- Buforowanie semantyczne. Zmniejsz koszty i opóźnienia usługi LLM, buforując ukończenia usługi LLM. Zapytania LLM są porównywane przy użyciu podobieństwa wektorów. Jeśli nowe zapytanie jest wystarczająco podobne do wcześniej buforowanego zapytania, zwracane jest buforowane zapytanie. Przykład semantycznego buforowania przy użyciu biblioteki LangChain
- Pamięć konwersacji LLM. Utrwalanie historii konwersacji za pomocą usługi LLM jako osadzania w wektorowej bazy danych. Aplikacja może użyć wyszukiwania wektorowego, aby ściągnąć odpowiednią historię lub "wspomnienia" do odpowiedzi z usługi LLM. Przykład pamięci konwersacji LLM
Dlaczego warto wybrać usługę Azure Cache for Redis do przechowywania i wyszukiwania wektorów?
Usługa Azure Cache for Redis może służyć skutecznie jako wektorowa baza danych do przechowywania wektorów osadzania i przeprowadzania wyszukiwania podobieństwa wektorów. Obsługa magazynu wektorów i wyszukiwania była dostępna w wielu kluczowych strukturach uczenia maszynowego, takich jak:
Te struktury oferują rozbudowane integracje z usługą Redis. Na przykład integracja usługi Redis LangChain automatycznie generuje schemat indeksu dla metadanych przekazywanych podczas korzystania z usługi Redis jako magazynu wektorów. Ułatwia to filtrowanie wyników na podstawie metadanych.
Usługa Redis oferuje szeroką gamę funkcji wyszukiwania za pośrednictwem modułu RediSearch, który jest dostępny w warstwie Enterprise usługi Azure Cache for Redis. Są to:
- Wiele metryk odległości, w tym
Euclidean
,Cosine
iInternal Product
. - Obsługa obu metod indeksowania KNN (przy użyciu
FLAT
) i ANN (przy użyciuHNSW
metody indeksowania). - Magazyn wektorowy w strukturach danych skrótu lub JSON
- Najważniejsze zapytania języka K
- Zapytania zakresu wektorów (czyli znajdowanie wszystkich elementów w określonej odległości wektora)
- Wyszukiwanie hybrydowe z zaawansowanymi funkcjami zapytań, takimi jak:
- Filtrowanie geoprzestrzenne
- Filtry liczbowe i tekstowe
- Dopasowanie prefiksu i rozmyte
- Dopasowywanie fonetyczne
- Zapytania logiczne
Ponadto usługa Redis jest często ekonomicznym wyborem, ponieważ jest już tak często używana do buforowania lub aplikacji ze sklepu sesji. W tych scenariuszach może ściągać podwójne obowiązki, obsługując typową rolę buforowania, jednocześnie obsługując aplikacje wyszukiwania wektorów.
Jakie są moje inne opcje przechowywania i wyszukiwania wektorów?
Istnieje wiele innych rozwiązań na platformie Azure na potrzeby magazynu wektorowego i wyszukiwania. Inne rozwiązania to:
- Azure AI Search
- Usługa Azure Cosmos DB korzystająca z interfejsu API rdzeni wirtualnych bazy danych MongoDB
- Azure Database for PostgreSQL — serwer elastyczny przy użyciu
pgvector
Powiązana zawartość
Najlepszym sposobem rozpoczęcia pracy z osadzaniem i wyszukiwaniem wektorów jest samodzielne wypróbowanie.