Delen via


.NET Aspire Milvus-databaseintegratie

omvat:hosting-integratie en Client integratie

Milvus is een opensource vector databasesysteem dat efficiënt vectorgegevens op grote schaal opslaat, indexeert en doorzoekt. Het wordt vaak gebruikt in toepassingen voor machine learning, kunstmatige intelligentie en data science.

Vectorgegevens codeert informatie als wiskundige vectoren, die matrices van getallen of coördinaten zijn. Machine learning- en AI-systemen gebruiken vaak vectoren om ongestructureerde objecten weer te geven, zoals afbeeldingen, tekst, audio of video. Elke dimensie in de vector beschrijft een specifiek kenmerk van het object. Door ze te vergelijken, kunnen systemen clusters van objecten classificeren, doorzoeken en identificeren.

In dit artikel leert u hoe u de .NET AspireMilvus-databaseintegratie gebruikt. Met de .NET AspireMilvus-databaseintegratie kunt u verbinding maken met bestaande Milvus-databases of nieuwe exemplaren maken met de milvusdb/milvus containerimage.

Hostingintegratie

De Milvus database hosting integreert modellen waarbij de server als het MilvusServerResource-type en de database als het MilvusDatabaseResource-type fungeert. Als u toegang wilt krijgen tot deze typen en API's, voegt u het 📦Aspire.Hosting.Milvus NuGet-pakket toe aan het app-host project.

dotnet add package Aspire.Hosting.Milvus

Zie dotnet pakket toevoegen of Pakketafhankelijkheden beheren in .NET toepassingenvoor meer informatie.

Milvus server en databasebronnen toevoegen

Roep in uw project voor app-hosting AddMilvus aan om een Milvus hulpbronbouwer toe te voegen en te retourneren. Koppel een aanroep aan de teruggegeven resource builder naar AddDatabaseom een Milvus databaseresource toe te voegen.

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

Notitie

De Milvus container kan traag opstarten, dus is het het beste om een persistente levenscyclus te gebruiken om onnodige herstarts te voorkomen. Zie Levensduur van containerresourcesvoor meer informatie.

Wanneer .NET.NET Aspire een containerinstallatiekopie toevoegt aan de app-host, zoals wordt weergegeven in het vorige voorbeeld met de milvusdb/milvus-installatiekopie, wordt er een nieuw Milvus exemplaar op uw lokale computer gemaakt. Een verwijzing naar de Milvus resource-builder (de milvus variabele) wordt gebruikt om een database toe te voegen. De database heeft de naam milvusdb en wordt vervolgens toegevoegd aan de ExampleProject.

De methode WithReference configureert een verbinding in de ExampleProject met de naam milvusdb.

Fooi

Als u liever verbinding wilt maken met een bestaande Milvusserver, roept u in plaats daarvan AddConnectionString aan. Zie Bestaande bronnenvoor meer informatie.

Referenties verwerken en andere parameters doorgeven voor de Milvus-resource

De Milvus-resource bevat standaardgegevens met een username van root en het wachtwoord Milvus. Milvus ondersteunt op configuratie gebaseerde standaardwachtwoorden met behulp van de omgevingsvariabele COMMON_SECURITY_DEFAULTROOTPASSWORD. Als u het standaardwachtwoord in de container wilt wijzigen, geeft u een apiKey parameter door bij het aanroepen van de AddMilvus hosting-API:

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

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

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

Met de voorgaande code wordt een parameter opgehaald die moet worden doorgegeven aan de AddMilvus-API en wordt de parameter intern toegewezen aan de omgevingsvariabele COMMON_SECURITY_DEFAULTROOTPASSWORD van de Milvus-container. De parameter apiKey wordt meestal opgegeven als een gebruikersgeheim:

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

Zie Externe parametersvoor meer informatie.

Een Milvus-resource toevoegen met een gegevensvolume

Als u een gegevensvolume wilt toevoegen aan de Milvus-serviceresource, roept u de WithDataVolume methode aan op de Milvus-resource:

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

