Fragmentación e inserción de datos integrados en Azure AI Search

Importante

Esta característica se encuentra en versión preliminar pública en los Términos de uso complementarios. La API de REST 2023-10-01-Preview admite esta característica.

La vectorización integrada agrega fragmentación de datos e inserción de texto a vector a aptitudes en la indexación basada en indexadores. También agrega conversiones de texto a vector a las consultas.

Esta función está solo en versión preliminar. En la versión disponible con carácter general de vector de búsqueda y en versiones preliminares anteriores, la fragmentación de datos y la vectorización dependen de componentes externos para fragmentación y vectores, y el código de la aplicación debe controlar y coordinar cada paso. En esta versión preliminar, la fragmentación y la vectorización se integran en la indexación mediante aptitudes e indexadores. Puedes configurar un conjunto de aptitudes que fragmenta los datos mediante la aptitud División de texto y, a continuación, llamar a un modelo de inserción mediante la aptitud AzureOpenAIEmbedding o una aptitud personalizada. También se puede llamar a los vectorizadores usados durante la indexación en consultas para convertir texto en vectores.

Para la indexación, la vectorización integrada requiere:

Para consultas:

  • Un vectorizador definido en el esquema de índice, asignado a un campo vectorial y usado automáticamente en el momento de la consulta para convertir una consulta de texto en un vector.

Las conversiones de vectores son unidireccionales: texto a vector. No hay ninguna conversión de vector a texto para consultas o resultados (por ejemplo, no se puede convertir un resultado vectorial en una cadena legible).

Diagrama de componentes

En el diagrama siguiente se muestran los componentes de la vectorización integrada.

Diagrama de componentes en un flujo de trabajo de vectorización integrado.

Esta es una lista de comprobación de los componentes responsables de la vectorización integrada:

  • Un origen de datos compatible para la indexación basada en indexadores.
  • Índice que especifica campos vectoriales y una definición de vectorizador asignada a campos vectoriales.
  • Conjunto de aptitudes que proporciona una aptitud de División de texto para la fragmentación de datos y una aptitud para la vectorización (la aptitud AzureOpenAiEmbedding o una aptitud personalizada que apunta a un modelo de inserción externo).
  • Opcionalmente, las proyecciones de índice (también definidas en un conjunto de aptitudes) para insertar datos fragmentados en un índice secundario
  • Un modelo de inserción, implementado en Azure OpenAI o disponible a través de un punto de conexión HTTP.
  • Indizador para impulsar el proceso de un extremo a otro. Un indizador también especifica una programación, asignaciones de campos y propiedades para la detección de cambios.

Esta lista de comprobación se centra en la vectorización integrada, pero la solución no se limita a esta lista. Puedes agregar más aptitudes para el enriquecimiento con IA, crear un almacén de conocimiento, agregar clasificación semántica, agregar optimización de relevancia y otras características de consulta.

Disponibilidad y precios

La disponibilidad de vectorización integrada se basa en el modelo de inserción. Si usas Azure OpenAI, comprueba la disponibilidad regional.

Si usas una aptitud personalizada y un mecanismo de hospedaje de Azure (como una aplicación de funciones de Azure, Azure Web App y Azure Kubernetes), consulta la página de producto por región para obtener la disponibilidad de las características.

La fragmentación de datos (aptitud División de texto) es gratuita y está disponible en todos los servicios de Azure AI en todas las regiones.

Nota:

Algunos servicios de búsqueda anteriores creados antes del 1 de enero de 2019 se implementan en la infraestructura que no admite cargas de trabajo vectoriales. Si intentas agregar un campo vectorial a un esquema y recibes un error, se trata de un resultado de servicios obsoletos. En esta situación, debes crear un nuevo servicio de búsqueda para probar la característica del vector.

¿Qué escenarios son compatibles con la vectorización integrada?

  • Subdividir documentos grandes en fragmentos, útiles para escenarios vectoriales y no vectoriales. En el caso de los vectores, los fragmentos te ayudan a cumplir las restricciones de entrada de los modelos de inserción. En escenarios no vectoriales, es posible que tengas una aplicación de búsqueda de estilo de chat en la que GPT ensambla las respuestas de fragmentos indexados. Puedes usar fragmentos vectorizados o no vectorizados para la búsqueda de estilo de chat.

  • Crea un almacén de vectores donde todos los campos sean campos vectoriales y el identificador de documento (necesario para un índice de búsqueda) es el único campo de cadena. Consulte el almacén de vectores para recuperar identificadores de documento y, a continuación, envíe los campos vectoriales del documento a otro modelo.

  • Combina campos vectoriales y de texto para la búsqueda híbrida, con o sin clasificación semántica. La vectorización integrada simplifica todos los escenarios compatibles con el vector de búsqueda.

