Wektorowa baza danych
Napiwek
Odwiedź naszą nową galerię przykładów, aby zapoznać się z najnowszymi przykładami bazy danych wektorów i aplikacji RAG Pattern App
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ść. Wysoce wydajna baza danych z elastycznością schematu i zintegrowaną bazą danych wektorów jest szczególnie optymalna dla agentów sztucznej inteligencji.
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.
Pojęcia związane z bazą danych wektorów
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
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ć:
- Rejestrowanie w wersji zapoznawczej indeksu wektorów NoSQL usługi Azure Cosmos DB
- Skonfiguruj bazę danych i kontener za pomocą zasad wektora kontenera i indeksu wektora.
- Wstawianie danych do bazy danych i kontenera usługi Azure Cosmos DB for NoSQL
- Tworzenie osadzania na podstawie właściwości danych przy użyciu osadzania usługi Azure OpenAI
- Połącz usługę Azure Cosmos DB for NoSQL.
- Tworzenie indeksu wektorowego we właściwościach osadzania
- Tworzenie funkcji do wykonywania wyszukiwania podobieństwa wektorów na podstawie monitu użytkownika
- 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 NoSQL
Usługa Azure Cosmos DB for NoSQL jest pierwszą na świecie bezserwerową bazą danych wektorów NoSQL. Przechowuj wektory i dane razem w usłudze Azure Cosmos DB for NoSQL z zintegrowanymi możliwościami bazy danych wektorów, w których można utworzyć indeks wektorowy na podstawie nazwy DiskANN, zestawu algorytmów indeksowania wektorów o wysokiej wydajności opracowanych przez firmę Microsoft Research.
Funkcja DiskANN umożliwia wykonywanie zapytań o bardzo dokładne, małe opóźnienia w dowolnej skali przy jednoczesnym wykorzystaniu wszystkich zalet usługi Azure Cosmos DB for NoSQL, takich jak umowa SLA o wartości 99,999% (z włączoną wysoką dostępnością), replikacja geograficzna, bezproblemowe przejście z bezserwerowej do aprowizowanej przepływności (RU) we wszystkich magazynach danych.
Linki i przykłady
- Jaka jest baza danych za elementem ChatGPT? - Microsoft Mechanics
- Indeksowanie wektorowe w usłudze Azure Cosmos DB dla NoSQL
- Funkcja systemowa VectorDistance — zapytania NoSQL
- Jak skonfigurować możliwości wektorowej bazy danych w usłudze Azure Cosmos DB NoSQL
- Python — samouczek dotyczący notesu
- C# — tworzenie własnego akceleratora kompletnego rozwiązania copilot za pomocą usługi AKS i jądra semantycznego
- C# — tworzenie własnej aplikacji przykładowej copilot i praktycznego laboratorium
- Python — Movie Chatbot
Usługa Azure Cosmos DB 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
- Tworzenie własnego rozwiązania Copilot dla usługi Azure Cosmos DB dla bazy danych MongoDB w języku C# przy użyciu jądra semantycznego
- Samouczek platformy .NET — czatbot przepis
- Wzorzec RAG języka C# — integrowanie usług OpenAI Services z usługą Cosmos
- Wzorzec RAG języka Python — czatbot produktu platformy Azure
- Notes języka Python — integracja bazy danych wektorów za pomocą samouczka LangChain
- Notes języka Python — integracja buforowania LLM za pomocą samouczka LangChain
- Python — integracja z llamaIndex
- Python — integracja pamięci jądra semantycznego
- Notes języka Python — Movie Chatbot
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ład kodu
Następny krok
30-dniowa bezpłatna wersja próbna bez subskrypcji platformy Azure