Freigeben über


.NET Aspire Milvus Datenbankintegration

umfasst:Hosting-Integration und Client Integration

Milvus ist ein Open Source-Vektordatenbanksystem, das Vektordaten effizient speichert, indiziert und durchsucht. Es wird häufig in Maschinellem Lernen, künstlicher Intelligenz und Data Science-Anwendungen verwendet.

Vektordaten codieren Informationen als mathematische Vektoren, die Arrays von Zahlen oder Koordinaten sind. Maschinelles Lernen und KI-Systeme verwenden häufig Vektoren, um unstrukturierte Objekte wie Bilder, Text, Audio oder Video darzustellen. Jede Dimension im Vektor beschreibt ein bestimmtes Merkmal des Objekts. Durch den Vergleich können Systeme Cluster von Objekten klassifizieren, suchen und identifizieren.

In diesem Artikel erfahren Sie, wie Sie die .NET AspireMilvus Datenbankintegration verwenden. Mit der .NET AspireMilvus Datenbankintegration können Sie eine Verbindung zu vorhandenen Milvus Datenbanken herstellen oder neue Instanzen mit dem milvusdb/milvus Container-Imageerstellen.

Hosting-Integration

Das Milvus-Datenbankhosting modelliert die server als den MilvusServerResource-Typ und die Datenbank als den MilvusDatabaseResource-Typ. Um auf diese Typen und APIs zuzugreifen, fügen Sie das NuGet-Paket 📦Aspire.Hosting.Milvus im App-Host Projekt hinzu.

dotnet add package Aspire.Hosting.Milvus

Weitere Informationen finden Sie unter dotnet add package oder Verwalten von Paketabhängigkeiten in .NET-Anwendungen.

Füge Milvusserver und Datenbankressourcen hinzu

Rufen Sie in Ihrem App-Hostprojekt AddMilvus auf, um einen Milvus Ressourcen-Generator hinzuzufügen und zurückzugeben. Verketten Sie einen Aufruf des zurückgegebenen Ressourcen-Generators an AddDatabase, um eine Milvus Datenbankressource hinzuzufügen.

var builder = DistributedApplication.CreateBuilder(args);

var milvus = builder.AddMilvus("milvus")
                    .WithLifetime(ContainerLifetime.Persistent);

var milvusdb = milvus.AddDatabase("milvusdb");

builder.AddProject<Projects.ExampleProject>()
       .WithReference(milvusdb)
       .WaitFor(milvusdb);

// After adding all resources, run the app...

Anmerkung

Der Milvus Container kann langsam gestartet werden, daher ist es am besten, eine persistente Lebensdauer zu verwenden, um unnötige Neustarts zu vermeiden. Weitere Informationen finden Sie unter Container-Ressourcenlebensdauer.

Wenn .NET.NET Aspire dem App-Host ein Containerimage hinzufügt, wie im vorherigen Beispiel mit dem milvusdb/milvus-Image gezeigt, wird eine neue Milvus Instanz auf dem lokalen Computer erstellt. Ein Verweis auf den Milvus Ressourcen-Generator (die milvus Variable) wird verwendet, um eine Datenbank hinzuzufügen. Die Datenbank wird als milvusdb benannt und dann zu ExampleProjecthinzugefügt.

Die WithReference-Methode konfiguriert eine Verbindung im ExampleProject namens milvusdb.

Trinkgeld

Wenn Sie lieber eine Verbindung mit einem vorhandenen Milvusserverherstellen möchten, rufen Sie stattdessen AddConnectionString auf. Weitere Informationen finden Sie unter Referenzieren vorhandener Ressourcen.

Umgang mit Anmeldeinformationen und Übergeben anderer Parameter für die Milvus-Ressource

Die Milvus-Ressource enthält Standardanmeldeinformationen mit einem username von root und dem Kennwort Milvus. Milvus unterstützt konfigurationsbasierte Standardwörter mithilfe der Umgebungsvariablen COMMON_SECURITY_DEFAULTROOTPASSWORD. Um das Standardkennwort im Container zu ändern, übergeben Sie beim Aufrufen der apiKey Hosting-API einen AddMilvus Parameter:

var apiKey = builder.AddParameter("apiKey", secret: true);

