Wektorowa baza danych

DOTYCZY: Nosql Rdzenie wirtualne bazy danych MongoDB Postgresql

Bazy danych wektorów są używane w wielu domenach i sytuacjach w różnych analitycznych i generujących sztuczną inteligencję, w tym przetwarzaniu języka naturalnego, rozpoznawaniu wideo i obrazów, systemie rekomendacji i wyszukiwaniu, między innymi.

W 2023 r. godny uwagi trend w oprogramowaniu był integracją ulepszeń sztucznej inteligencji, często osiąganych przez włączenie wyspecjalizowanych autonomicznych baz danych wektorów do istniejących stosów technologicznych. W tym artykule wyjaśniono, jakie bazy danych wektorów są i przedstawiono alternatywną architekturę, którą warto rozważyć: użycie zintegrowanej bazy danych wektorowej w bazie danych NoSQL lub relacyjnej bazy danych, której już używasz, zwłaszcza podczas pracy z danymi wielomodalnymi. Takie podejście pozwala nie tylko zmniejszyć koszty, ale także osiągnąć większą spójność danych, skalowalność i wydajność.

Napiwek

Spójność danych, skalowalność i wydajność mają kluczowe znaczenie dla aplikacji intensywnie korzystających z danych, dlatego usługa OpenAI zdecydowała się utworzyć usługę ChatGPT na bazie usługi Azure Cosmos DB. Możesz też skorzystać z zintegrowanej bazy danych wektorów, a także czasów odpowiedzi w milisekundach, automatycznych i błyskawicznych skalowalności oraz gwarantowanej szybkości w dowolnej skali. Zobacz przykłady implementacji i wypróbuj bezpłatnie.

Co to jest baza danych wektorów?

Baza danych wektorów to baza danych przeznaczona do przechowywania wektorów osadzania i zarządzania nimi, które są matematycznymi reprezentacjami danych w przestrzeni wielowymiarowej. W tej przestrzeni każdy wymiar odpowiada funkcji danych, a dziesiątki tysięcy wymiarów może służyć do reprezentowania zaawansowanych danych. Położenie wektora w tym obszarze reprezentuje jego cechy. Wyrazy, frazy lub całe dokumenty oraz obrazy, dźwięk i inne typy danych mogą być wektoryzowane. Te wektorowe osadzania są używane w wyszukiwaniu podobieństwa, wyszukiwania wielomodalnego, aparatach rekomendacji, dużych modelach języków (LLMs) itp.

W wektorowej bazy danych osadzanie są indeksowane i odpytywane za pomocą algorytmów wyszukiwania wektorowego na podstawie ich odległości wektorowej lub podobieństwa. Niezawodny mechanizm jest niezbędny do identyfikowania najbardziej odpowiednich danych. Niektóre dobrze znane algorytmy wyszukiwania wektorów obejmują hierarchiczny mały świat (HNSW), odwrócony plik (IVF), DiskANN itp.

Zintegrowana baza danych wektorów a czysta baza danych wektorów

Istnieją dwa typowe typy implementacji wektorowej bazy danych — czysta wektorowa baza danych i zintegrowana baza danych wektorów w bazie danych NoSQL lub relacyjna baza danych.

Czysta wektorowa baza danych została zaprojektowana do wydajnego przechowywania osadzeń wektorów i zarządzania nimi wraz z niewielką ilością metadanych; jest oddzielona od źródła danych, z którego pochodzą osadzanie.

Baza danych wektorów zintegrowana z wysoce wydajnym bazą danych NoSQL lub relacyjnymi bazami danych zapewnia dodatkowe możliwości. Zintegrowana baza danych wektorów w bazie danych NoSQL lub relacyjnej bazy danych może przechowywać, indeksować i wykonywać zapytania wraz z odpowiednimi oryginalnymi danymi. Takie podejście eliminuje dodatkowy koszt replikowania danych w oddzielnej czystej bazie danych wektorów. Ponadto utrzymywanie wektorowych osadzeń i oryginalnych danych lepiej ułatwia operacje na danych wielomodalnych i zapewnia większą spójność danych, skalę i wydajność.

Przypadki użycia bazy danych wektorów

Bazy danych wektorów są używane w wielu domenach i sytuacjach obejmujących analizy i generowanie sztucznej inteligencji, w tym przetwarzanie języka naturalnego, rozpoznawanie wideo i obrazów, system rekomendacji, wyszukiwanie itp. Na przykład można użyć wektorowej bazy danych do:

  • identyfikowanie podobnych obrazów, dokumentów i piosenek na podstawie ich zawartości, motywów, tonacji i stylów
  • identyfikowanie podobnych produktów na podstawie ich cech, funkcji i grup użytkowników
  • polecanie zawartości, produktów lub usług na podstawie preferencji poszczególnych osób
  • zalecanie zawartości, produktów lub usług na podstawie podobieństw grup użytkowników
  • zidentyfikuj najlepsze możliwe opcje z dużej puli wyborów, aby spełnić złożone wymagania
  • identyfikowanie anomalii danych lub fałszywych działań, które różnią się od dominujących lub normalnych wzorców
  • implementowanie pamięci trwałej dla agentów sztucznej inteligencji