Het gegevensvolume wordt gebruikt om de Milvus gegevens buiten de levenscyclus van de container te behouden. Het gegevensvolume wordt gekoppeld aan het /var/lib/milvus pad in de SQL Server container en wanneer er geen name parameter wordt opgegeven, wordt de naam willekeurig gegenereerd. Zie Docker docs: Volumesvoor meer informatie over gegevensvolumes en details over waarom ze de voorkeur hebben boven bindingskoppelingen.

Een Milvus-resource toevoegen met een koppeling voor gegevensbinding

Als u een koppeling voor gegevensbinding wilt toevoegen aan de Milvus-resource, roept u de WithDataBindMount methode aan:

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

Belangrijk

Gegevens -koppelingen hebben een beperkte functionaliteit in vergelijking met volumes, die betere prestaties, draagbaarheid en beveiliging bieden, waardoor ze meer geschikt zijn voor productieomgevingen. Bind-mounts bieden echter directe toegang tot en aanpassing van bestanden op het hostsysteem, ideaal voor ontwikkeling en testen waarbij realtime wijzigingen nodig zijn.

Gegevenskoppelingen zijn afhankelijk van het bestandssysteem van de hostmachine om de Milvus gegevens bij herstarten van de container te behouden. De koppeling voor gegevensbinding wordt gekoppeld aan de C:\Milvus\Data in Windows (of /Milvus/Data op Unix) op de hostcomputer in de Milvus container. Zie Docker docs: Bindingskoppelingenvoor meer informatie over koppelingskoppelingen voor gegevens.

Een Attu-resource maken

Attu is een grafische gebruikersinterface (GUI) en beheerprogramma dat is ontworpen om te communiceren met Milvus en de bijbehorende databases. Het bevat uitgebreide visualisatiefuncties waarmee u uw vectorgegevens kunt onderzoeken en begrijpen.

Als u Attu wilt gebruiken om Milvus in uw .NET Aspire-oplossing te beheren, roept u de WithAttu-extensiemethode aan voor uw Milvus resource. Met de methode wordt een container gemaakt van de zilliz/attu-afbeelding:

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

Wanneer u de .NET.NET Aspire-oplossing debugt, ziet u een Attu-container vermeld in de resources van de oplossing. Selecteer het eindpunt van de resource om de GUI te openen en databases te beheren.

integratie van Client

Installeer de 📦Aspireom aan de slag te gaan met de .NET AspireMilvusclient-integratie.Milvus.Client NuGet-pakket in het clientverbruikende project, dat wil gezegd, het project voor de toepassing die gebruikmaakt van de Milvus-database client. De Milvusclient integratie registreert een Milvus.Client. MilvusClient exemplaar dat je kunt gebruiken om te interageren met Milvus databases.

dotnet add package Aspire.Milvus.Client

Een Milvusclient toevoegen

Roep in het Program.cs-bestand van uw clientverbruikende project de AddMilvusClient-extensiemethode aan op elke IHostApplicationBuilder om een MilvusClient te registreren voor gebruik via de container voor afhankelijkheidsinjectie. De methode gebruikt een verbindingsnaamparameter.

builder.AddMilvusClient("milvusdb");

Fooi

De parameter connectionName moet overeenkomen met de naam die wordt gebruikt bij het toevoegen van de Milvus databaseresource in het app-hostproject. Met andere woorden, wanneer u AddDatabase aanroept en een naam opgeeft van milvusdb diezelfde naam moet worden gebruikt bij het aanroepen van AddMilvusClient. Voor meer informatie, zie Een Milvusserver-resource en databaseresource toevoegen.

Vervolgens kunt u het MilvusClient exemplaar ophalen met behulp van afhankelijkheidsinjectie. Als u bijvoorbeeld de verbinding wilt ophalen uit een voorbeeldservice:

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

Zie voor meer informatie over afhankelijkheidsinjectie .NET.

Een sleutel Milvusclient toevoegen

Er kunnen situaties zijn waarin u meerdere MilvusClient exemplaren met verschillende verbindingsnamen wilt registreren. Als u keyed Milvus-clients wilt registreren, roept u de methode AddKeyedMilvusClient aan:

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

Belangrijk

Wanneer u sleutelservices gebruikt, wordt verwacht dat uw Milvus resource twee benoemde databases heeft geconfigureerd, één voor de mainDb en één voor de loggingDb.

