Ejemplos de Código del Almacén de Vectores del Kernel Semántico (Versión Preliminar)

Advertencia

La funcionalidad de almacenamiento de vectores del kernel semántico está en versión preliminar y las mejoras que requieren cambios importantes pueden producirse en circunstancias limitadas antes del lanzamiento.

Ejemplo de RAG de extremo a extremo con repositorios de vectores

Este ejemplo es una aplicación de consola independiente que muestra RAG mediante kernel semántico. El ejemplo tiene las siguientes características:

  1. Permite elegir servicios de chat e integración
  2. Permite elegir bases de datos vectoriales
  3. Lee el contenido de uno o varios archivos PDF y crea fragmentos para cada sección.
  4. Genera incrustaciones para cada fragmento de texto y la inserta en la base de datos vectorial elegida.
  5. Registra el almacén de vectores como complemento de búsqueda de texto con el kernel.
  6. Invoca el complemento para aumentar el mensaje proporcionado al modelo de IA con más contexto.

Para obtener dos ejemplos muy sencillos de cómo realizar la ingesta de datos en un almacén de vectores y realizar la búsqueda de vectores, consulte estos dos ejemplos, que usan almacenes de vectores Qdrant e InMemory para demostrar su uso.

Código común con varias tiendas

Los almacenes de vectores pueden diferir en determinados aspectos, por ejemplo, con respecto a los tipos de sus claves o los tipos de campos que admite cada uno. Incluso así, es posible escribir código independiente de estas diferencias.

Para obtener un ejemplo de ingesta de datos que muestre esto, consulte:

Para obtener un ejemplo de búsqueda vectorial que muestre el mismo concepto, consulte los ejemplos siguientes. Cada uno de estos ejemplos hace referencia al mismo código común y solo difiere en el tipo de almacén de vectores que crean para usarlo con el código común.

Compatibilidad con varios vectores en el mismo registro

Las abstracciones del almacén de vectores admiten varios vectores en el mismo registro, para las bases de datos vectoriales que admiten esto. En el ejemplo siguiente se muestra cómo crear algunos registros con varios vectores y elegir el vector de destino deseado al realizar una búsqueda de vectores.

Búsqueda vectorial con paginación

Al realizar la búsqueda de vectores con las abstracciones de la tienda de vectores, es posible usar los parámetros Top y Skip para admitir la paginación. Por ejemplo, debe crear un servicio que responda con un pequeño conjunto de resultados por solicitud.

Advertencia

No todas las bases de datos vectoriales admiten la funcionalidad Omitir de forma nativa para las búsquedas vectoriales, por lo que es posible que algunos conectores tengan que capturar los registros Skip + Top y omitir en el lado cliente para simular este comportamiento.

Uso del modelo de datos genérico frente al uso de un modelo de datos personalizado

Es posible usar las abstracciones del almacén de vectores sin definir un modelo de datos y definir el esquema a través de una definición de registro en su lugar. En este ejemplo se muestra cómo crear un almacén de vectores mediante un modelo personalizado y leer mediante el modelo de datos genérico o viceversa.

Sugerencia

Para obtener más información sobre el uso del modelo de datos genérico, consulte el uso de abstracciones del almacén de vectores sin definir su propio modelo de datos.

Uso de colecciones creadas e ingeridas mediante Langchain

Es posible usar las abstracciones del almacén de vectores para acceder a las colecciones creadas e ingeridas mediante un sistema diferente, por ejemplo, Langchain. Hay varios enfoques que se pueden seguir para que la interoperabilidad funcione correctamente. P ej.

  1. Crear un modelo de datos que coincida con el esquema de almacenamiento que usó la implementación de Langchain.
  2. Usar una definición de registro con nombres de propiedad de almacenamiento especiales para los campos.

En el ejemplo siguiente, se muestra cómo usar estos enfoques para construir implementaciones de almacén vectorial compatibles con Langchain.

Para cada almacén de vectores, hay una clase de fábrica que muestra cómo construir el almacén de vectores compatible con Langchain. Vea, por ejemplo,

Ejemplo de extremo a extremo de RAG con el almacén de vectores de búsqueda de Azure AI

Este ejemplo es un conjunto de dos scripts, el primero que muestra los conceptos básicos de configuración del almacén de vectores de Azure AI Search y el segundo que muestra cómo crear un complemento a partir de él y usarlo para realizar RAG.

  1. Explicación del modelo de datos y cómo configurar Azure AI Search para este ejemplo
  2. Creación de registros, adición de vectores y actualización de registros en Azure AI Search
  3. Usar la misma conexión y modelo de datos para crear funciones personalizadas que se pueden usar con llamadas automáticas a funciones para rag avanzados

Ingesta de datos simple y búsqueda de vectores

También tenemos un ejemplo que muestra los conceptos básicos de la creación de la colección, para agregar registros, para finalmente realizar búsquedas, esto se puede iniciar con diferentes almacenes de vectores.

Ingesta de datos simple y búsqueda de vectores

Para obtener ejemplos sencillos de cómo realizar la ingesta de datos en un almacén de vectores y realizar la búsqueda de vectores, consulte estos ejemplos, que usan Azure AI Search, JDBC con PostgreSQL, Redis y en almacenes de vectores en memoria.