Napiwek

Oprócz typowych przypadków użycia baz danych wektorów nasza zintegrowana baza danych wektorów jest również idealnym rozwiązaniem do buforowania llM na poziomie produkcyjnym dzięki małym opóźnieniu, wysokiej skalowalności i wysokiej dostępności.

Szczególnie popularne jest używanie baz danych wektorów w celu umożliwienia pobierania rozszerzonej generacji (RAG), która wykorzystuje maszyny LLM i niestandardowe dane lub informacje specyficzne dla domeny. Takie podejście umożliwia:

  • Generowanie kontekstowych i dokładnych odpowiedzi na monity użytkownika z modeli sztucznej inteligencji
  • Pokonanie limitów tokenów usługi LLMs
  • Obniżanie kosztów dzięki częstego dostosowywania zaktualizowanych danych

Ten proces obejmuje wyodrębnianie odpowiednich informacji z niestandardowego źródła danych i integrowanie go z żądaniem modelu za pośrednictwem inżynierii monitów. Przed wysłaniem żądania do usługi LLM dane wejściowe/zapytanie/żądanie użytkownika są również przekształcane w osadzanie, a techniki wyszukiwania wektorowego są stosowane w celu zlokalizowania najbardziej podobnych osadzeń w bazie danych. Ta technika umożliwia identyfikację najbardziej odpowiednich rekordów danych w bazie danych. Te pobrane rekordy są następnie dostarczane jako dane wejściowe do żądania LLM przy użyciu monitu inżynieryjnego.

Osadzanie

Osadzanie to specjalny format reprezentacji danych, z którego mogą łatwo korzystać modele i algorytmy uczenia maszynowego. Osadzanie to gęsta reprezentacja semantycznego znaczenia tekstu. Każde osadzanie jest wektorem liczb zmiennoprzecinkowych, tak aby odległość między dwoma osadzaniami w przestrzeni wektorowej została skorelowana z podobieństwem semantycznym między dwoma danymi wejściowymi w oryginalnym formacie. Jeśli na przykład dwa teksty są podobne, ich reprezentacje wektorowe również powinny być podobne. Rozszerzenie wektorowej bazy danych, które pozwala przechowywać osadzanie przy użyciu oryginalnych danych, zapewnia spójność, skalę i wydajność danych. [Wróć]

Wyszukiwanie wektorowe to metoda, która ułatwia znajdowanie podobnych elementów na podstawie ich cech danych, a nie dokładnych dopasowań w polu właściwości. Ta technika jest przydatna w aplikacjach, takich jak wyszukiwanie podobnego tekstu, znajdowanie powiązanych obrazów, tworzenie zaleceń, a nawet wykrywanie anomalii. Działa to przez pobranie reprezentacji wektorowych (list liczb) danych utworzonych przy użyciu modelu uczenia maszynowego przy użyciu interfejsu API osadzania, takiego jak osadzanie w usłudze Azure OpenAI Embeddings lub Przytulanie twarzy na platformie Azure. Następnie mierzy odległość między wektorami danych a wektorem zapytania. Wektory danych, które znajdują się najbliżej wektora zapytania, to te, które są najbardziej podobne semantycznie. Użycie funkcji wyszukiwania wektorów natywnych zapewnia wydajny sposób przechowywania, indeksowania i wyszukiwania danych wektorów o wysokim wymiarach bezpośrednio wraz z innymi danymi aplikacji. Takie podejście eliminuje konieczność migracji danych do bardziej kosztownych alternatywnych baz danych wektorów i zapewnia bezproblemową integrację aplikacji opartych na sztucznej inteligencji. [Wróć]

Monity i monity inżynieryjne

Monit odnosi się do określonego tekstu lub informacji, które mogą służyć jako instrukcja do usługi LLM lub jako dane kontekstowe, na których może opierać się funkcja LLM. Monit może przyjmować różne formy, takie jak pytanie, instrukcja, a nawet fragment kodu. Monity mogą służyć jako:

  • Instrukcje zawierają dyrektywy do usługi LLM
  • Zawartość podstawowa: zawiera informacje dotyczące usługi LLM na potrzeby przetwarzania
  • Przykłady: pomoc w warunku modelu dla określonego zadania lub procesu
  • Wskazówki: kierowanie danych wyjściowych llM we właściwym kierunku
  • Zawartość pomocnicza: reprezentuje informacje uzupełniające, których usługa LLM może używać do generowania danych wyjściowych

Proces tworzenia dobrych monitów dotyczących scenariusza jest nazywany inżynierią monitu. Aby uzyskać więcej informacji na temat monitów i najlepszych rozwiązań dotyczących inżynierii monitów, zobacz Techniki inżynieryjne monitu o usługę Azure OpenAI Service. [Wróć]

Tokeny

