Freigeben über


.NET Aspire Milvus Datenbankintegration

umfasst: Hostingintegration 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

Die Milvus Datenbankhosting-Integration modelliert den Server als MilvusServerResource Typ und die Datenbank als 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.

Milvus-Server- und Datenbankressourcen hinzufügen

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 Milvus Server herstellen 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 Milvus-Methode für die WithDataVolume-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 einem Daten-Bind-Mount hinzufügen

Rufen Sie die Milvus-Methode auf, um der WithDataBindMount-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 Volumes eine eingeschränkte Funktionalität, während Volumes eine bessere Leistung, Portabilität und Sicherheit bieten, 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.

Data Bind Mounts basieren auf dem Dateisystem des Hostcomputers, um die Milvus Daten über Containerneustarts hinweg zu persistieren. Der Datenbindemount wird auf dem Windows-Pfad C:\Milvus\Data (oder Unix auf /Milvus/Data) des Hostcomputers im Milvus-Container eingehängt. Weitere Informationen zu Daten-Bind-Mounts finden Sie in der Docker Dokumentation zu den 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 (Vorschau)

Um mit der .NET AspireMilvus Client-Integration zu beginnen, installieren Sie das 📦Aspire.Milvus.Client NuGet-Paket im dafür vorgesehenen Projekt, das heißt, im Projekt der Anwendung, die den Milvus Datenbank-Client verwendet. Die Milvus Clientintegration registriert eine Milvus.Client. MilvusClient Instanz, die Sie für die Interaktion mit Milvus Datenbanken verwenden können.

dotnet add package Aspire.Milvus.Client

Hinzufügen eines Milvus-Clients

Rufen Sie in der Program.cs-Datei Ihres Projekts, das einen Client nutzt, die AddMilvusClient-Erweiterungsmethode auf einem beliebigen IHostApplicationBuilder auf, um eine MilvusClient für die Verwendung über den Abhängigkeitsinjektionscontainer 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 Milvus Serverressource und 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 Milvus-Clients mit Schlüsseln

Es kann Situationen geben, in denen Sie mehrere MilvusClient Instanzen mit unterschiedlichen Verbindungsnamen registrieren möchten. Rufen Sie die Methode Milvus auf, um die Schlüssel AddKeyedMilvusClient-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 Abhängigkeitsinjektion abrufen. Um zum Beispiel die Verbindung von einem Beispieldienst abzurufen:

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 AspireMilvus Clientintegration 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 Nutzung von Client-Apps in Ihrer .NET.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 AspireMilvus Clientintegration 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 Milvus Clientintegration JSON Schema 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 Gesundheitschecks für alle Dienste. Weitere Informationen finden Sie unter .NET.NET Aspire Integrationsübersicht.

Die .NET AspireMilvus-Datenbankintegration:

  • Fügt die Integritätsprüfung hinzu, wenn MilvusClientSettings.DisableHealthChecksfalseist, wodurch versucht wird, eine Verbindung mit dem Milvus Server herzustellen.
  • Verwendet den konfigurierten 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