Share via


¿Qué son las incrustaciones de vectores y vector de búsqueda en Azure Cache for Redis?

La búsqueda de similitud de vectores (VSS) se ha convertido en una tecnología popular para aplicaciones inteligentes con tecnología de inteligencia artificial. Azure Cache for Redis se puede usar como base de datos vectorial mediante la combinación de modelos como Azure OpenAI para escenarios de análisis e inteligencia artificial generativa aumentada por recuperación. Este artículo es una introducción de alto nivel al concepto de incrustaciones vectoriales, búsqueda de similitud de vectores y cómo se puede usar Redis como base de datos vectorial que potencia aplicaciones inteligentes.

Para ver tutoriales y aplicaciones de ejemplo sobre cómo usar Azure Cache for Redis y Azure OpenAI para realizar la búsqueda de similitud vectorial, vea lo siguiente:

Ámbito de disponibilidad

Las funcionalidades de búsqueda vectorial en Redis requieren Redis Stack, específicamente el módulo RediSearch. Esta funcionalidad solo está disponible en los niveles Enterprise de Azure Cache for Redis.

Esta tabla contiene la información de disponibilidad de búsqueda vectorial en distintos niveles.

Nivel Básico / Estándar Premium Enterprise Enterprise Flash
Disponible No No Sí (versión preliminar)

¿Qué son las incrustaciones vectoriales?

Concepto

Las incrustaciones vectoriales son un concepto fundamental en el aprendizaje automático y el procesamiento de lenguaje natural que permiten la representación de datos, como palabras, documentos o imágenes, como vectores numéricos en un espacio vectorial de alta dimensión. La idea principal detrás de las incrustaciones vectoriales es capturar las relaciones subyacentes y la semántica de los datos mediante su asignación a puntos en este espacio vectorial. Esto significa convertir el texto o las imágenes en una secuencia de números que representa los datos y a continuación, comparar las diferentes secuencias de números. Esto permitirá que los datos complejos se manipulen y analicen matemáticamente, lo que facilitará la realización de tareas, como la comparación de similitud, la recomendación y la clasificación.

Cada modelo de Machine Learning clasifica los datos y genera el vector de una manera diferente. Además, normalmente no es posible determinar exactamente qué significado semántico representa cada dimensión vectorial. Sin embargo, dado que el modelo es coherente entre cada bloque de datos de entrada, palabras similares, documentos o imágenes tienen vectores que también son similares. Por ejemplo, las palabras basketball y baseball tienen vectores de incrustación mucho más cercanos entre sí que una palabra como rainforest.

Comparación de vectores

Los vectores se pueden comparar mediante varias métricas. La forma más popular de comparar vectores es usar la similitud de coseno, que mide el coseno del ángulo entre dos vectores en un espacio multidimensional. Cuanto más cerca estén los vectores, menor será el ángulo. Otras métricas de distancia comunes incluyen la distancia euclidiana y el producto interno.

Generación de incrustaciones

Muchos modelos de aprendizaje automático admiten API de inserción. Para obtener un ejemplo de cómo crear incrustaciones vectoriales mediante el servicio Azure OpenAI, consulte Aprenda a generar incrustaciones con Azure OpenAI.

¿Qué es una base de datos de vectores?

Una base de datos vectorial es una base de datos que puede almacenar, administrar, recuperar y comparar vectores. Las bases de datos vectoriales deben ser capaces de almacenar eficazmente vectores de alta dimensión y recuperarlos con latencia mínima y alto rendimiento. Los almacenes de datos no relacionales se usan normalmente como bases de datos vectoriales, aunque es posible usar bases de datos relacionales como PostgreSQL, por ejemplo, con la extensión pgvector de pgvector.

Indexación y método de búsqueda

Las bases de datos vectoriales necesitan indexar los datos para una búsqueda y recuperación rápidas. Además, una base de datos vectorial debe admitir consultas de búsqueda integradas para experiencias de programación simplificadas.

Hay varios métodos de indexación, como:

  • FLAT: Índice de fuerza bruta
  • HNSW: Búsqueda de vecinos más cercanos eficiente y sólido mediante gráficos jerárquicos de mundos pequeños navegables

Hay varios métodos de búsqueda comunes, entre los que se incluyen:

  • K vecinos más próximos (KNN): un método exhaustivo que proporciona la mayor precisión, pero con un mayor coste computacional.
  • Vecinos más próximos aproximados (ANN): una precisión más eficiente al operar con mayor velocidad y menor sobrecarga de procesamiento.

De las funcionalidades de búsqueda