Cuándo usar la vectorización integrada

Se recomienda usar la compatibilidad integrada de vectorización de Azure AI Studio. Si este enfoque no satisface tus necesidades, puedes crear indizadores y conjuntos de aptitudes que invoquen la vectorización integrada a través de las interfaces mediante programación de Azure AI Search.

Cómo usar la vectorización integrada

Para la vectorización de solo consulta:

  1. Agregar un vectorizador a un índice. Debe ser el mismo modelo de inserción que se usa para generar vectores en el índice.
  2. Asigne el vectorizador a un perfil de vector y, a continuación, asigne un perfil de vector al campo vectorial.
  3. Formula una consulta vectorial que especifique la cadena de texto que se va a vectorizar.

Un escenario más común, fragmentación y vectorización de datos durante la indexación:

  1. Crear una conexión de origen de datos a un origen de datos compatible para la indexación basada en indizadores.
  2. Crear un conjunto de aptitudes que llame a la aptitud de División de texto para la fragmentación y AzureOpenAIEmbeddingModel o una aptitud personalizada para vectorizar los fragmentos.
  3. Crear un índice que especifique un vectorizador para el tiempo de consulta y asignarlo a los campos vectoriales.
  4. Crear un indizador para impulsar todo, desde la recuperación de datos hasta la ejecución del conjunto de aptitudes, mediante la indexación.

Opcionalmente, crear índices secundarios para escenarios avanzados en los que el contenido fragmentado está en un índice y el no fragmentado en otro índice. Los índices fragmentados (o los índices secundarios) son útiles para las aplicaciones RAG.

Sugerencia

Prueba el nuevo asistente para importar y vectorizar datos en Azure Portal para explorar la vectorización integrada antes de escribir código.

O bien, configura un cuaderno Jupyter para ejecutar el mismo flujo de trabajo, celda por celda, para ver cómo funciona cada paso.

Limitaciones

Asegúrate de conocer los límites y cuotas de Azure OpenAI para insertar modelos. Azure AI Search tiene directivas de reintento, pero si se agota la cuota, se producirá un error en los reintentos.

Los límites de token por minuto de Azure OpenAI son por modelo, por suscripción. Ten esto en cuenta si usas un modelo de inserción para cargas de trabajo de consulta e indexación. Si es posible, sigue los procedimientos recomendados. Ten un modelo de inserción para cada carga de trabajo e intenta implementarlo en distintas suscripciones.

En Azure AI Search, recuerda que hay límites de servicio por nivel y cargas de trabajo.

Por último, las siguientes características no se admiten actualmente:

Ventajas de la vectorización integrada

Estas son algunas de las principales ventajas de la vectorización integrada:

  • No hay canalización de fragmentación y vectorización de datos independientes. El código es más sencillo de escribir y mantener.

  • Automatización de la indexación de un extremo a otro. Cuando los datos cambian en el origen (por ejemplo, en Azure Storage, Azure SQL o Cosmos DB), el indizador puede mover esas actualizaciones a través de toda la canalización, desde la recuperación hasta el descifrado de documentos, mediante el enriquecimiento con IA opcional, la fragmentación de datos, la vectorización y la indexación.

  • Proyectar contenido fragmentado a índices secundarios. Los índices secundarios se crean como lo haría con cualquier índice de búsqueda (un esquema con campos y otras construcciones), pero se rellenan junto con un índice principal por un indizador. El contenido de cada documento de origen fluye a los campos de los índices principales y secundarios durante la misma ejecución de indexación.

    Los índices secundarios están diseñados para aplicaciones de fragmentación de datos y generación aumentada de recuperación (RAG). Suponiendo que contamos con un PDF grande como documento de origen, el índice principal podría tener información básica (título, fecha, autor, descripción) y un índice secundario tendría los fragmentos de contenido. La vectorización en el nivel de fragmento de datos facilita la búsqueda de información relevante (se puede buscar cada fragmento) y devuelve una respuesta relevante, especialmente en una aplicación de búsqueda de estilo de chat.

Índices fragmentados

La fragmentación es el proceso de dividir el contenido en partes más pequeñas administrables (fragmentos) que se pueden procesar de forma independiente. La fragmentación es necesaria si los documentos de origen son demasiado grandes para el tamaño máximo de entrada de incrustación o modelos de lenguaje de gran tamaño, pero es posible que encuentres que proporciona una mejor estructura de índice para patrones RAG y búsqueda de estilo de chat.

En el diagrama siguiente se muestran los componentes de la indexación fragmentada.

Diagrama del flujo de trabajo de fragmentación y vectorización.

Pasos siguientes