var milvus = builder.AddMilvus("milvus", apiKey);

var myService = builder.AddProject<Projects.ExampleProject>()
                       .WithReference(milvus);

Der vorangehende Code ruft einen Parameter ab, der an die AddMilvus-API übergeben werden soll, und weist diesen intern der COMMON_SECURITY_DEFAULTROOTPASSWORD-Umgebungsvariable des Milvus-Containers zu. Der apiKey-Parameter wird in der Regel als -benutzergeheimnisangegeben:

{
  "Parameters": {
    "apiKey": "Non-default-P@ssw0rd"
  }
}

Weitere Informationen finden Sie unter Externe Parameter.

Hinzufügen einer Milvus Ressource mit einem Datenvolumen

Rufen Sie die WithDataVolume-Methode für die Milvus-Ressource auf, um der Milvus-Dienstressource ein Datenvolume hinzuzufügen:

var builder = DistributedApplication.CreateBuilder(args);

var milvus = builder.AddMilvus("milvus")
                    .WithDataVolume();

var milvusdb = milvus.AddDatabase("milvusdb");

builder.AddProject<Projects.ExampleProject>()
       .WithReference(milvusdb)
       .WaitFor(milvusdb);

// After adding all resources, run the app...

Das Datenvolume wird verwendet, um die Milvus Daten außerhalb des Lebenszyklus des Containers zu speichern. Das Datenvolumen wird am Pfad /var/lib/milvus im Container SQL Server bereitgestellt, und wenn kein Parameter name angegeben wird, wird der Name zufällig generiert. Weitere Informationen zu Datenvolumes und Details dazu, warum sie gegenüber Bind-Mountsbevorzugt werden, finden Sie in der -Docker-Dokumentation: Volumes.

Eine Milvus-Ressource mit einer Data-Bind-Einbindung hinzufügen

Rufen Sie die WithDataBindMount-Methode auf, um der Milvus-Ressource eine Datenbindung hinzuzufügen:

var builder = DistributedApplication.CreateBuilder(args);

var milvus = builder.AddMilvus("milvus")
                    .WithDataBindMount(source: @"C:\Milvus\Data");

var milvusdb = milvus.AddDatabase("milvusdb");

builder.AddProject<Projects.ExampleProject>()
       .WithReference(milvusdb)
       .WaitFor(milvusdb);

// After adding all resources, run the app...

Wichtig

Daten--Bind-Mounts haben im Vergleich zu -Volumeseine eingeschränkte Funktionalität. Volumes bieten bessere Leistung, Portabilität und Sicherheit, was sie für Produktionsumgebungen besser geeignet macht. Bind-Mounts ermöglichen jedoch direkten Zugriff auf und Änderungen von Dateien auf dem Hostsystem, was ideal für die Entwicklung und das Testen ist, wenn Echtzeitänderungen erforderlich sind.

Dateneinbindungen basieren auf dem Dateisystem des Hostcomputers, um die Milvus Daten über Containerneustarts hinweg zu speichern. Der Datenbindemount wird im Milvus-Container unter dem Pfad C:\Milvus\Data auf Windows (oder /Milvus/Data auf Unix) auf dem Hostcomputer eingehängt. Weitere Informationen zu Datenbindungs-Mounts finden Sie in der Docker Dokumentation: Bind-Mounts.

Erstellen einer Attu-Ressource

Attu ist ein grafisches Benutzeroberflächen- (GUI) und Verwaltungstool, das für die Interaktion mit Milvus und seinen Datenbanken entwickelt wurde. Es enthält umfangreiche Visualisierungsfeatures, mit denen Sie Ihre Vektordaten untersuchen und verstehen können.

Wenn Sie Attu verwenden möchten, um Milvus in Ihrer .NET Aspire-Lösung zu verwalten, rufen Sie die WithAttu-Erweiterungsmethode für Ihr Milvus-Ressourcenobjekt auf. Die Methode erstellt einen Container aus dem zilliz/attu Image:

var builder = DistributedApplication.CreateBuilder(args);

var milvus = builder.AddMilvus("milvus")
                    .WithAttu()
                    .WithLifetime(ContainerLifetime.Persistent);

var milvusdb = milvus.AddDatabase("milvusdb");

