Partilhar via


.NET Aspire Milvus integração de banco de dados

Inclui:integração de Hosting e Client integração

Milvus é um sistema de banco de dados vetorial de código aberto que armazena, indexa e pesquisa dados vetoriais em grande escala de forma eficiente. É comumente usado em aplicações de aprendizado de máquina, inteligência artificial e ciência de dados.

Os dados vetoriais codificam informações como vetores matemáticos, que são matrizes de números ou coordenadas. Os sistemas de aprendizado de máquina e IA geralmente usam vetores para representar objetos não estruturados, como imagens, texto, áudio ou vídeo. Cada dimensão no vetor descreve uma característica específica do objeto. Ao compará-los, os sistemas podem classificar, pesquisar e identificar clusters de objetos.

Neste artigo, você aprenderá a usar a integração de banco de dados .NET AspireMilvus. A integração de banco de dados .NET AspireMilvus permite que você se conecte a bancos de dados Milvus existentes ou crie novas instâncias com a imagem de contêiner milvusdb/milvus.

Integração de hospedagem

A integração de hospedagem de banco de dados Milvus modela o server como o tipo MilvusServerResource e o banco de dados como o tipo MilvusDatabaseResource. Para aceder a esses tipos e APIs, adicione o pacote NuGet 📦Aspire.Hosting.Milvus no projeto de host da aplicação .

dotnet add package Aspire.Hosting.Milvus

Para obter mais informações, consulte dotnet add package ou Gerir dependências de pacotes em aplicações .NET.

Adicionar recursos de Milvusserver e banco de dados

Em seu projeto de host de aplicativo, chame AddMilvus para adicionar e retornar um Milvus construtor de recursos. Encadeie uma chamada ao construtor de recursos que foi retornado para AddDatabase, a fim de adicionar um recurso de base de dados 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...

Observação

O contêiner Milvus pode ser lento a iniciar, por isso é melhor usar uma vida útil persistente para evitar reinicializações desnecessárias. Para obter mais informações, consulte Tempo de vida do recurso de contêiner.

Quando .NET.NET Aspire adiciona uma imagem de contêiner ao host do aplicativo, como mostrado no exemplo anterior com a imagem milvusdb/milvus, ele cria uma nova instância de Milvus em sua máquina local. Uma referência ao seu Milvus construtor de recursos (a variável milvus) é usada para adicionar um banco de dados. O banco de dados é nomeado milvusdb e, em seguida, adicionado ao ExampleProject.

O método WithReference configura uma conexão no ExampleProject chamado milvusdb.

Dica

Se preferir conectar-se a um Milvusserverexistente, ligue para AddConnectionString em vez disso. Para obter mais informações, consulte Consulte recursos existentes.

Manipulando credenciais e passando outros parâmetros para o recurso Milvus

O recurso Milvus inclui credenciais padrão com um username de root e a senha Milvus. Milvus suporta senhas padrão baseadas em configuração usando a variável de ambiente COMMON_SECURITY_DEFAULTROOTPASSWORD. Para alterar a senha padrão no contêiner, passe um parâmetro apiKey ao chamar a API de hospedagem AddMilvus:

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

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

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

O código anterior obtém um parâmetro para passar para a API AddMilvus e atribui internamente o parâmetro à variável de ambiente COMMON_SECURITY_DEFAULTROOTPASSWORD do contêiner Milvus. O parâmetro apiKey é geralmente especificado como um segredo de usuário :

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

Para obter mais informações, consulte Parâmetros externos.

Adicionar um recurso Milvus com um volume de dados

Para adicionar um volume de dados ao recurso de serviço Milvus, chame o método WithDataVolume no recurso 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...

O volume de dados é usado para manter os dados Milvus fora do ciclo de vida de seu contêiner. O volume de dados é montado no caminho /var/lib/milvus no contêiner SQL Server e, quando um parâmetro name não é fornecido, o nome é gerado aleatoriamente. Para obter mais informações sobre volumes de dados e detalhes sobre por que eles são preferidos em relação a montagens de ligação , consulte os documentos Docker sobre: Volumes.

Adicionar um recurso Milvus com uma montagem vinculada de dados

Para adicionar uma montagem de ligação de dados ao recurso Milvus, chame o método 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

As montagens de bind de dados têm funcionalidade limitada em comparação aos volumes, que oferecem melhor desempenho, portabilidade e segurança, tornando-os mais adequados para ambientes de produção. No entanto, as montagens bind permitem o acesso direto e a modificação de arquivos no sistema host, ideal para desenvolvimento e testes onde alterações em tempo real são necessárias.

As montagens de vinculação de dados dependem do sistema de ficheiros da máquina anfitriã para persistir os dados Milvus durante as reinicializações dos contêineres. A montagem de associação de dados é montada no caminho C:\Milvus\Data no Windows (ou /Milvus/Data no Unix) na máquina host no contêiner Milvus. Para obter mais informações sobre montagens de associação de dados, consulte Docker docs: Bind mounts.

Criar um recurso Attu

Attu é uma interface gráfica do usuário (GUI) e ferramenta de gerenciamento projetada para interagir com Milvus e seus bancos de dados. Ele inclui recursos de visualização avançados que podem ajudá-lo a investigar e entender seus dados vetoriais.

Se você quiser usar o Attu para gerenciar Milvus em sua solução .NET Aspire, chame o método de extensão WithAttu em seu recurso Milvus. O método cria um contêiner a partir da imagem 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...

