integración de la base de datos .NET AspireMilvus
Incluye:integración de hospedaje y Client integración
Milvus es un sistema de bases de datos vectoriales de código abierto que almacena, indexa y busca datos vectoriales a gran escala de forma eficaz. Normalmente se usa en aplicaciones de aprendizaje automático, inteligencia artificial y ciencia de datos.
Los datos vectoriales codifican información como vectores matemáticos, que son matrices de números o coordenadas. Los sistemas de aprendizaje automático e inteligencia artificial suelen usar vectores para representar objetos no estructurados, como imágenes, texto, audio o vídeo. Cada dimensión del vector describe una característica específica del objeto. Al compararlos, los sistemas pueden clasificar, buscar e identificar clústeres de objetos.
En este artículo, aprenderá a usar la integración de base de datos .NET AspireMilvus. La integración de base de datos de .NET AspireMilvus permite conectarse a bases de datos de Milvus existentes o crear nuevas instancias con la imagen de contenedor milvusdb/milvus
.
Integración de hospedaje
La integración de hospedaje de bases de datos Milvus modela: el servidor como tipo MilvusServerResource y la base de datos como tipo MilvusDatabaseResource. Para acceder a estos tipos y APIs, agregue el paquete NuGet 📦Aspire.Hosting.Milvus en el proyecto del host de la aplicación .
dotnet add package Aspire.Hosting.Milvus
Para obtener más información, consulte dotnet add package o Administrar dependencias de paquetes en aplicaciones .NET.
Agregar recursos de servidor y base de datos de Milvus
En el proyecto anfitrión de tu aplicación, llama a AddMilvus para agregar y devolver un constructor de recursos Milvus. Haga una llamada encadenada al generador de recursos devuelto para AddDatabase, para agregar un recurso de base de datos para 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
El contenedor de Milvus puede ser lento para iniciarse, por lo que es mejor usar un duración de persistente para evitar reinicios innecesarios. Para obtener más información, consulte vida útil del recurso del contenedor.
Cuando .NET.NET Aspire agrega una imagen de contenedor al host de la aplicación, como se muestra en el ejemplo anterior con la imagen de milvusdb/milvus
, crea una nueva instancia de Milvus en el equipo local. Se usa una referencia al generador de recursos de Milvus (la variable milvus
) para agregar una base de datos. La base de datos se denomina milvusdb
y, a continuación, se agrega al ExampleProject
.
El método WithReference configura una conexión en el ExampleProject
denominado milvusdb
.
Propina
Si prefiere conectarse a un servidor Milvus existente, llame a AddConnectionString en su lugar. Para obtener más información, vea Hacer referencia a los recursos existentes.
Gestionar las credenciales y pasar otros parámetros para el recurso de Milvus
El recurso Milvus incluye credenciales predeterminadas que contienen un username
de root
y la contraseña Milvus
.
Milvus admite contraseñas predeterminadas basadas en la configuración mediante la variable de entorno COMMON_SECURITY_DEFAULTROOTPASSWORD
. Para cambiar la contraseña predeterminada en el contenedor, pase un parámetro apiKey
al llamar a la API de hospedaje de AddMilvus
:
var apiKey = builder.AddParameter("apiKey", secret: true);
var milvus = builder.AddMilvus("milvus", apiKey);
var myService = builder.AddProject<Projects.ExampleProject>()
.WithReference(milvus);
El código anterior obtiene un parámetro para pasar a la API de AddMilvus
y asigna internamente el parámetro a la variable de entorno COMMON_SECURITY_DEFAULTROOTPASSWORD
del contenedor de Milvus. El parámetro apiKey
normalmente se especifica como secreto de usuario:
{
"Parameters": {
"apiKey": "Non-default-P@ssw0rd"
}
}
Para obtener más información, vea Parámetros externos.
Agregar un recurso Milvus con un volumen de datos
Para agregar un volumen de datos al recurso del servicio de Milvus, llame al método WithDataVolume en el 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...
El volumen de datos se utiliza para persistir los datos de Milvus más allá del ciclo de vida de su contenedor. El volumen de datos se monta en la ruta de acceso /var/lib/milvus
del contenedor de SQL Server y, cuando no se proporciona un parámetro name
, el nombre se genera de forma aleatoria. Para obtener más información sobre los volúmenes de datos y detalles sobre por qué se prefieren a los montajes de enlace , consulte la documentación Docker: Volúmenes.
Añadir un recurso de Milvus con un montaje de enlace de datos
Para agregar una vinculación de datos al recurso de Milvus, llame al 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
Los montajes de enlace de de datos tienen una funcionalidad limitada en comparación con los volúmenes de , que ofrecen un mejor rendimiento, portabilidad y seguridad, lo que hace que sean más adecuados para entornos de producción. Sin embargo, los montajes bind permiten el acceso directo y la modificación de archivos en el sistema host, ideal para el desarrollo y las pruebas en los que se requieren cambios en tiempo real.
Los montajes de enlace de datos dependen del sistema de archivos del equipo host para preservar los datos de Milvus cada vez que se reinicia el contenedor. El montaje de datos se monta en C:\Milvus\Data
en Windows (o /Milvus/Data
en Unix) en la ruta de acceso del equipo host en el contenedor Milvus. Para obtener más información sobre los montajes de enlace de datos, consulte los documentos Docker: Montajes de enlace.
Creación de un recurso de Attu
Attu es una interfaz gráfica de usuario (GUI) y una herramienta de administración diseñada para interactuar con Milvus y sus bases de datos. Incluye características de visualización enriquecidas que pueden ayudarle a investigar y comprender los datos vectoriales.
Si quiere usar Attu para administrar Milvus en la solución de .NET Aspire, llame al método de extensión WithAttu en el recurso de Milvus. El método crea un contenedor a partir de la imagen de 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...
Al depurar la solución .NET.NET Aspire, verá un contenedor de Attu en los recursos de la solución. Seleccione el punto de conexión del recurso para abrir la GUI y empezar a administrar bases de datos.
integración de Client
Para empezar a trabajar con la integración del cliente de .NET AspireMilvus, instale el paquete NuGet 📦Aspire.Milvus.Client en el proyecto consumidor del cliente, es decir, el proyecto de la aplicación que utiliza el cliente de base de datos Milvus. La integración de cliente de Milvus registra un Milvus.Client. MilvusClient instancia que puede usar para interactuar con bases de datos Milvus.
dotnet add package Aspire.Milvus.Client
Agregar un cliente de Milvus
En el archivo Program.cs del proyecto que consume el cliente, llame al método de extensión AddMilvusClient en cualquier IHostApplicationBuilder para registrar un MilvusClient
para su uso mediante el contenedor de inserción de dependencias. El método toma un parámetro de nombre de conexión.
builder.AddMilvusClient("milvusdb");
Propina
El parámetro connectionName
debe coincidir con el nombre usado al agregar el recurso de base de datos Milvus en el proyecto host de la aplicación. Es decir, cuando se llama a AddDatabase
y se proporciona un nombre de milvusdb
ese mismo nombre se debe usar al llamar a AddMilvusClient
. Para obtener más información, consulte Agregar un recurso de servidor Milvus y un recurso de base de datos.
A continuación, puede recuperar la instancia de MilvusClient
mediante la inyección de dependencias. Por ejemplo, para recuperar la conexión de un servicio de ejemplo:
public class ExampleService(MilvusClient client)
{
// Use the Milvus Client...
}
Para obtener más información sobre la inserción de dependencias, consulte .NET inserción de dependencias.
Adición de un cliente de Milvus con clave
Puede haber situaciones en las que quiera registrar varias instancias de MilvusClient
con nombres de conexión diferentes. Para registrar clientes de Milvus con clave, llame al método AddKeyedMilvusClient:
builder.AddKeyedMilvusClient(name: "mainDb");
builder.AddKeyedMilvusClient(name: "loggingDb");
Importante
Cuando se usan servicios con claves, se espera que el recurso de Milvus configure dos bases de datos con nombre, una para el mainDb
y otra para la loggingDb
.
A continuación, puede recuperar las instancias de MilvusClient
mediante la inyección de dependencias. Por ejemplo, para recuperar la conexión de un servicio de ejemplo:
public class ExampleService(
[FromKeyedServices("mainDb")] MilvusClient mainDbClient,
[FromKeyedServices("loggingDb")] MilvusClient loggingDbClient)
{
// Use clients...
}
Para obtener más información sobre los servicios con claves, consulte .NET inserción de dependencias: Servicios con claves.
Configuración
La integración de cliente de .NET AspireMilvus proporciona varias opciones para configurar la conexión a Milvus en función de los requisitos y convenciones del proyecto.
Propina
El uso predeterminado es root
y la contraseña predeterminada es Milvus
. Para configurar una contraseña diferente en el contenedor de Milvus, consulte Milvusde . Usa las técnicas siguientes para configurar el consumo de aplicaciones cliente en su solución .NET.NET Aspire con la misma contraseña u otras configuraciones.
Uso de una cadena de conexión
Al usar una cadena de conexión de la sección de configuración de ConnectionStrings
, puede proporcionar el nombre de la cadena de conexión al llamar a builder.AddMilvusClient()
:
builder.AddMilvusClient("milvus");
Y, a continuación, la cadena de conexión se recuperará de la sección de configuración de ConnectionStrings
:
{
"ConnectionStrings": {
"milvus": "Endpoint=http://localhost:19530/;Key=root:Non-default-P@ssw0rd"
}
}
De forma predeterminada, el MilvusClient
usa el endpoint de la API gRPC.
Uso de proveedores de configuración
La integración del cliente para .NET AspireMilvus es compatible con Microsoft.Extensions.Configuration. Carga el MilvusClientSettings desde la configuración mediante la clave Aspire:Milvus:Client
. El fragmento de código siguiente es un ejemplo de un appsettings.json que configura algunas de las opciones:
{
"Aspire": {
"Milvus": {
"Client": {
"Endpoint": "http://localhost:19530/",
"Database": "milvusdb",
"Key": "root:Non-default-P@ssw0rd",
"DisableHealthChecks": false
}
}
}
}
Para consultar el esquema completo de integración de cliente MilvusJSON, vea Aspire.Milvus.Client/ConfigurationSchema.json.
Utilice delegados insertados
También puede pasar el delegado Action<MilvusSettings> configureSettings
para configurar algunas o todas las opciones en línea, por ejemplo, para establecer la clave de API desde el código:
builder.AddMilvusClient(
"milvus",
static settings => settings.Key = "root:Non-default-P@ssw0rd");
comprobaciones de estado de integración de Client
De forma predeterminada, las integraciones de .NET.NET Aspire habilitan las verificaciones de salud de para todos los servicios. Para obtener más información, consulte .NET.NET Aspire integrations overview.
La integración de la base de datos .NET AspireMilvus:
- Agrega la comprobación de estado cuando MilvusClientSettings.DisableHealthChecks es
false
, que intenta conectarse al servidor de Milvus. - Usa el cliente configurado para realizar una
HealthAsync
. Si el resultado es correcto, la comprobación de estado se considera correcta; de lo contrario, es incorrecto. Del mismo modo, si hay una excepción, la verificación de estado se considera no saludable y el error se propaga a través del fallo de la verificación de estado.
Observabilidad y telemetría
.NET .NET Aspire integraciones configuran automáticamente las configuraciones de registro, seguimiento y métricas, que a veces se conocen como los pilares de la observabilidad. Para obtener más información sobre la observabilidad de integración y la telemetría, consulte información general sobre las integraciones de .NET.NET Aspire. En función del servicio de respaldo, algunas integraciones solo pueden admitir algunas de estas características. Por ejemplo, algunas integraciones admiten el registro y el seguimiento, pero no las métricas. Las características de telemetría también se pueden deshabilitar mediante las técnicas presentadas en la sección Configuración.
Registro
La integración de la base de datos .NET AspireMilvus utiliza el registro estándar de .NET y verá entradas de registro de la siguiente categoría:
Milvus.Client
Rastreo
La integración de la base de datos .NET AspireMilvus no emite actualmente actividades de seguimiento porque no son compatibles con la biblioteca de Milvus.Client
.
Métricas
La integración de la base de datos .NET AspireMilvus no emite actualmente métricas porque no son compatibles con la biblioteca Milvus.Client
.
Consulte también
- Milvus
- del repositorio de
- Milvus .NET SDK
- .NET .NET Aspire integración
- del repositorio de