Vervolgens kunt u de MilvusClient exemplaren ophalen met behulp van afhankelijkheidsinjectie. Als u bijvoorbeeld de verbinding wilt ophalen uit een voorbeeldservice:

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

Voor meer informatie over sleutelservices, zie .NET afhankelijkheidsinjectie: Keyed services.

Configuratie

De .NET AspireMilvusclient-integratie biedt meerdere opties voor het configureren van de verbinding met Milvus op basis van de vereisten en conventies van uw project.

Fooi

Het standaardgebruik is root en het standaardwachtwoord is Milvus. Als u een ander wachtwoord in de Milvus-container wilt configureren, raadpleegt u Referenties verwerken en andere parameters doorgeven voor de Milvus resource. Gebruik de volgende technieken om het gebruik van client apps in uw .NET Aspire oplossing te configureren met hetzelfde wachtwoord of andere instellingen.

Een verbindingsreeks gebruiken

Wanneer u een verbindingsreeks uit de sectie ConnectionStrings configuratie gebruikt, kunt u de naam van de verbindingsreeks opgeven bij het aanroepen van builder.AddMilvusClient():

builder.AddMilvusClient("milvus");

Vervolgens wordt de verbindingsreeks opgehaald uit de sectie ConnectionStrings configuratie:

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

De MilvusClient maakt standaard gebruik van het gRPC API-eindpunt.

Configuratieproviders gebruiken

De .NET AspireMilvusclient-integratie ondersteunt Microsoft.Extensions.Configuration. Het laadt de MilvusClientSettings vanuit de configuratie met behulp van de Aspire:Milvus:Client-sleutel. Het volgende codefragment is een voorbeeld van een appsettings.json waarmee een aantal van de opties wordt geconfigureerd:

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

Zie voor het volledige Milvusclient integratieschema JSONAspire.Milvus.Client/ConfigurationSchema.json.

Inline delegates gebruiken

U kunt ook de Action<MilvusSettings> configureSettings delegate doorgeven om bepaalde of alle opties inline in te stellen, bijvoorbeeld om de API-sleutel in te stellen vanuit de code:

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

Client gezondheidscontroles van integratie

Standaard kunnen .NET.NET Aspire integraties statuscontroles voor alle services inschakelen. Zie .NET.NET Aspire overzicht van integratiesvoor meer informatie.

De .NET AspireMilvus-database-integratie:

  • Hiermee wordt de statuscontrole toegevoegd wanneer MilvusClientSettings.DisableHealthChecks is false. Vervolgens wordt er geprobeerd verbinding te maken met de Milvusserver.
  • Gebruikt de geconfigureerde client om een HealthAsyncuit te voeren. Als het resultaat gezond is, wordt de gezondheidscontrole als gezond beschouwd, anders wordt het als ongezond beschouwd. Als er een uitzondering is, wordt de statuscontrole als ongezond beschouwd, waarbij de fout zich verspreidt door de statuscontrolefout.

Waarneembaarheid en telemetrie

.NET .NET Aspire integraties stellen automatisch configuraties in voor logboekregistratie, tracering en metrieken, ook wel bekend als de pijlers van waarneembaarheid. Zie .NET.NET Aspire overzicht van integratieintegratiesvoor meer informatie over de waarneembaarheid en telemetrie van integraties. Afhankelijk van de back-upservice ondersteunen sommige integraties mogelijk slechts enkele van deze functies. Sommige integraties ondersteunen bijvoorbeeld logboekregistratie en tracering, maar geen metrische gegevens. Telemetriefuncties kunnen ook worden uitgeschakeld met behulp van de technieken die worden weergegeven in de sectie Configuratie.

Registratie

De .NET AspireMilvus-databaseintegratie maakt gebruik van standaardlogboekregistratie .NET en u ziet logboekvermeldingen uit de volgende categorie:

  • Milvus.Client

Opsporing

De .NET AspireMilvus-databaseintegratie verzendt momenteel geen traceringsactiviteiten omdat deze niet worden ondersteund door de Milvus.Client-bibliotheek.

Statistieken

De integratie van .NET AspireMilvus database verzendt momenteel geen metrische gegevens omdat deze niet worden ondersteund door de Milvus.Client-bibliotheek.

Zie ook