Ao depurar a solução .NET.NET Aspire, verás um contentor Attu listado nos recursos da solução. Selecione o ponto de extremidade do recurso para abrir a GUI e começar a gerenciar bancos de dados.

Client integração

Para começar com a integração .NET AspireMilvusclient, instale o 📦Aspire.Milvus.Client pacote NuGet no projeto de consumo de client, ou seja, o projeto para o aplicativo que usa o banco de dados Milvusclient. A integração Milvusclient regista uma instância de Milvus.Client. MilvusClient que pode usar para interagir com Milvus bases de dados.

dotnet add package Aspire.Milvus.Client

Adicionar um Milvusclient

No arquivo de Program.cs do seu projeto que consome client, chame o método de extensão AddMilvusClient em qualquer IHostApplicationBuilder para registrar um MilvusClient para uso por meio do contêiner de injeção de dependência. O método usa um parâmetro de nome de conexão.

builder.AddMilvusClient("milvusdb");

Dica

O parâmetro connectionName deve corresponder ao nome usado ao adicionar o recurso de banco de dados Milvus no projeto host do aplicativo. Em outras palavras, quando você chama AddDatabase e fornece um nome de milvusdb esse mesmo nome deve ser usado ao chamar AddMilvusClient. Para obter mais informações, consulte Adicionar um recurso Milvusserver e um recurso de banco de dados.

Em seguida, você pode recuperar a instância MilvusClient usando a injeção de dependência. Por exemplo, para recuperar a conexão de um serviço de exemplo:

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

Para mais informações sobre injeção de dependência, consulte .NET injeção de dependência.

Adicionar um Milvusclient com chave

Pode haver situações em que você queira registrar várias instâncias de MilvusClient com nomes de conexão diferentes. Para registrar clientes Milvus chaveados, chame o método AddKeyedMilvusClient:

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

Importante

Ao usar serviços com chave, espera-se que seu recurso Milvus configure dois bancos de dados nomeados, um para o mainDb e outro para o loggingDb.

Em seguida, você pode recuperar as instâncias MilvusClient usando a injeção de dependência. Por exemplo, para recuperar a conexão de um serviço de exemplo:

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

Para obter mais informações sobre serviços com chave, consulte .NET injeção de dependência: Serviços com chave.

Configuração

A integração .NET AspireMilvusclient fornece várias opções para configurar a conexão com Milvus com base nos requisitos e convenções do seu projeto.

Dica

O uso padrão é root e a senha padrão é Milvus. Para configurar uma senha diferente no contêiner Milvus, consulte Manipulando credenciais e passando outros parâmetros para o recurso Milvus. Use as técnicas a seguir para configurar o consumo de aplicativos client em sua solução .NET Aspire com a mesma senha ou outras configurações.

Usar uma string de conexão

Ao usar uma cadeia de conexão da seção de configuração de ConnectionStrings, você pode fornecer o nome da cadeia de conexão ao chamar builder.AddMilvusClient():

builder.AddMilvusClient("milvus");

E, em seguida, a cadeia de conexão será recuperada da seção de configuração ConnectionStrings:

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

Por padrão, o MilvusClient usa o ponto de extremidade da API gRPC.

Usar provedores de configuração

A integração .NET AspireMilvusclient suporta Microsoft.Extensions.Configuration. Ele carrega o MilvusClientSettings da configuração usando a tecla Aspire:Milvus:Client. O trecho a seguir é um exemplo de um appsettings.json que configura algumas das opções:

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

Para obter a Milvusclient completa integração JSON esquema, consulte Aspire.Milvus.Client/ConfigurationSchema.json.

Usar delegados em linha

Além disso, é possível passar o delegado de Action<MilvusSettings> configureSettings para configurar algumas ou todas as opções diretamente, por exemplo, para definir a chave de API no código:

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

Client verificações de integridade da integração

Por padrão, as integrações .NET.NET Aspire habilitam verificações de integridade para todos os serviços. Para obter mais informações, consulte .NET.NET Aspire visão geral das integrações.

A integração da base de dados .NET AspireMilvus:

  • Adiciona a verificação de integridade quando MilvusClientSettings.DisableHealthChecks é false, que tenta conectar-se ao Milvusserver.
  • Utiliza o client configurado para executar o HealthAsync. Se o resultado for saudável, o exame de saúde é considerado saudável, caso contrário, não é saudável. Da mesma forma, se houver uma exceção, a verificação de integridade será considerada não saudável, com o erro a propagar-se devido à falha da verificação.

Observabilidade e telemetria

.NET .NET Aspire integrações configuram automaticamente as configurações de Registo, Rastreio e Métricas, que às vezes são referidas como os pilares da observabilidade. Para obter mais informações sobre observabilidade e telemetria de integração, consulte Visão geral de integrações .NET.NET Aspire. Dependendo do serviço de suporte, algumas integrações podem suportar apenas alguns desses recursos. Por exemplo, algumas integrações suportam registro em log e rastreamento, mas não métricas. Os recursos de telemetria também podem ser desativados usando as técnicas apresentadas na secção de Configuração.

Registo

A integração de base de dados .NET AspireMilvus usa registo padrão .NET, e verá entradas de registo da seguinte categoria:

  • Milvus.Client

Rastreio

Atualmente, a integração do banco de dados .NET AspireMilvus não emite atividades de rastreamento porque elas não são suportadas pela biblioteca Milvus.Client.

Métricas

Atualmente, a integração do banco de dados .NET AspireMilvus não emite métricas porque elas não são suportadas pela biblioteca Milvus.Client.

Ver também