Por último, las bases de datos vectoriales ejecutan búsquedas vectoriales mediante el método de comparación de vectores elegido para devolver los vectores más similares. Algunas bases de datos vectoriales también pueden realizar búsquedas híbridas, limitando primero los resultados en función de las características o metadatos almacenados en la base de datos antes de realizar el vector de búsqueda. Esta es una manera de hacer que el vector de búsqueda sea más eficaz y personalizable. Por ejemplo, un vector de búsqueda podría limitarse solo a vectores con una etiqueta específica en la base de datos o a vectores con datos de geolocalización en una región determinada.

Escenarios clave de vectores de búsqueda

La búsqueda de similitud vectorial se puede usar en varias aplicaciones. A continuación, se muestran algunos casos de uso comunes:

  • Q&A de semántica. Creación de un bot de chat que pueda responder a preguntas sobre sus propios datos. Por ejemplo, un bot de chat que pueda responder a preguntas de los empleados sobre su cobertura sanitaria. Cientos de páginas de documentación de cobertura sanitaria densa se pueden dividir en fragmentos, convertirse en vectores de incrustación y realizar la búsqueda en función de la similitud de vectores. Los documentos resultantes se pueden resumir para los empleados que usen otro modelo de lenguaje grande (LLM). Ejemplo de Q&A de semántica
  • Recuperación de documentos. Use la comprensión semántica más profunda del texto proporcionado por los LLM para proporcionar una experiencia de búsqueda de documentos más completa en la que la búsqueda tradicional basada en palabras clave sea corta. Ejemplo de recuperación de documentos
  • Recomendación de productos. Busque productos o servicios similares para recomendar en función de las actividades anteriores del usuario, como el historial de búsqueda o las compras anteriores. Ejemplo de recomendación de productos
  • Visual Search. Busque productos que parezcan similares a una imagen tomada por un usuario o a una imagen de otro producto. Ejemplo de Visual Search
  • Almacenamiento en caché semántico. Reduzca el coste y la latencia de los LLM mediante el almacenamiento en caché de las finalizaciones de LLM. Las consultas de LLM se comparan mediante la similitud vectorial. Si una nueva consulta fuera lo suficientemente similar a una consulta almacenada en caché previamente, se devolverá la consulta almacenada en caché. Ejemplo de almacenamiento en caché semántico mediante LangChain
  • Memoria de conversación de LLM. Conservar el historial de conversaciones con un LLM como incrustaciones en una base de datos vectorial. La aplicación puede usar el vector de búsqueda para extraer el historial o "recuerdos" pertinentes en la respuesta de LLM. Ejemplo de memoria de conversación de LLM

¿Por qué elegir Azure Cache for Redis para almacenar y buscar vectores?

Azure Cache for Redis se puede usar eficazmente como base de datos vectorial para almacenar vectores de incrustaciones y para realizar búsquedas de similitud vectoriales. La compatibilidad con el almacenamiento de vectores y la búsqueda están disponibles en muchos marcos de aprendizaje automático clave, como:

Estos marcos incluyen integraciones enriquecidas con Redis. Por ejemplo, la integración de Redis LangChain genera automáticamente un esquema de índice para los metadatos pasados al usar Redis como almacén de vectores. Esto facilita mucho el filtrado de los resultados en función de los metadatos.

Redis tiene una amplia gama de funcionalidades de búsqueda a través del módulo RediSearch, que está disponible en el nivel Enterprise de Azure Cache for Redis. Entre ellas se incluyen las siguientes:

  • Varias métricas de distancia, como Euclidean, Cosine y Internal Product.
  • Compatibilidad con los métodos de indexación KNN (mediante FLAT) y ANN (mediante HNSW).
  • Almacenamiento vectorial en estructuras de datos hash o JSON
  • Principales consultas K
  • Consultas de intervalo de vectores (es decir, buscar todos los elementos dentro de una distancia de vector específica)
  • Búsqueda híbrida con características de consulta eficaces, como:
    • Filtrado geoespacial
    • Filtros numéricos y de texto
    • Coincidencia aproximada y de prefijo
    • Coincidencia fonética
    • Consultas booleanas

Además, Redis suele ser una opción económica porque ya se usa con mucha frecuencia para el almacenamiento en caché o las aplicaciones de almacenamiento de sesiones. En estos escenarios, se puede extraer el doble deber al atender un rol de almacenamiento en caché típico mientras controla simultáneamente las aplicaciones de búsqueda de vectores.

¿Cuáles son mis otras opciones para almacenar y buscar vectores?

Hay varias soluciones adicionales en Azure para el almacenamiento y la búsqueda de vectores. Otras soluciones incluyen:

La mejor manera de empezar a trabajar con las incrustaciones y los vectores de búsqueda es probarlos usted mismo.