Comparteix a través de


Bases de datos vectoriales para .NET con AI

Las bases de datos vectoriales están diseñadas para almacenar y administrar inserciones de vectores. Las inserciones son representaciones numéricas de datos no numéricos que conservan el significado semántico. Palabras, documentos, imágenes, audio y otros tipos de datos se pueden vectorizar. Puede usar inserciones para ayudar a un modelo de inteligencia artificial a comprender el significado de las entradas para que pueda realizar comparaciones y transformaciones, como resumir texto, buscar datos relacionados contextualmente o crear imágenes a partir de descripciones de texto.

Por ejemplo, puede usar una base de datos vectorial para:

  • Identifique imágenes, documentos y canciones similares en función de su contenido, temas, sentimientos y estilos.
  • Identifique productos similares en función de sus características, funciones y grupos de usuarios.
  • Recomiende el contenido, productos o servicios en función de las preferencias del usuario.
  • Identifique las mejores opciones posibles de un gran grupo de opciones para cumplir los requisitos complejos.
  • Identifique anomalías de datos o actividades fraudulentas que no sean similares a los patrones predominantes o normales.

Las bases de datos vectoriales proporcionan capacidades de vectores de búsqueda para buscar elementos similares en función de sus características de datos en lugar de coincidencias exactas en un campo de propiedad. El vector de búsqueda funciona mediante el análisis de las representaciones vectoriales de los datos que creó mediante un modelo de inserción de IA, como los modelos de inserción de Azure OpenAI. El proceso de búsqueda mide la distancia entre los vectores de datos y el vector de consulta. Los vectores de datos más cercanos al vector de consulta son los más similares semánticamente.

Algunos servicios como el núcleo virtual de Azure Cosmos DB for MongoDB proporcionan capacidades de vector de búsqueda nativas para los datos. Otras bases de datos se pueden mejorar con el vector de búsqueda mediante la indexación de los datos almacenados mediante un servicio como Búsqueda de Azure AI, que puede examinar e indexar los datos para proporcionar capacidades de vector de búsqueda.

Flujos de trabajo de vector de búsqueda con .NET y OpenAI

Las bases de datos vectoriales y sus características de búsqueda son especialmente útiles en los flujos de trabajo de patrones RAG con Azure OpenAI. Este patrón permite aumentar o mejorar el modelo de inteligencia artificial con conocimientos semánticos adicionales de los datos. Un flujo de trabajo de IA común mediante bases de datos vectoriales puede incluir los pasos siguientes:

  1. Cree inserciones para los datos mediante un modelo de inserción de OpenAI.
  2. Almacene e indexe las inserciones en una base de datos de vectores o un servicio de búsqueda.
  3. Convierta las solicitudes de usuario de la aplicación en inserciciones.
  4. Ejecute un vector de búsqueda en los datos, comparando la inserción de solicitudes de usuario en las inserciones de la base de datos.
  5. Use un modelo de lenguaje como GPT-35 o GPT-4 para ensamblar una finalización fácil de usar a partir de los resultados del vector de búsqueda.

Consulte el tutorial Implementación de Azure OpenAI con RAG mediante el vector de búsqueda en una aplicación .NET para ver un ejemplo práctico de este flujo.

Entre otras ventajas del patrón RAG se incluyen:

  • La generación de respuestas contextualmente relevantes y precisas a las solicitudes del usuario a partir de modelos de inteligencia artificial.
  • La superación de los límites de tokens de LLM: el trabajo pesado se realiza a través del vector de búsqueda de base de datos.
  • La reducción de los costos del ajuste frecuente de los datos actualizados.

Soluciones de base de datos vectoriales disponibles

Las aplicaciones de inteligencia artificial suelen usar bases de datos y servicios de vectores de datos para mejorar la relevancia y proporcionar funcionalidad personalizada. Muchos de estos servicios proporcionan un SDK nativo para .NET, mientras que otros ofrecen un servicio REST al que puede conectarse mediante código personalizado. El kernel semántico proporciona un modelo de componentes extensible que permite usar diferentes almacenes vectoriales sin necesidad de conocer cada SDK.

El kernel semántico proporciona conectores para las siguientes bases de datos y servicios vectoriales:

Servicio vectorial Conector de kernel semántico SDK de .NET
Azure AI Search Microsoft.SemanticKernel.Connectors.AzureAISearch Azure.Search.Documents
Azure Cosmos DB para NoSQL Microsoft.SemanticKernel.Connectors.AzureCosmosDBNoSQL Microsoft.Azure.Cosmos
Azure Cosmos DB for MongoDB Microsoft.SemanticKernel.Connectors.AzureCosmosDBMongoDB MongoDb.Driver
Azure PostgreSQL Server Microsoft.SemanticKernel.Connectors.Postgres Npgsql
Azure SQL Database Microsoft.SemanticKernel.Connectors.SqlServer Microsoft.Data.SqlClient
Chroma Microsoft.SemanticKernel.Connectors.Cro N/D
DuckDB Microsoft.SemanticKernel.Connectors.DuckDB DuckDB.NET.Data.Full
Milvus Microsoft.SemanticKernel.Connectors.Milvus Milvus.Client
Vector de búsqueda de MongoDB Atlas Microsoft.SemanticKernel.Connectors.MongoDB MongoDb.Driver
Pinecone Microsoft.SemanticKernel.Connectors.Pinecone REST API
Postgres Microsoft.SemanticKernel.Connectors.Postgres Npgsql
Qdrant Microsoft.SemanticKernel.Connectors.Qdrant Qdrant.Client
Redis Microsoft.SemanticKernel.Connectors.Redis StackExchange.Redis
Weaviate Microsoft.SemanticKernel.Connectors.Weaviate REST API

Visite la documentación de cada servicio correspondiente para detectar la compatibilidad con el SDK y la API de .NET.