Dieses Tutorial zeigt, wie Sie mithilfe eines einfachen Filmdatensatzes schnell die Vektorsuche in Azure Cosmos DB für NoSQL implementieren. Die Anwendung ist in Python, TypeScript, .NET und Java verfügbar und bietet Schritt-für-Schritt-Anleitungen für die Einrichtung, das Laden von Daten und Ähnlichkeitssuchabfragen.
Vektordatenbanken zeichnen sich durch die Speicherung und Verwaltung von Vektoreinbettungen aus – hochdimensionale mathematische Darstellungen von Daten. Jede Dimension spiegelt ein Datenmerkmal wider, dessen Anzahl möglicherweise in die Zehntausende geht. Die Position eines Vektors in diesem Raum gibt seine Eigenschaften an. Diese Technik vektorisiert verschiedene Datentypen, darunter Wörter, Phrasen, Dokumente, Bilder und Audio, und ermöglicht so Anwendungen wie Ähnlichkeitssuche, multimodale Suche, Empfehlungsmaschinen und große Sprachmodelle (LLMs).
Voraussetzungen:
text-embedding-ada-002
Einbettungsmodell (zugänglich über das Azure AI Foundry-Portal). Dieses Modell bietet Texteinbettungen.Konfigurieren der Vector-Datenbank in Azure Cosmos DB für NoSQL:
Aktivieren Sie die Funktion: Dies ist ein einmaliger Schritt. Aktivieren Sie explizit die Vektorindizierung und -suche in Azure Cosmos DB.
Datenbank und Container erstellen: Erstellen Sie eine Datenbank (z. B. movies_db
) und einen Container (z. B. movies
) mit einem Partitionsschlüssel von /id
.
Richtlinien erstellen: Konfigurieren Sie eine Vektoreinbettungsrichtlinie und eine Indizierungsrichtlinie für den Container. Verwenden Sie für dieses Beispiel die unten gezeigten Einstellungen (hier wird die manuelle Konfiguration über das Azure-Portal verwendet, obwohl auch programmgesteuerte Methoden verfügbar sind).
Hinweis zum Indextyp: Das Beispiel verwendet den Indextyp diskANN
mit einer Dimension von 1536, der dem Modell text-embedding-ada-002
entspricht. Die Änderung des Indextyps ist zwar anpassbar, erfordert jedoch eine Anpassung des Einbettungsmodells an die neue Dimension.
Laden von Daten in Azure Cosmos DB:
Eine Beispieldatei movies.json
stellt Filmdaten bereit. Der Prozess umfasst:
Legen Sie die folgenden Umgebungsvariablen fest, bevor Sie fortfahren:
<code class="language-bash">export COSMOS_DB_CONNECTION_STRING="" export DATABASE_NAME="" export CONTAINER_NAME="" export AZURE_OPENAI_ENDPOINT="" export AZURE_OPENAI_KEY="" export AZURE_OPENAI_VERSION="2024-10-21" export EMBEDDINGS_MODEL="text-embedding-ada-002"</code>
Klonen Sie das Repository:
<code class="language-bash">git clone https://github.com/abhirockzz/cosmosdb-vector-search-python-typescript-java-dotnet cd cosmosdb-vector-search-python-typescript-java-dotnet</code>
Sprachspezifische Anweisungen zum Laden von Daten finden Sie unten. Jede Methode verwendet die oben definierten Umgebungsvariablen. Bei erfolgreicher Ausführung werden Meldungen ausgegeben, die auf das Einfügen von Daten in Cosmos DB hinweisen.
Anweisungen zum Laden von Daten (gekürzt):
cd python; python3 -m venv .venv; source .venv/bin/activate; pip install -r requirements.txt; python load.py
cd typescript; npm install; npm run build; npm run load
cd java; mvn clean install; java -jar target/cosmosdb-java-vector-search-1.0-SNAPSHOT.jar load
cd dotnet; dotnet restore; dotnet run load
Daten in Azure Cosmos DB überprüfen:
Bestätigen Sie das Einfügen der Daten mithilfe des Azure-Portals oder einer Visual Studio Code-Erweiterung.
Vektor-/Ähnlichkeitssuche:
Die Suchkomponente verwendet die Funktion VectorDistance
, um ähnliche Filme anhand eines Suchkriteriums (z. B. „Komödie“) zu finden. Der Prozess ist:
VectorDistance
, um es mit vorhandenen Einbettungen zu vergleichen.Die Abfrage:
<code class="language-sql">SELECT TOP @num_results c.id, c.description, VectorDistance(c.embeddings, @embedding) AS similarityScore FROM c ORDER BY VectorDistance(c.embeddings, @embedding)</code>
Sprachspezifische Anweisungen (vorausgesetzt, Umgebungsvariablen sind festgelegt und Daten werden geladen):
Suchanweisungen (gekürzt):
python search.py "inspiring" 3
npm run search "inspiring" 3
java -jar target/cosmosdb-java-vector-search-1.0-SNAPSHOT.jar search "inspiring" 3
dotnet run search "inspiring" 3
Abschlussbemerkungen:
Experimentieren Sie mit verschiedenen Vektorindextypen (flat
, quantizedFlat
), Distanzmetriken (Kosinus, Euklidisch, Skalarprodukt) und Einbettungsmodellen (text-embedding-3-large
, text-embedding-3-small
). Azure Cosmos DB für MongoDB vCore unterstützt auch die Vektorsuche.
Das obige ist der detaillierte Inhalt vonBeginnen Sie mit der Vektorsuche in Azure Cosmos DB. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!