Qdrant es un motor de búsqueda de similitud de vectores 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, aprendes a usar la integración Qdrant de .NET.NET Aspire. La integración de .NET.NET Aspire con Qdrant permite conectarse a bases de datos existentes de Qdrant o crear nuevas instancias utilizando la imagen de contenedor qdrant/qdrant.
Integración de hospedaje
La integración de alojamiento de Qdrant modela el servidor como el tipo QdrantServerResource. Para acceder a este tipo y API, agregue el 📦Aspire.Hosting.Qdrant paquete NuGet en el proyecto de host de la aplicación .
En el proyecto host de la aplicación, llame a AddQdrant para agregar y devolver un generador de recursos de Qdrant.
C#
var builder = DistributedApplication.CreateBuilder(args);
var qdrant = builder.AddQdrant("qdrant")
.WithLifetime(ContainerLifetime.Persistent);
builder.AddProject<Projects.ExampleProject>()
.WithReference(qdrant)
.WaitFor(qdrant);
// After adding all resources, run the app...
Oharra
El contenedor de Qdrant puede ser lento al iniciar, por lo que es mejor usar una vida útil 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 qdrant/qdrant, crea una nueva instancia de Qdrant en el equipo local. El recurso se denomina qdrant y, a continuación, se agrega al ExampleProject.
El método WithReference configura una conexión en el ExampleProject denominado qdrant.
La imagen de contenedor qdrant/qdrant incluye una interfaz de usuario web que puede usar para explorar los vectores y administrar la base de datos. Para acceder a esta herramienta, inicie la solución de .NET Aspire y, a continuación, en el panel de .NET Aspire, seleccione el punto de conexión para el recurso Qdrant. En la barra de direcciones del explorador, anexe /dashboard y presione Entrar.
Controlar las claves de API y pasar otros parámetros para el recurso Qdrant
Para conectarse a Qdrant, un cliente debe pasar la clave de API correcta. En el código anterior, cuando .NET.NET Aspire agrega un recurso Qdrant a la solución, establece la clave de API en una cadena aleatoria. Si quiere usar una clave de API específica en su lugar, puede pasarla como parámetro apiKey:
C#
var apiKey = builder.AddParameter("apiKey", secret: true);
var qdrant = builder.AddQdrant("qdrant", apiKey);
builder.AddProject<Projects.ExampleProject>()
.WithReference(qdrant);
Qdrant admite claves de API predeterminadas basadas en la configuración mediante la variable de entorno QDRANT__SERVICE__API_KEY.
El código anterior obtiene un parámetro para pasar a la API de AddQdrant y asigna internamente el parámetro a la variable de entorno QDRANT__SERVICE__API_KEY del contenedor de Qdrant. El parámetro apiKey normalmente se especifica como secreto de usuario:
Para agregar un volumen de datos al recurso Qdrant, llame al método de extensión WithDataVolume:
C#
var builder = DistributedApplication.CreateBuilder(args);
var qdrant = builder.AddQdrant("qdrant")
.WithLifetime(ContainerLifetime.Persistent)
.WithDataVolume();
builder.AddProject<Projects.ExampleProject>()
.WithReference(qdrant)
.WaitFor(qdrant);
// After adding all resources, run the app...
El volumen de datos se usa para conservar los datos de Qdrant fuera del ciclo de vida de su contenedor. El volumen de datos se monta en la ruta /qdrant/storage en el contenedor de Qdrant y cuando no se proporciona un parámetro name, el nombre se genera aleatoriamente. Para obtener más información sobre los volúmenes de datos y los detalles sobre por qué se prefieren a enlazar montajes, consulte Docker documentos: Volúmenes.
Adición de un recurso Qdrant con montaje de enlace de datos
Para añadir un montaje de enlace de datos al recurso Qdrant, llame al método WithDataBindMount:
C#
var builder = DistributedApplication.CreateBuilder(args);
var qdrant = builder.AddQdrant("qdrant")
.WithLifetime(ContainerLifetime.Persistent)
.WithDataBindMount(source: @"C:\Qdrant\Data");
builder.AddProject<Projects.ExampleProject>()
.WithReference(qdrant)
.WaitFor(qdrant);
// After adding all resources, run the app...
Garrantzitsua
Los montajes de datos tienen una funcionalidad limitada en comparación con los volúmenes , que ofrecen un mejor rendimiento, portabilidad y seguridad, lo que los hace más adecuados para entornos de producción. Sin embargo, los bind mounts permiten el acceso directo y la modificación de archivos en el sistema host, lo que es ideal para el desarrollo y las pruebas donde se necesitan cambios en tiempo real.
Los montajes vinculados de datos dependen del sistema de archivos de la máquina host para conservar los datos de Qdrant en los reinicios del contenedor. El montaje del enlace de datos se monta en la carpeta C:\Qdrant\Data de Windows (o /Qdrant/Data en Unix) en el equipo host del contenedor de Qdrant. Para obtener más información sobre los montajes de enlace de datos, consulte Docker documentos: Enlazar montajes.
Hospedaje de comprobaciones de estado de integración
La integración de hospedaje de Qdrant agrega automáticamente una comprobación de estado para el recurso Qdrant. La comprobación de estado comprueba que Qdrant se está ejecutando y que se puede establecer una conexión con él.
integración de Client
Para empezar a trabajar con la integración del cliente de .NET.NET Aspire Qdrant, instale el paquete NuGet 📦Aspire.Qdrant.Client en el proyecto consumidor, es decir, el proyecto de la aplicación que usa el cliente Qdrant. La integración del cliente de Qdrant registra un Qdrant.Client. QdrantClient instancia que puede usar para interactuar con los datos vectoriales de Qdrant.
En el archivo Program.cs del proyecto que consume el cliente, llame al método de extensión AddQdrantClient en cualquier IHostApplicationBuilder para registrar un QdrantClient para su uso mediante el contenedor de inyección de dependencias. El método toma un parámetro de nombre de conexión.
C#
builder.AddQdrantClient("qdrant");
Eskupekoa
El parámetro connectionName debe coincidir con el nombre usado al agregar el recurso Qdrant en el proyecto host de la aplicación. Es decir, cuando se llama a AddQdrant y se proporciona un nombre de qdrant ese mismo nombre se debe usar al llamar a AddQdrantClient. Para obtener más información, consulte Agregar recurso Qdrant.
A continuación, puede recuperar la instancia de QdrantClient mediante la inyección de dependencias. Por ejemplo, para recuperar la conexión de un servicio de ejemplo:
C#
publicclassExampleService(QdrantClient client)
{
// Use client...
}
Puede haber situaciones en las que quiera registrar varias instancias de QdrantClient con nombres de conexión diferentes. Para registrar clientes Qdrant con clave, llame al método AddKeyedQdrantClient:
A continuación, puede recuperar las instancias de QdrantClient mediante la inyección de dependencias. Por ejemplo, para recuperar las conexiones de un servicio de ejemplo:
La integración del cliente de Qdrant de .NET.NET Aspire proporciona varias opciones para configurar la conexión a Qdrant en función de los requisitos y convenciones del proyecto.
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.AddQdrantClient():
C#
builder.AddQdrantClient("qdrant");
A continuación, .NET.NET Aspire recupera la cadena de conexión de la sección de configuración de ConnectionStrings:
De forma predeterminada, el QdrantClient usa el endpoint de la API gRPC.
Uso de proveedores de configuración
La integración de cliente de .NET.NET Aspire Qdrant admite Microsoft.Extensions.Configuration. Carga el QdrantClientSettings desde la configuración mediante la clave Aspire:Qdrant:Client. A continuación se muestra un ejemplo de un appsettings.json que configura algunas de las opciones:
También puede pasar el delegado de Action<QdrantClientSettings> configureSettings para configurar algunas o todas las opciones en línea, por ejemplo, para establecer la clave de API desde el código.
De forma predeterminada, las integraciones de .NET.NET Aspire activan las comprobaciones de salud de para todos los servicios. Para obtener más información, consulte .NET.NET Aspire integrations overview.
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 .NET Aspire Qdrant usa el registro estándar .NET y verá entradas de registro de la siguiente categoría:
Qdrant.Client
Rastreo
La integración de .NET.NET Aspire Qdrant no emite actualmente actividades de seguimiento porque no son compatibles con la biblioteca de Qdrant.Client.
Métricas
La integración de Qdrant de .NET.NET Aspire no emite actualmente métricas porque no son compatibles con la biblioteca de Qdrant.Client.
Eduki honen iturburua GitHub-en aurki daiteke, bertan arazoak eta aldaketak egiteko eskaerak sortu eta berrikus ditzakezu. Informazio gehiagorako, ikusi gure kolaboratzaileen gida.
.NET Aspire oharrak
.NET Aspire iturburu irekiko proiektu bat da. Hautatu esteka bat oharrak bidaltzeko:
Bat egin IAren soluzio eskalagarrien soluzioak sortzeko topaketa sortarekin, mundu errealaren erabilera-kasuetan oinarrituak, beste garatzaile eta aditu batzuekin.
En este módulo, aprenderá a mover servicios de respaldo para la aplicación .NET Aspire hospedada en Azure desde contenedores a servicios nativos de Azure.
Aprenda a usar la integración de .NET AspireSeq para agregar exportadores del Protocolo de OpenTelemetry (OTLP) que envían registros y rastros a un SeqServer.
Aprenda a usar la .NET.NET Aspire integración de cliente y hospedaje de Meilisearch para ejecutar el contenedor Meilisearch y acceder a él a través del cliente de Meilisearch.
Obtenga información sobre cómo usar el hospedaje y la integración de cliente de .NET.NET Aspire EventStore para ejecutar el contenedor de EventStore y acceder a él a través del cliente de EventStore.