.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 ExampleProject
hinzugefü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 AddMilvusClient
verwendet 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.DisableHealthChecks
false
ist, und versucht dabei, eine Verbindung mit der Milvusserverherzustellen. - Verwendet die konfigurierte client, um eine
HealthAsync
auszufü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.