Fragmentación e inserción de datos integrados en Azure AI Search
La vectorización integrada es una extensión de las canalizaciones de indexación y consulta en Azure AI Search. Agrega las siguientes funcionalidades:
- Fragmentación de datos durante la indexación
- Conversión de texto a vector durante la indexación
- Conversión de texto a vector durante las consultas
La fragmentación de datos no es un requisito difícil, pero a menos que los documentos sin procesar sean pequeños, la fragmentación es necesaria para cumplir los requisitos de entrada del token de los modelos de inserción.
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).
La fragmentación y la vectorización de datos integrados aceleran el desarrollo y minimizan las tareas de mantenimiento durante la ingesta de datos y el tiempo de consulta, ya que hay menos componentes externos para configurar y administrar. Esta funcionalidad ya está disponible con carácter general.
Uso de la vectorización integrada durante la indexación
En el caso de las conversiones de fragmentación de datos y de texto a vector, se toma una dependencia de los siguientes componentes:
Un indexador, que recupera datos sin procesar de un origen de datos admitido y actúa como motor de canalización.
Un Índice vectorial para recibir el contenido fragmentado y vectorizado.
Un conjunto de aptitudes configurado para:
Aptitud División de texto, que se usa para fragmentar los datos.
Una aptitud de inserción, que se usa para generar matrices vectoriales, que puede ser cualquiera de las siguientes:
Aptitud AzureOpenAIEmbedding, adjuntada a text-embeding-ada-002,text-embedding-3-small, text-embedding-3-large en Azure OpenAI.
Aptitud personalizada que apunta a otro modelo de inserción en Azure o en otro sitio.
Aptitud de Azure AI Vision (versión preliminar) que apunta a la API multimodal para Azure AI Vision.
Aptitud AML que apunta al catálogo de modelos en Azure AI Studio que apunta a modelos seleccionados en el catálogo de modelos.
Uso de la vectorización integrada en consultas
Para la conversión de texto a vector durante las consultas, se toma una dependencia de estos componentes:
Consulta que especifica uno o varios campos vectoriales.
Cadena de texto que se convierte en un vector en el momento de la consulta.
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. El vectorizador configurado debe coincidir con el modelo de inserción que se usa para codificar el contenido.
Diagrama de componentes
En el diagrama siguiente se muestran los componentes de la vectorización integrada.
El flujo de trabajo es una canalización de indexadores. Los indexadores recuperan datos de orígenes de datos admitidos e inician el enriquecimiento de datos (o IA aplicada) mediante una llamada a los servicios de Azure OpenAI o Azure AI o código personalizado para conversiones de texto a vector u otro procesamiento.
El diagrama 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 vectorización integrada está disponible en todas las regiones y niveles. Sin embargo, si usa aptitudes y vectorizadores de Azure OpenAI y Azure AI, asegúrese de que la cuenta de varios servicios de Azure AI esté disponible en las mismas regiones que Búsqueda de Azure AI.
Si usa una aptitud personalizada y un mecanismo de hospedaje de Azure (como una aplicación de funciones de Azure, Azure Web App y Azure Kubernetes), consulte la página de producto por región de Azure 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. Para escenarios no vectoriales, puede que tenga una aplicación de búsqueda tipo chat en la que GPT ensambla respuestas a partir de fragmentos indexados. Puede 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:
- Agregar un vectorizador a un índice. Debe ser el mismo modelo de inserción que se usa para generar vectores en el índice.
- Asigne el vectorizador a un perfil de vector y, a continuación, asigne un perfil de vector al campo vectorial.
- 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:
- Crear una conexión de origen de datos a un origen de datos compatible para la indexación basada en indizadores.
- Crear un conjunto de aptitudes que llame a Aptitud División de texto para fragmentar y AzureOpenAIEmbeddingModel u otra aptitud de inserción para vectorizar los fragmentos.
- Crear un índice que especifique un vectorizador para el tiempo de consulta y asignarlo a los campos vectoriales.
- Crear un indizador para impulsar todo, desde la recuperación de datos hasta la ejecución del conjunto de aptitudes, mediante la indexación. Se recomienda ejecutar el indexador según una programación para recoger documentos modificados o cualquier documento que se perdiera debido a la limitación.
Opcionalmente, cree índices secundarios para escenarios avanzados en los que el contenido fragmentado se encuentra en un índice y no se aplica 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.
Protección de conexiones a vectorizadores y modelos
Si la arquitectura requiere conexiones privadas que omiten Internet, puede crear una conexión de vínculo privado compartido a los modelos de inserción usados por las aptitudes durante la indexación y vectorizadores en el momento de la consulta.
Los vínculos privados compartidos solo funcionan para las conexiones de Azure a Azure. Si se conecta a OpenAI u otro modelo externo, la conexión debe ser mediante la red pública de Internet.
En escenarios de vectorización, usaría lo siguiente:
openai_account
para insertar modelos hospedados en un recurso de Azure OpenAI.sites
para insertar modelos a los que se accede como una aptitud personalizada o vectorizador personalizado. El identificador de grupo desites
es para App services y Azure Functions, que puede usar para hospedar un modelo de inserción que no sea uno de los modelos de inserción de Azure OpenAI.
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.
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.
La lógica de procesamiento por lotes y reintento está integrada (no configurable). Azure AI Search tiene directivas de reintento internas para los errores de limitación que aparecen debido a que el punto de conexión de Azure OpenAI se limita al máximo en las cuotas de tokens para el modelo de inserción. Se recomienda colocar el indexador en una programación (por ejemplo, cada 5 minutos) para que el indexador pueda procesar las llamadas limitadas por el punto de conexión de Azure OpenAI a pesar de las directivas de reintento.
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 preguntas y respuestas o estilos de chat. El índice secundario contiene información granular para coincidencias más específicas, pero el índice primario tiene más información y a menudo puede generar una respuesta más completa. Cuando se encuentra una coincidencia en el índice secundario, la consulta devuelve el documento primario del índice principal. Suponiendo que contamos con un PDF grande como documento de origen, el índice principal puede tener información básica (título, fecha, autor, descripción) y un índice secundario tendría los fragmentos de contenido.