builder.AddProject<Projects.ExampleProject>()
       .WithReference(milvusdb)
       .WaitFor(milvusdb);

// After adding all resources, run the app...

Wenn Sie die .NET.NET Aspire-Lösung debuggen, wird ein Attu-Container unter den Ressourcen der Lösung aufgeführt. Wählen Sie den Endpunkt der Ressource aus, um die GUI zu öffnen und mit der Verwaltung von Datenbanken zu beginnen.

Client Integration

Um mit der .NET AspireMilvusclient-Integration zu beginnen, installieren Sie das 📦Aspire.Milvus.Client NuGet-Package im Projekt, das clientverbraucht, also das Projekt für die Anwendung, die die Milvus-Datenbank clientverwendet. Die Milvusclient-Integration registriert eine Milvus.Client. MilvusClient Instanz, die Sie für die Interaktion mit Milvus Datenbanken verwenden können.

dotnet add package Aspire.Milvus.Client

Milvus client hinzufügen

Rufen Sie in der Datei Program.cs Ihres client-verbrauchenden Projekts die AddMilvusClient Erweiterungsmethode auf jedem IHostApplicationBuilder auf, um eine MilvusClient für die Verwendung durch den Dependency-Injection-Container zu registrieren. Die Methode verwendet einen Verbindungsnamenparameter.

builder.AddMilvusClient("milvusdb");

Trinkgeld

Der parameter connectionName muss mit dem Namen übereinstimmen, der beim Hinzufügen der Milvus-Datenbankressource im App-Hostprojekt verwendet wird. Anders ausgedrückt: Wenn Sie AddDatabase aufrufen und einen Namen von milvusdb angeben, sollte dieser Name beim Aufrufen von AddMilvusClientverwendet werden. Weitere Informationen finden Sie unter Hinzufügen einer Milvusserver Ressource und einer Datenbankressource.

Anschließend können Sie die MilvusClient Instanz mithilfe der Abhängigkeitseinfügung abrufen. Um zum Beispiel die Verbindung von einem Beispieldienst abzurufen:

public class ExampleService(MilvusClient client)
{
    // Use the Milvus Client...
}

Weitere Informationen zur Abhängigkeitsinjektion finden Sie unter .NET Abhängigkeitsinjektion.

Hinzufügen eines Milvusclient mit Schlüsseln

Es kann Situationen geben, in denen Sie mehrere MilvusClient Instanzen mit unterschiedlichen Verbindungsnamen registrieren möchten. Rufen Sie die Methode AddKeyedMilvusClient auf, um die Schlüssel Milvus-Klienten zu registrieren.

builder.AddKeyedMilvusClient(name: "mainDb");
builder.AddKeyedMilvusClient(name: "loggingDb");

Wichtig

Bei der Verwendung von Schlüsseldiensten wird erwartet, dass Ihre Milvus Ressource zwei benannte Datenbanken konfiguriert hat, eine für die mainDb und eine für die loggingDb.

Anschließend können Sie die MilvusClient-Instanzen mithilfe von Dependency Injection abrufen. So rufen Sie beispielsweise die Verbindung aus einem Beispieldienst ab:

public class ExampleService(
    [FromKeyedServices("mainDb")] MilvusClient mainDbClient,
    [FromKeyedServices("loggingDb")] MilvusClient loggingDbClient)
{
    // Use clients...
}

Weitere Informationen zu schlüsselbasierten Diensten finden Sie unter .NET Abhängigkeitsinjektion: schlüsselbasierte Dienste.

Konfiguration

Die .NET AspireMilvusclient-Integration bietet mehrere Optionen zum Konfigurieren der Verbindung mit Milvus basierend auf den Anforderungen und Konventionen Ihres Projekts.

Trinkgeld

Die Standardverwendung ist root und das Standardkennwort ist Milvus. Informationen zum Konfigurieren eines anderen Kennworts im Milvus-Container finden Sie unter Umgang mit Anmeldeinformationen und Weiterleitung anderer Parameter für die Milvus Ressource. Verwenden Sie die folgenden Techniken, um die Verwendung von client Apps in Ihrer .NET Aspire Lösung mit demselben Kennwort oder anderen Einstellungen zu konfigurieren.

