Condividi tramite


integrazione del database .NET AspireMilvus

Comprende:integrazione dell'hosting e Client integrazione

Milvus è un sistema di database vettoriale open source che archivia, indici e cerca dati vettoriali su larga scala in modo efficiente. Viene comunemente usato nelle applicazioni di Machine Learning, intelligenza artificiale e data science.

I dati vettoriali codificano le informazioni come vettori matematici, ovvero matrici di numeri o coordinate. I sistemi di Machine Learning e intelligenza artificiale spesso usano vettori per rappresentare oggetti non strutturati come immagini, testo, audio o video. Ogni dimensione nel vettore descrive una caratteristica specifica dell'oggetto . Confrontandoli, i sistemi possono classificare, cercare e identificare cluster di oggetti.

Questo articolo illustra come usare l'integrazione del database .NET AspireMilvus. L'integrazione del database .NET AspireMilvus consente di connettersi ai database Milvus esistenti o di creare nuove istanze con l'immagine del contenitore milvusdb/milvus.

Integrazione hosting

Il database Milvus che ospita l'integrazione modella il server come tipo di MilvusServerResource e il database come tipo di MilvusDatabaseResource. Per accedere a questi tipi e API, aggiungere il pacchetto NuGet 📦Aspire.Hosting.Milvus nel progetto host dell'app .

dotnet add package Aspire.Hosting.Milvus

Per ulteriori informazioni, vedere dotnet add package o Gestire le dipendenze dei pacchetti nelle applicazioni .NET.

Aggiungere Milvusserver e risorse di database

Nel progetto host dell'app, chiamare AddMilvus per aggiungere e restituire un generatore di risorse Milvus. Concatenare una chiamata al generatore di risorse restituito per AddDatabase, per aggiungere una risorsa di database Milvus.

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

Nota

L'avvio del contenitore Milvus può essere lento, quindi è consigliabile usare una durata permanente per evitare riavvii non necessari. Per ulteriori informazioni, vedere durata delle risorse del contenitore.

Quando .NET.NET Aspire aggiunge un'immagine del contenitore all'host dell'app, come illustrato nell'esempio precedente con l'immagine milvusdb/milvus, crea una nuova istanza Milvus nel computer locale. Per aggiungere un database viene usato un riferimento al generatore di risorse Milvus (la variabile milvus). Il database viene denominato milvusdb e quindi aggiunto al ExampleProject.

Il metodo WithReference configura una connessione nel ExampleProject denominato milvusdb.

Consiglio

Se preferisci connetterti a un Milvusserveresistente, chiama AddConnectionString. Per altre informazioni, vedere Fare riferimento alle risorse esistenti.

Gestione delle credenziali e passaggio di altri parametri per la risorsa Milvus

La risorsa Milvus include le credenziali predefinite con un username di root e la password Milvus. Milvus supporta le password predefinite basate sulla configurazione usando la variabile di ambiente COMMON_SECURITY_DEFAULTROOTPASSWORD. Per modificare la password predefinita nel contenitore, passare un parametro apiKey quando si chiama l'API di hosting AddMilvus:

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

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

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

Il codice precedente ottiene un parametro da passare all'API AddMilvus e assegna internamente il parametro alla variabile di ambiente COMMON_SECURITY_DEFAULTROOTPASSWORD del contenitore Milvus. Il parametro apiKey viene in genere specificato come segreto utente:

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

Per altre informazioni, vedere Parametri esterni.

Aggiungere una risorsa Milvus con un volume di dati

Per aggiungere un volume di dati alla risorsa del servizio Milvus, chiamare il metodo WithDataVolume nella risorsa Milvus:

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

Il volume di dati viene usato per rendere persistenti i dati Milvus all'esterno del ciclo di vita del contenitore. Il volume di dati viene montato nel percorso /var/lib/milvus del contenitore SQL Server e, quando non viene specificato un parametro name, il nome viene generato a caso. Per altre informazioni sui volumi di dati e sui motivi per cui sono preferiti rispetto a associare i montaggi, vedere la documentazione Docker: Volumi.

Aggiungere una risorsa Milvus con un bind mount dei dati

Per aggiungere un montaggio di associazione dati alla risorsa Milvus, chiamare il metodo WithDataBindMount.

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

Importante

I di binding dei dati hanno funzionalità limitate rispetto ai volumi , che offrono prestazioni, portabilità e sicurezza migliori, rendendole più adatte per gli ambienti di produzione. Tuttavia, i bind mounts consentono l'accesso e la modifica diretta dei file nel sistema host, ideale per lo sviluppo e il test in cui sono necessarie modifiche in tempo reale.

I montaggi di associazione dati si basano sul file system del computer host per rendere persistenti i dati Milvus tra i riavvii del contenitore. Il bind mount dei dati viene montato nel percorso C:\Milvus\Data su Windows (o in /Milvus/Data nel percorso di Unix) sulla macchina host nel contenitore Milvus. Per ulteriori informazioni sui bind mount dei dati, consultare la documentazione Docker: Bind mounts.

Creare una risorsa Attu

Attu è uno strumento di gestione e interfaccia utente grafica progettato per interagire con Milvus e i relativi database. Include funzionalità di visualizzazione avanzate che consentono di analizzare e comprendere i dati vettoriali.

Se vuoi utilizzare Attu per gestire Milvus nella tua soluzione .NET Aspire, chiama il metodo di estensione WithAttu sulla tua risorsa Milvus. Il metodo crea un contenitore dall'immagine zilliz/attu:

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

Quando si esegue il debug della soluzione .NET.NET Aspire, verrà visualizzato un contenitore Attu elencato nelle risorse della soluzione. Selezionare l'endpoint della risorsa per aprire l'interfaccia utente grafica e iniziare a gestire i database.

