Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Napiwek
Odwiedź naszą nową galerię przykładów, aby zapoznać się z najnowszymi przykładami bazy danych wektorów i aplikacji RAG Pattern App
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 wektorowa baza danych
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 osadzenia są wykorzystywane w wyszukiwaniu podobieństw, wyszukiwaniu wielomodalnym, silnikach rekomendacji, dużych modelach językowych (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 kontekstowo odpowiednich i dokładnych odpowiedzi na polecenia użytkowników z modeli sztucznej inteligencji
- Pokonaj limity tokenów 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. Embedding to bogata w informacje reprezentacja semantycznego znaczenia fragmentu 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 umożliwia przechowywanie zakodowanych reprezentacji wraz z oryginalnymi danymi, zapewnia spójność danych, skalowalność i wydajność. [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 poprzez pobranie reprezentacji wektorowych (list liczb) danych utworzonych za pomocą modelu uczenia maszynowego przy użyciu API osadzania, takiego jak Azure OpenAI Embeddings lub Hugging Face 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óć]
Wskazówki i inżynieria wskazówek
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 dla modelu LLM
- Zawartość podstawowa: zawiera informacje dla LLM na potrzeby przetwarzania
- Przykłady: pomoc w dostosowywaniu modelu do 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 rozszerzona o pobieranie (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 wektorowe, które udostępnia dane bazowe, takie jak przechowywane w wektorowej bazie 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ć:
- Włącz indeks wektora NoSQL usługi Azure Cosmos DB.
- Skonfiguruj bazę danych i kontener za pomocą zasad wektora kontenera i indeksu wektora.
- Wstawianie danych do bazy danych Azure Cosmos DB for NoSQL i jej kontenera
- Tworzenie wektorów osadzania z właściwości danych przy użyciu usługi Azure OpenAI Embeddings
- Połącz usługę Azure Cosmos DB for NoSQL.
- Tworzenie indeksu wektorowego dla właściwości osadzania
- Tworzenie funkcji do wykonywania wyszukiwania podobieństwa wektorów na podstawie monitu użytkownika
- Udzielanie odpowiedzi na pytania dotyczące danych przy użyciu modelu Azure OpenAI Completions.
Wzorzec RAG, z inżynierią poleceń, służy do zwiększania jakości odpowiedzi, oferując bardziej kontekstowe informacje dla modelu. Funkcja RAG umożliwia modelowi zastosowanie szerszej bazy wiedzy poprzez włączenie odpowiednich źródeł zewnętrznych do procesu generowania, co skutkuje bardziej kompleksowymi i przemyślanymi odpowiedziami. Aby uzyskać więcej informacji na temat „ustalania podstaw” modeli językowych LLM, zobacz ustalanie podstaw modeli językowych LLM. [Wróć]
Poniżej przedstawiono wiele sposobów implementowania RAG na danych przy użyciu naszych zintegrowanych funkcji bazy danych wektorowej:
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:
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 z bazą danych wektorów funkcjami, w której można utworzyć indeks wektorowy oparty na DiskANN, zestawie wysokowydajnych algorytmów indeksowania wektorów opracowanych przez firmę Microsoft Research.
Funkcja DiskANN umożliwia wykonywanie wysoce dokładnych zapytań o niskim opóźnieniu 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, płynne przejście z bezserwerowej do aprowizowanej przepływności (RU), wszystko w ramach jednego magazynu danych.
Linki i przykłady
- Jaka baza danych jest stosowana w 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# — Stwórz własny, kompletny akcelerator 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
Rozwiązania wektorowej bazy danych
Powiązana zawartość
- 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