Tokeny są małymi fragmentami tekstu generowanymi przez podzielenie tekstu wejściowego na mniejsze segmenty. Te segmenty mogą być wyrazami lub grupami znaków, różniąc się długością od pojedynczego znaku do całego wyrazu. Na przykład słowo hamburger zostanie podzielone na tokeny, takie jak szynka, bur i ger, podczas gdy krótkie i typowe słowo, takie jak gruszka, byłoby uważane za pojedynczy token. Maszyny LLM, takie jak ChatGPT, GPT-3.5 lub GPT-4, dzielą wyrazy na tokeny do przetwarzania. [Wróć]

Generowanie rozszerzonego pobierania

Generacja rozszerzonej pobierania (RAG) to architektura, która rozszerza możliwości llM, takich jak ChatGPT, GPT-3.5 lub GPT-4, dodając system pobierania informacji, taki jak wyszukiwanie wektorów, które udostępnia dane uziemione, takie jak przechowywane w wektorowej bazy danych. Takie podejście umożliwia usłudze LLM generowanie kontekstowo odpowiednich i dokładnych odpowiedzi na podstawie niestandardowych danych pochodzących z wektoryzowanych dokumentów, obrazów, audio, wideo itp.

Prosty wzorzec RAG korzystający z usługi Azure Cosmos DB dla NoSQL może być:

  1. Wstawianie danych do bazy danych i kolekcji NoSQL w usłudze Azure Cosmos DB
  2. Tworzenie osadzania na podstawie właściwości danych przy użyciu osadzania usługi Azure OpenAI
  3. Łączenie usługi Azure Cosmos DB for NoSQL z usługą Azure Cognitive Search (na potrzeby indeksowania/wyszukiwania wektorów)
  4. Tworzenie indeksu wektorowego we właściwościach osadzania
  5. Tworzenie funkcji do wykonywania wyszukiwania podobieństwa wektorów na podstawie monitu użytkownika
  6. Wykonywanie odpowiedzi na pytania dotyczące danych przy użyciu modelu uzupełniania usługi Azure OpenAI

Wzorzec RAG, z monitem inżynieryjnym, służy do zwiększania jakości odpowiedzi, oferując bardziej kontekstowe informacje do modelu. Funkcja RAG umożliwia modelowi zastosowanie szerszego baza wiedzy poprzez włączenie odpowiednich źródeł zewnętrznych do procesu generowania, co skutkuje bardziej kompleksowymi i świadomymi odpowiedziami. Aby uzyskać więcej informacji na temat "uziemienia" LLMs, zobacz uziemienia LLMs. [Wróć]

Poniżej przedstawiono wiele sposobów implementowania programu RAG na danych przy użyciu naszych zintegrowanych funkcji bazy danych wektorów:

Jak zaimplementować zintegrowane funkcje bazy danych wektorów

Zintegrowane funkcje bazy danych wektorów można zaimplementować dla następujących interfejsów API usługi Azure Cosmos DB:

Interfejs API dla bazy danych MongoDB

Użyj natywnie zintegrowanej bazy danych wektorów w usłudze Azure Cosmos DB dla bazy danych MongoDB (architektura rdzeni wirtualnych), która oferuje wydajny sposób przechowywania, indeksowania i wyszukiwania danych wektorów o wysokim wymiarach bezpośrednio obok innych danych aplikacji. Takie podejście eliminuje konieczność migracji danych do bardziej kosztownych alternatywnych baz danych wektorów i zapewnia bezproblemową integrację aplikacji opartych na sztucznej inteligencji.

Przykłady kodu

Interfejs API dla bazy danych PostgreSQL

Użyj natywnie zintegrowanej bazy danych wektorowej w usłudze Azure Cosmos DB for PostgreSQL, która oferuje wydajny sposób przechowywania, indeksowania i wyszukiwania danych wektorów o wysokim wymiarach bezpośrednio wraz z innymi danymi aplikacji. Takie podejście eliminuje konieczność migracji danych do bardziej kosztownych alternatywnych baz danych wektorów i zapewnia bezproblemową integrację aplikacji opartych na sztucznej inteligencji.

Przykłady kodu

Interfejs API NoSQL

Uwaga

W przypadku naszego interfejsu API NoSQL natywna integracja najnowocześniejszego algorytmu indeksowania wektorów zostanie ogłoszona podczas kompilacji w maju 2024 r. Bądź na bieżąco.

Natywnie zintegrowana baza danych wektorów w interfejsie API NoSQL jest opracowywana. W międzyczasie można zaimplementować wzorce RAG za pomocą usług Azure Cosmos DB for NoSQL i Azure AI Search. Takie podejście umożliwia zaawansowaną integrację danych znajdujących się w interfejsie API NoSQL z aplikacjami zorientowanymi na sztuczną inteligencję.

Przykłady kodu

Następny krok

30-dniowa bezpłatna wersja próbna bez subskrypcji platformy Azure

90-dniowa bezpłatna wersja próbna i do 6000 USD środków na przepływność dzięki usłudze Azure AI Advantage

Więcej rozwiązań wektorowej bazy danych

Diagram usług indeksowania wektorowego.