Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Las bases de datos vectoriales almacenan y administran las incrustaciones de vectores. Las incrustaciones son representaciones numéricas de datos 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.
Descripción del vector de búsqueda
Las bases de datos vectoriales proporcionan capacidades de búsqueda de vectores para encontrar elementos similares según sus características de datos, en lugar de coincidencias exactas en un campo de propiedades. La búsqueda vectorial 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 que son más similares semánticamente.
Algunos servicios, como Azure Cosmos DB para núcleo virtual de MongoDB, proporcionan funcionalidades de búsqueda de vectores nativas para los datos. Otras bases de datos se pueden mejorar con búsquedas vectoriales mediante la indexación de los datos almacenados usando un servicio como Azure AI Search, que puede escanear e indexar tus datos para proporcionar capacidades de búsqueda vectorial.
Flujos de trabajo de búsqueda vectorial 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 le permite mejorar su modelo de inteligencia artificial con conocimientos adicionales semánticamente ricos de sus datos. Un flujo de trabajo de IA común mediante bases de datos vectoriales incluye estos pasos:
- Cree embeddings para sus datos mediante un modelo de embeddings de OpenAI.
- Almacene e indexe las inserciones en una base de datos de vectores o un servicio de búsqueda.
- Convierta las solicitudes de usuario de tu aplicación en embeddings.
- Ejecute una búsqueda de vectores en los datos, comparando la inserción del usuario con las incrustaciones de la base de datos.
- Use un modelo de lenguaje como gpt-4o para ensamblar una finalización fácil de usar a partir de los resultados de la búsqueda vectorial.
Para ver un ejemplo práctico de este flujo, consulte el tutorial Implementación de Azure OpenAI con RAG mediante la búsqueda de vectores en una aplicación .NET .
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.
- Superar los límites de token de LLM: el trabajo pesado se realiza a través de la búsqueda de vectores de base de datos.
- La reducción de los costos del ajuste frecuente de los datos actualizados.
La biblioteca Microsoft.Extensions.VectorData
El 📦 paquete Microsoft.Extensions.VectorData.Abstractions proporciona una capa unificada de abstracciones para interactuar con almacenes de vectores en .NET. Estas abstracciones permiten escribir código en una sola API y intercambiar el almacén de vectores subyacente con cambios mínimos en la aplicación.
La biblioteca proporciona las siguientes funcionalidades clave:
- Modelo de datos unificado: defina el modelo de datos una vez mediante atributos de .NET y úselo en cualquier almacén de vectores admitido.
- Operaciones CRUD: crear, leer, actualizar y eliminar registros en un almacén de vectores.
- Búsqueda de vectores y texto: consulta los registros por similitud semántica mediante la búsqueda vectorial o por palabra clave mediante la búsqueda de texto.
- Administración de colecciones: crear, enumerar y eliminar colecciones (tablas o índices) en un almacén de vectores.
Abstracciones clave
La Microsoft.Extensions.VectorData.Abstractions biblioteca expone las siguientes clases abstractas principales:
- VectorStore: clase de nivel superior para una base de datos vectorial. Úselo para recuperar y administrar colecciones.
-
VectorStoreCollection<TKey,TRecord>: Representa una colección de registros con nombre dentro de un almacén de vectores. Úselo para realizar operaciones CRUD y de búsqueda. También implementa
IVectorSearchable<TRecord>. - IKeywordHybridSearchable<TRecord>: se implementa mediante colecciones que admiten la búsqueda híbrida, combinando la similitud de vectores con coincidencia de palabras clave.
Para obtener una guía paso a paso sobre la definición del modelo de datos, las operaciones CRUD, la búsqueda vectorial, el filtrado, la búsqueda híbrida y la generación de inserción, consulte Uso de almacenes de vectores en aplicaciones de IA de .NET.
Proveedores de almacén de vectores
El Microsoft.Extensions.VectorData.Abstractions paquete define las abstracciones y los paquetes de proveedor independientes proporcionan implementaciones para bases de datos vectoriales específicas. Elija el proveedor que coincida con la base de datos vectorial, por ejemplo, Microsoft.SemanticKernel.Connectors.AzureAISearch.
Nota:
A pesar de la inclusión de "SemanticKernel" en los nombres de paquete, estos proveedores no tienen nada que ver con el kernel semántico y se pueden usar en cualquier parte de .NET, incluido Agent Framework.
Todos los proveedores implementan las mismas VectorStore clases abstractas y VectorStoreCollection<TKey,TRecord> , por lo que puede cambiar entre ellos sin cambiar la lógica de la aplicación.
Sugerencia
Use el proveedor en memoria (Microsoft.SemanticKernel.Connectors.InMemory) durante el desarrollo y las pruebas. No requiere ningún servicio externo ni configuración, y puede intercambiarlo para un proveedor de producción más adelante.