Verwenden Sie eine Verbindungszeichenfolge

Wenn Sie eine Verbindungszeichenfolge aus dem Konfigurationsabschnitt ConnectionStrings verwenden, können Sie beim Aufrufen von builder.AddMilvusClient()den Namen der Verbindungszeichenfolge angeben:

builder.AddMilvusClient("milvus");

Anschließend wird die Verbindungszeichenfolge aus dem Konfigurationsabschnitt ConnectionStrings abgerufen.

{
  "ConnectionStrings": {
    "milvus": "Endpoint=http://localhost:19530/;Key=root:Non-default-P@ssw0rd"
  }
}

Standardmäßig verwendet der MilvusClient den gRPC-API-Endpunkt.

Konfigurationsanbieter verwenden

Die .NET AspireMilvusclient-Integration unterstützt Microsoft.Extensions.Configuration. Sie lädt die MilvusClientSettings mithilfe des Aspire:Milvus:Client Schlüssels aus der Konfiguration. Der folgende Codeausschnitt ist ein Beispiel für ein appsettings.json, das einige der Optionen konfiguriert:

{
  "Aspire": {
    "Milvus": {
      "Client": {
        "Endpoint": "http://localhost:19530/",
        "Database": "milvusdb",
        "Key": "root:Non-default-P@ssw0rd",
        "DisableHealthChecks": false
      }
    }
  }
}

Das vollständige Schema zur Milvusclient Integration JSON finden Sie unter Aspire.Milvus.Client/ConfigurationSchema.json.

Inline-Delegaten verwenden

Sie können auch das Action<MilvusSettings> configureSettings-Delegate übergeben, um einige oder alle Optionen in der gleichen Zeile einzurichten, z. B. um den API-Schlüssel im Code festzulegen:

builder.AddMilvusClient(
    "milvus",
    static settings => settings.Key = "root:Non-default-P@ssw0rd");

Client Integrations-Gesundheitsprüfungen

Standardmäßig aktivieren .NET.NET Aspire Integrationen Integritätsprüfungen für alle Dienste. Weitere Informationen finden Sie unter .NET.NET Aspire Integrationsübersicht.

Die .NET AspireMilvus-Datenbankintegration:

  • Fügt die Gesundheitsprüfung hinzu, wenn MilvusClientSettings.DisableHealthChecksfalseist, und versucht dabei, eine Verbindung mit der Milvusserverherzustellen.
  • Verwendet die konfigurierte client, um eine HealthAsyncauszuführen. Wenn das Ergebnis gesundist, wird die Gesundheitsprüfung als gesund betrachtet, andernfalls ist sie ungesund. Ebenso wird die Gesundheitsprüfung als fehlerhaft betrachtet, wenn eine Ausnahme vorliegt, wobei der Fehler durch den Gesundheitsprüfungsfehler weitergegeben wird.

Observability und Telemetrie

.NET .NET Aspire Integrationen richten automatisch Protokollierungs-, Ablaufverfolgungs- und Metrikkonfigurationen ein, die manchmal als die Säulen der Beobachtbarkeitbezeichnet werden. Weitere Informationen zur Integrations-Observability und Telemetrie finden Sie unter .NET.NET Aspire Integrationsüberblick. Abhängig vom unterstützenden Dienst unterstützen einige Integrationen möglicherweise nur einige dieser Funktionen. Beispielsweise unterstützen einige Integrationen Protokollierung und Ablaufverfolgung, aber keine Metriken. Telemetrie-Funktionen können auch mithilfe der Techniken deaktiviert werden, die im Abschnitt Configuration dargestellt werden.

Protokollierung

Die .NET AspireMilvus Datenbankintegration verwendet standardmäßige .NET Protokollierung, und es werden Protokolleinträge aus der folgenden Kategorie angezeigt.

  • Milvus.Client

Nachverfolgung

Die .NET AspireMilvus Datenbankintegration gibt derzeit keine Tracing-Aktivitäten aus, da sie von der Milvus.Client-Bibliothek nicht unterstützt werden.

Metriken

Die .NET AspireMilvus Datenbankintegration gibt derzeit keine Metriken aus, da sie von der Milvus.Client-Bibliothek nicht unterstützt werden.

Siehe auch