Vectores de Búsqueda de Azure AI
La búsqueda vectorial es un enfoque en la recuperación de información que admite la indexación y la ejecución de consultas en representaciones numéricas del contenido. Dado que el contenido es numérico en lugar de texto sin formato, la coincidencia se basa en vectores que son más similares al vector de consulta, lo que permite la coincidencia entre:
- semántica o similitud conceptual ("perro" y "canino", conceptualmente similar pero lingüísticamente distinta)
- contenido multilingüe ("perro" en inglés y "hund" en alemán)
- varios tipos de contenido ("perro" en texto sin formato y una fotografía de un perro en un archivo de imagen)
En este artículo se proporciona una introducción general a los vectores en Azure AI Search. También se explica la integración con otros servicios de Azure y se tratan terminología y conceptos relacionados con el desarrollo de vectores de búsqueda.
Si necesita información general, le recomendamos este artículo, pero si prefiere empezar a trabajar, siga estos pasos:
- Incluya incrustaciones en el índice o genere inserciones en una canalización del indexador
- Crear un índice vectorial
- Ejecutar consultas vectoriales
También puedes comenzar con el inicio rápido del vector de los ejemplos de código de GitHub.
¿Qué escenarios son compatibles con el vector de búsqueda?
Entre los escenarios de vector de búsqueda se incluyen:
Búsqueda de similitud. Codifica texto mediante modelos de incrustaciones, como incrustaciones de OpenAI o modelos de código abierto, como SBERT, y recupera documentos con consultas que también se codifican como vectores.
Busque en diferentes tipos de contenido (multimodal). Codifique imágenes y texto mediante incrustaciones bidireccionales (por ejemplo, con OpenAI CLIP o GPT-4 Turbo con Vision en Azure OpenAI) y consulte un espacio de inserción compuesto por vectores de ambos tipos de contenido.
Búsqueda híbrida. En Azure AI Search, la búsqueda híbrida hace referencia a la ejecución de consultas vectoriales y de palabras clave en la misma solicitud. La compatibilidad con vectores se implementa en el nivel de campo, con un índice que contiene campos vectoriales y campos de texto que se pueden buscar. Las consultas se ejecutan en paralelo y los resultados se combinan en una única respuesta. Opcionalmente, añada una clasificación semántica para obtener más precisión con la reorganización L2 con los mismos modelos de lenguaje que potencian Bing.
Búsqueda multilingüe. Proporcionar una experiencia de búsqueda en el lenguaje propio de los usuarios es posible mediante la inserción de modelos y modelos de chat entrenados en varios idiomas. Si necesita más control sobre la traducción, puede complementar con las funcionalidades de varios idiomas que Búsqueda de Azure AI admite para contenido no vectorial en escenarios de búsqueda híbrida.
Vector de búsqueda filtrado. Una solicitud de consulta puede incluir una consulta vectorial y una expresión de filtro. Los filtros se aplican a campos numéricos y de texto, y son útiles para filtros de metadatos y para incluir o excluir resultados de búsqueda en función de los criterios de filtro. Aunque un campo vectorial no se puede filtrar por sí mismo, puedes configurar un campo numérico o texto filtrable. El motor de búsqueda puede procesar el filtro antes o después de que se ejecute la consulta vectorial.
Base de datos de vectores. Búsqueda de Azure AI almacena los datos que se consultan. Úselo como un almacén de vectores puro cada vez que necesite memoria a largo plazo o una base de conocimiento, o datos de base de conocimiento para arquitectura de generación aumentada de recuperación (RAG), o cualquier aplicación que use vectores.
Funcionamiento del vector de búsqueda en Búsqueda de Azure AI
La compatibilidad con vectores incluye la indexación, el almacenamiento y la consulta de incrustaciones de vectores desde un índice de búsqueda.
En el diagrama siguiente se muestran los flujos de trabajo de indexación y consulta para el vector de búsqueda.
En el lado de la indexación, Búsqueda de Azure AI toma incrustaciones de vectores y usa un algoritmo de vecino más próximo para colocar vectores similares cerca en un índice. Internamente, crea índices vectoriales para cada campo vectorial.
La forma de obtener inserciones del contenido de origen en Azure AI Search depende de si desea realizar el trabajo dentro de una canalización de indexación de Búsqueda de Azure AI o externamente. Búsqueda de Azure AI ofrece fragmentación y vectorización de datos integrados en una canalización de indexador. Todavía proporciona los recursos (puntos de conexión e información de conexión a Azure OpenAI), pero Búsqueda de Azure AI realiza todas las llamadas y controla las transiciones. Este enfoque requiere un indexador, un origen de datos compatible y un conjunto de aptitudes que impulsa la fragmentación y la incrustación. Otra opción es controlar toda la vectorización por separado y, después, insertar contenido prevectorizado en los campos vectoriales de un almacén de vectores.
En el lado de la consulta, en la aplicación cliente, recopilará la entrada de consulta de un usuario, normalmente a través de un flujo de trabajo de solicitud. Luego, puede añadir un paso de codificación que convierta la entrada en un vector y, a continuación, enviar la consulta vectorial al índice en Búsqueda de Azure AI para obtener una búsqueda de similitud. Al igual que con la indexación, puede implementar la vectorización integrada para convertir la pregunta en un vector. Para cualquier enfoque, Búsqueda de Azure AI devuelve los documentos con los vecinos más próximos k
(kNN) solicitados en los resultados.
Búsqueda de Azure AI admite escenarios híbridos que ejecutan la búsqueda de vectores y palabras clave en paralelo y devuelve un conjunto de resultados unificado que a menudo proporciona mejores resultados que solo la búsqueda de vectores o palabras clave. Para el contenido híbrido, vectorial y no vectorial, se ingiere en el mismo índice para las consultas que se ejecutan en paralelo.
Disponibilidad y precios
El vector de búsqueda está disponible como parte de todos los niveles de Azure AI Search en todas las regiones sin cargo adicional.
Los servicios más recientes creados después del 3 de abril de 2024 admiten cuotas más altas para los índices de vectores.
El vector de búsqueda está disponible en:
- Azure Portal: Asistente para importar y vectorizar datos
- API REST de Azure
- SDK de Azure para .NET, Python y JavaScript
- Otras ofertas de Azure, como Estudio de IA de Azure.
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.
Integración de Azure y servicios relacionados
Búsqueda de Azure AI está profundamente integrado en la plataforma de Azure AI. En la tabla siguiente se enumeran varios que son útiles en las cargas de trabajo vectoriales.
Producto | Integración |
---|---|
Azure AI Studio | En el chat con el área de juegos de datos, Agregar sus propios datos usa Búsqueda de Azure AI para conectar datos y búsqueda conversacional. Este es el enfoque más sencillo y rápido para chatear con sus datos. |
Azure OpenAI | Azure OpenAI proporciona modelos de inserción y modelos de chat. Las demos y los ejemplos tienen como destino text-embedding-ada-002. Se recomienda Azure OpenAI para generar incrustaciones para texto. |
Servicios de Azure AI | Image Retrieval Vectorize Image API(Preview) admite la vectorización del contenido de la imagen. Se recomienda esta API para generar incrustaciones de imágenes. |
Plataformas de datos de Azure: Azure Blob Storage, Azure Cosmos DB | Puede usar indexadores para automatizar la ingesta de datos y, después, usar la vectorización integrada para generar inserciones. Azure AI Search puede indexar automáticamente datos vectoriales de dos orígenes de datos: indexadores de blobs de Azure e indexadores de Azure Cosmos DB for NoSQL. Para más información, consulte Agregar campos vectoriales a un índice de búsqueda. |
También se usa normalmente en marcos de código abierto como LangChain.
Conceptos del vector de búsqueda
Si no está familiarizado con los vectores, en esta sección se explican algunos conceptos básicos.
Acerca del vector de búsqueda
El vector de búsqueda es un método de recuperación de información donde los documentos y las consultas se representan como vectores en lugar de texto sin formato. En el vector de búsqueda, los modelos de Machine Learning generan las representaciones vectoriales de las entradas de origen, que pueden ser texto, imágenes u otros contenidos. Tener una representación matemática del contenido proporciona una base común para escenarios de búsqueda. Si todo es un vector, una consulta puede encontrar una coincidencia en el espacio vectorial, incluso si el contenido original asociado está en medios o lenguajes diferentes a los de la consulta.
Por qué usar un vector de búsqueda
Cuando el contenido que se puede buscar se representa como vectores, una consulta puede encontrar coincidencias cercanas en contenido similar. El modelo de inserción usado para la generación de vectores sabe qué palabras y conceptos son similares y coloca los vectores resultantes cerca en el espacio de inserción. Por ejemplo, es más probable que los documentos de origen vectorizados sobre "nubes" y "niebla" aparezcan en una consulta sobre "neblina" porque son semánticamente similares, incluso si no son una coincidencia léxica.
Incrustaciones y vectorización
Las incrustaciones son un tipo específico de representación vectorial del contenido o una consulta, creada por modelos de aprendizaje automático que capturan el significado semántico de texto o representaciones de otro contenido, como imágenes. Los modelos de aprendizaje automático de lenguaje natural se entrenan en grandes cantidades de datos para identificar patrones y relaciones entre palabras. Durante el entrenamiento, aprenden a representar cualquier entrada como vector de números reales en un paso intermediario denominado codificador. Una vez completado el entrenamiento, estos modelos de lenguaje se pueden modificar para que la representación vectorial intermedia se convierta en el resultado del modelo. Las incrustaciones resultantes son vectores de alta dimensión, donde las palabras con significados similares están más cerca en el espacio vectorial, como se explica en Descripción de las incrustaciones (Azure OpenAI).
La eficacia del vector de búsqueda en la recuperación de información relevante depende de la eficacia del modelo de inserción en la destilación del significado de documentos y consultas en el vector resultante. Los mejores modelos están bien entrenados en los tipos de datos que representan. Puedes evaluar modelos existentes, como Azure OpenAI text-embeding-ada-002, usar tu propio modelo entrenado directamente en el espacio del problema o ajustar un modelo de uso general. Azure AI Search no impone restricciones en el modelo que elijas, así que elige el que sea mejor para los datos.
Para crear incrustaciones eficaces para la búsqueda de vectores, es importante tener en cuenta las limitaciones de tamaño de entrada. Se recomienda seguir las instrucciones para fragmentar los datos antes de generar incrustaciones. Este procedimiento recomendado garantiza que las incrustaciones capturen con precisión la información pertinente y permitan un vector de búsqueda más eficaz.
¿Cuál es el espacio de inserción?
El espacio de inserción es el corpus para las consultas vectoriales. Dentro de un índice de búsqueda, un espacio de inserción es todos los campos vectoriales que se rellenan con incrustaciones del mismo modelo de inserción. Los modelo de Machine Learning crean el espacio de inserción mediante la asignación de palabras, frases o documentos individuales (para el procesamiento de lenguaje natural), imágenes u otras formas de datos en una representación compuesta por un vector de números reales que representan una coordenada en un espacio dimensional. En este espacio de inserción, los elementos similares se encuentran cerca y los elementos disimilares se encuentran más lejos.
Por ejemplo, los documentos que hablan de diferentes especies de perros se agruparían cerca en el espacio de inserción. Los documentos sobre gatos estarían cerca, pero más lejos del clúster de perros, aunque todavía en el vecindario de animales. Los conceptos que no sean similares, como la informática en la nube, estarían mucho más lejos. En la práctica, estos espacios de inserción son abstractos y no tienen significados bien definidos e interpretables, pero la idea principal es la misma.
Búsqueda de vecinos más próximos
En los vectores de búsqueda, el motor de búsqueda examina los vectores dentro del espacio de inserción para identificar los vectores más cercanos al vector de consulta. Esta técnica se denomina búsqueda de vecinos más próximos. Los vecinos más próximos ayudan a cuantificar la similitud entre los elementos. Un alto grado de similitud vectorial indica que los datos originales también eran similares. Para facilitar la búsqueda del vecino más próximo, el motor de búsqueda realiza optimizaciones o emplea estructuras de datos y creación de particiones de datos para reducir el espacio de búsqueda. Cada algoritmo de vector de búsqueda resuelve los problemas del vecino más próximo de diferentes maneras a medida que optimizan la latencia mínima, el rendimiento máximo, la coincidencia y la memoria. Para calcular la similitud, las métricas de similitud proporcionan el mecanismo para calcular la distancia.
Azure AI Search admite actualmente los siguientes algoritmos:
Mundo pequeño navegable jerárquico (HNSW): HNSW es un algoritmo ANN líder optimizado para aplicaciones de alta recuperación y baja latencia en las que la distribución de datos es desconocida o puede cambiar con frecuencia. Organiza puntos de datos de alta dimensión en una estructura jerárquica de grafos que permite una búsqueda de similitud rápida y escalable, a la vez que permite un equilibrio entre la precisión de búsqueda y el coste computacional. Dado que el algoritmo requiere que todos los puntos de datos residan en la memoria para el acceso aleatorio rápido, este algoritmo consume una cuota del tamaño del índice vectorial.
Vecinos más próximos k (KNN) exhaustivo: calcula las distancias entre el vector de consulta y todos los puntos de datos. Es de gran uso computacional, por lo que funciona mejor para conjuntos de datos más pequeños. Dado que el algoritmo no requiere acceso aleatorio rápido de puntos de datos, este algoritmo no consume la cuota de tamaño del índice de vectores. Sin embargo, este algoritmo proporciona el conjunto global de vecinos más próximos.
Para usar estos algoritmos, consulte Creación de un campo vectorial, donde encontrará instrucciones sobre cómo especificar el algoritmo, los perfiles vectoriales y la asignación de perfiles.
Los parámetros de algoritmo que se usan para inicializar el índice durante la creación del índice son inmutables y no se pueden cambiar después de compilar el índice. Sin embargo, los parámetros que afectan a las características en tiempo de consulta (efSearch
) se pueden modificar.
Además, los campos que especifican el algoritmo HNSW también admiten una búsqueda de KNN exhaustivo mediante el parámetro query request "exhaustive": true
. Sin embargo, lo contrario no es cierto. Si un campo está indexado para exhaustiveKnn
, no se puede usar HNSW en la consulta porque las estructuras de datos adicionales que permiten una búsqueda eficaz no existen.
Vecinos más próximos aproximados
La búsqueda de vecino más próximo aproximada (ANN) es una clase de algoritmos para buscar coincidencias en el espacio vectorial. Esta clase de algoritmos emplea diferentes estructuras de datos o métodos de partición de datos para reducir significativamente el espacio de búsqueda para acelerar el procesamiento de consultas.
Los algoritmos ANN sacrifican cierta precisión, pero ofrecen una recuperación escalable y rápida de los vecinos más próximos aproximados, lo que hace que sean ideales para equilibrar la precisión frente a la eficacia en las aplicaciones modernas de recuperación de información. Puedes ajustar los parámetros del algoritmo para ajustar los requisitos de recuperación, latencia, memoria y superficie de disco de la aplicación de búsqueda.
Azure AI Search usa HNSW para su algoritmo ANN.