Client integrazione

Per iniziare a usare l'integrazione di .NET AspireMilvusclient, installare il pacchetto NuGet 📦Aspire.Milvus.Client nel progetto client-consumante, ovvero il progetto per l'applicazione che usa il database Milvusclient. L'integrazione Milvusclient registra un Milvus.Client. MilvusClient istanza che puoi usare per interagire con i database Milvus.

dotnet add package Aspire.Milvus.Client

Aggiungere un Milvusclient

Nel file Program.cs del progetto consumatore client, chiamando il metodo di estensione AddMilvusClient su qualsiasi IHostApplicationBuilder, si registra un MilvusClient da usare tramite il contenitore di injection delle dipendenze. Il metodo accetta un parametro del nome di connessione.

builder.AddMilvusClient("milvusdb");

Consiglio

Il parametro connectionName deve corrispondere al nome usato quando si aggiunge la risorsa di database Milvus nel progetto host dell'app. In altre parole, quando si chiama AddDatabase e si specifica un nome di milvusdb lo stesso nome deve essere usato quando si chiama AddMilvusClient. Per altre informazioni, vedere Aggiungere una risorsa Milvusserver e una risorsa di database.

È quindi possibile recuperare l'istanza di MilvusClient tramite l'iniezione delle dipendenze. Ad esempio, per recuperare la connessione da un servizio di esempio:

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

Per altre informazioni sull'inserimento delle dipendenze, vedere .NET inserimento delle dipendenze.

Aggiungere un Milvusclient con chiave

In alcuni casi potrebbe essere necessario registrare più istanze di MilvusClient con nomi di connessione diversi. Per registrare i client Milvus con chiave, chiamare il metodo AddKeyedMilvusClient:

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

Importante

Quando si usano i servizi con chiave, è previsto che la risorsa Milvus sia configurata con due database denominati, uno per il mainDb e uno per l'loggingDb.

È quindi possibile recuperare le istanze di MilvusClient usando l'inserimento delle dipendenze. Ad esempio, per recuperare la connessione da un servizio di esempio:

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

Per altre informazioni sui servizi con chiave, vedere .NET inserimento delle dipendenze: Servizi con chiave.

Configurazione

L'integrazione .NET AspireMilvusclient offre più opzioni per configurare la connessione a Milvus in base ai requisiti e alle convenzioni del progetto.

Consiglio

L'uso predefinito è root e la password predefinita è Milvus. Per configurare una password diversa nel contenitore Milvus, vedere Gestione delle credenziali e passaggio di altri parametri per la risorsa Milvus. Usare le tecniche seguenti per configurare l'utilizzo di app client nella soluzione .NET Aspire con la stessa password o altre impostazioni.

Usare una stringa di connessione

Quando si usa una stringa di connessione dalla sezione di configurazione ConnectionStrings, è possibile specificare il nome della stringa di connessione quando si chiama builder.AddMilvusClient():

builder.AddMilvusClient("milvus");

La stringa di connessione verrà quindi recuperata dalla sezione di configurazione ConnectionStrings:

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

Per impostazione predefinita, il MilvusClient usa l'endpoint dell'API gRPC.

Usare i provider di configurazione

L'integrazione .NET AspireMilvusclient supporta Microsoft.Extensions.Configuration. Carica il MilvusClientSettings dalla configurazione usando la chiave di Aspire:Milvus:Client. Il frammento di codice seguente è un esempio di appsettings.json che configura alcune delle opzioni:

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

Per lo schema completo Milvusclient di integrazione JSON, vedere Aspire.Milvus.Client/ConfigurationSchema.json.

Usare delegati inline

È inoltre possibile passare il delegato Action<MilvusSettings> configureSettings per configurare alcune o tutte le opzioni inline, ad esempio impostando la chiave API nel codice:

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

Client verifiche di integrità dell'integrazione

Per impostazione predefinita, le integrazioni di .NET.NET Aspire abilitano controlli di integrità per tutti i servizi. Per altre informazioni, vedere panoramica delle integrazioni .NET.NET Aspire.

Integrazione del database .NET AspireMilvus:

  • Aggiunge il controllo dello stato di salute quando MilvusClientSettings.DisableHealthChecks è false, che cerca di connettersi al Milvusserver.
  • Usa il client configurato per eseguire un HealthAsync. Se il risultato è sano, il controllo della salute è considerato sano; in caso contrario, è considerato non sano. Analogamente, se si verifica un'eccezione, il controllo della salute viene considerato non integro, con l'errore che si propaga e causa il fallimento del controllo.

Osservabilità e telemetria

.NET .NET Aspire le integrazioni configurano automaticamente le configurazioni di registrazione, tracciamento e metriche, talvolta note come i pilastri dell'osservabilità. Per altre informazioni sull'osservabilità e la telemetria dell'integrazione, vedere panoramica delle integrazioni .NET.NET Aspire. A seconda del servizio di backup, alcune integrazioni possono supportare solo alcune di queste funzionalità. Ad esempio, alcune integrazioni supportano la registrazione e la traccia, ma non le metriche. Le funzionalità di telemetria possono essere disabilitate anche usando le tecniche presentate nella sezione Configurazione .

Registrazione

L'integrazione del database .NET AspireMilvus usa la registrazione .NET standard e le voci di log verranno visualizzate nella categoria seguente:

  • Milvus.Client

Tracciamento

L'integrazione del database .NET AspireMilvus non genera attualmente attività di traccia perché non sono supportate dalla libreria Milvus.Client.

Metriche

L'integrazione del database .NET AspireMilvus non genera attualmente metriche perché non sono supportate dalla libreria Milvus.Client.

Vedere anche