Heim > Backend-Entwicklung > Python-Tutorial > Beginnen Sie mit der Vektorsuche in Azure Cosmos DB

Beginnen Sie mit der Vektorsuche in Azure Cosmos DB

Susan Sarandon
Freigeben: 2025-01-26 20:15:09
Original
260 Leute haben es durchsucht

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:

  • Ein Azure-Abonnement (oder ein kostenloses Azure-Konto oder die kostenlose Stufe von Azure Cosmos DB für NoSQL).
  • Ein Azure Cosmos DB für NoSQL-Konto.
  • Eine Azure OpenAI Service-Ressource mit dem bereitgestellten text-embedding-ada-002 Einbettungsmodell (zugänglich über das Azure AI Foundry-Portal). Dieses Modell bietet Texteinbettungen.
  • Die notwendige Programmiersprachenumgebung (Maven für Java).

Konfigurieren der Vector-Datenbank in Azure Cosmos DB für NoSQL:

  1. Aktivieren Sie die Funktion: Dies ist ein einmaliger Schritt. Aktivieren Sie explizit die Vektorindizierung und -suche in Azure Cosmos DB.

    Get started with Vector Search in Azure Cosmos DB

  2. Datenbank und Container erstellen: Erstellen Sie eine Datenbank (z. B. movies_db) und einen Container (z. B. movies) mit einem Partitionsschlüssel von /id.

  3. 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).

    Get started with Vector Search in Azure Cosmos DB

    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:

  1. Filminformationen aus der JSON-Datei lesen.
  2. Generieren von Vektoreinbettungen für Filmbeschreibungen mithilfe des Azure OpenAI Service.
  3. Einfügen der vollständigen Daten (Titel, Beschreibung und Einbettungen) in den Azure Cosmos DB-Container.

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

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):

  • Python: cd python; python3 -m venv .venv; source .venv/bin/activate; pip install -r requirements.txt; python load.py
  • TypeScript: cd typescript; npm install; npm run build; npm run load
  • Java: cd java; mvn clean install; java -jar target/cosmosdb-java-vector-search-1.0-SNAPSHOT.jar load
  • .NET: 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.

Get started with Vector Search in Azure Cosmos DB

Vektor-/Ähnlichkeitssuche:

Die Suchkomponente verwendet die Funktion VectorDistance, um ähnliche Filme anhand eines Suchkriteriums (z. B. „Komödie“) zu finden. Der Prozess ist:

  1. Generieren Sie eine Vektoreinbettung für das Suchkriterium.
  2. Verwenden Sie 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>
Nach dem Login kopieren

Sprachspezifische Anweisungen (vorausgesetzt, Umgebungsvariablen sind festgelegt und Daten werden geladen):

Suchanweisungen (gekürzt):

  • Python: python search.py "inspiring" 3
  • TypeScript: npm run search "inspiring" 3
  • Java: java -jar target/cosmosdb-java-vector-search-1.0-SNAPSHOT.jar search "inspiring" 3
  • .NET: 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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage