Productos secos | Historial de desarrollo detallado de la recuperación de vectores de Elasticsearch

1. Introducción

La recuperación de vectores se ha convertido en un componente central de los sistemas modernos de búsqueda y recomendación.

Permite la coincidencia de consultas y recomendaciones eficientes al convertir objetos complejos como texto, imágenes o sonidos en vectores numéricos y realizar búsquedas de similitud en un espacio multidimensional.

1c51d6971f64b55d1dd93401558765ec.png

Imagen de: Apreciación de la tecnología de base de datos vectorial [Parte 1] (Ele Lab)

Elasticsearch, como un popular motor de búsqueda de código abierto, ha recibido mucha atención por su desarrollo en la recuperación de vectores. Este artículo revisará el historial de desarrollo de la recuperación de vectores de Elasticsearch, centrándose en las características y el progreso de cada etapa. Tomando la historia como un espejo, es conveniente que todos establezcan una comprensión completa de la recuperación de vectores de Elasticsearch.

2. Intento preliminar: la introducción de la recuperación de vectores simple

Elasticsearch no se diseñó originalmente específicamente para la recuperación de vectores. Sin embargo, con el auge del aprendizaje automático y la inteligencia artificial, los requisitos de consulta para espacios vectoriales de alta dimensión aumentan gradualmente.

En la versión 5.x de Elasticsearch, los entusiastas de Elastic comenzaron a intentar implementar funciones simples de recuperación de vectores a través de complementos y operaciones matemáticas básicas. Por ejemplo: algunos de los primeros complementos, como elasticsearch-vector-scoring y fast-elasticsearch-vector-scoring, están diseñados para satisfacer tales necesidades.

7758b1315a2bcce9808947e5e9343eb3.png

https://github.com/MLnick/elasticsearch-vector-scoring 

https://github.com/lior-k/fast-elasticsearch-vector-scoring

La recuperación de vectores en esta etapa se usa principalmente para consultas básicas de similitud, como cálculos de similitud de texto. Aunque la función es relativamente limitada, ha sentado las bases para el desarrollo posterior.

Explicación ampliada: Con respecto a la función de aprendizaje automático, si está interesado en el cambio de versión de Elasticsearch, la versión 6.X se lanzó en ese momento, lo cual es muy emocionante. Sin embargo, limitada por funciones que no son de código abierto, la audiencia real en China aún es relativamente pequeña.

3. Apoyo oficial: mayor desarrollo

En la versión 7.0 de Elasticsearch, se agregó oficialmente soporte para campos vectoriales, como a través del tipo dense_vector . Esto marca que Elasticsearch ha entrado oficialmente en el campo de la recuperación de vectores y ya no depende solo de complementos.

El tiempo de lanzamiento más temprano de dense_vector : 13 de diciembre de 2018, versión 7.6 marcada como GA.

https://github.com/elastic/elasticsearch/pull/33022 

https://github.com/elastic/elasticsearch-net/issues/3836

Con respecto al uso del tipo dense_vector , lectura recomendada: Búsqueda de vectores de alta dimensión: exploración de combate real usando dense_vector en Elasticsearch 8.X.

El principal desafío en esta etapa es cómo respaldar de manera eficiente la recuperación de vectores en la estructura de índice invertida tradicional. Al combinarse con las capacidades de búsqueda de texto completo existentes, Elasticsearch puede brindar una solución flexible y poderosa.

Desde los complementos iniciales y las operaciones básicas hasta el posterior soporte e integración oficial, esta etapa ha sentado una base sólida para la mayor innovación y optimización de Elasticsearch en la recuperación de vectores.

4. Optimización especial: cálculo de similitud mejorado

A medida que crecía la demanda, el equipo de Elasticsearch comenzó a investigar y optimizar el rendimiento de la recuperación de vectores. Esto implica la introducción de métodos de cálculo de similitud más complejos, como la similitud del coseno, la distancia euclidiana, etc., así como la optimización de la ejecución de consultas.

A partir de la versión 7.3 de Elasticsearch, la introducción oficial de un método de cálculo de similitud más complejo. En particular, la mejora de la consulta script_score permite a los usuarios personalizar cálculos de similitud más ricos a través de scripts Painless.

https://www.elastic.co/guide/en/elasticsearch/reference/7.3/query-dsl-script-score-query.html#funciones-vectoriales

La función principal es permitir el cálculo de similitud a través del ángulo entre vectores, utilizando el índice de distancia de similitud de coseno de k-vecino más cercano (k-NN), para brindar soporte a los motores de búsqueda de similitud. Ampliamente utilizado en análisis de texto y sistemas de recomendación.

Se utiliza principalmente para resolver: requisitos de similitud complejos, proporciona opciones de cálculo de similitud más flexibles y potentes y puede satisfacer más necesidades comerciales.

Los escenarios de aplicación se reflejan en:

  • (1) Recomendación personalizada: analice el comportamiento y los intereses del usuario a través de la similitud del coseno y proporcione un contenido de recomendación más personalizado;

  • (2) Reconocimiento y búsqueda de imágenes: recupere rápidamente imágenes similares a una imagen dada utilizando la distancia euclidiana;

  • (3) Análisis de sonido: encuentre patrones similares entre archivos de sonido para reconocimiento y análisis de voz.

Cabe mencionar que: Inicialmente, la dimensión soportada por la recuperación de vectores era: 1024, hasta la versión 8.8 de Elasticsearch, la dimensión soportada se cambió a: 2048 (esta es una demanda muy alta).

https://github.com/elastic/elasticsearch/pull/95257

https://discuss.elastic.co/t/vector-knn-search-with-more-than-1024-dimensions/332819

Las capacidades mejoradas de cálculo de similitudes de las versiones de Elasticsearch 7.x representan un avance significativo en las capacidades de recuperación de vectores. Al introducir métodos de cálculo de similitud más sofisticados y optimización de consultas, Elasticsearch no solo mejora sus capacidades en escenarios de búsqueda tradicionales, sino que también abre nuevas posibilidades para el aprendizaje automático emergente y las aplicaciones de IA.

Sin embargo, en este momento, encontrará que si desea implementar funciones complejas de búsqueda de vectores, tiene que implementar muchas por su cuenta. Si compara la integración del aprendizaje profundo y el surgimiento de los modelos grandes mencionados de inmediato con: los autos voladores, la etapa actual sigue siendo "carros tirados por burros". Hay funciones, pero es muy laborioso de usar.

342158e787ad83c847d22956d141a651.png

5. Integración del aprendizaje profundo y perspectivas futuras

En la era de los grandes modelos, la recuperación de vectores y la búsqueda multimodal se han convertido en los campos de batalla de los "estrategas militares".

La recuperación multimodal es una tecnología de recuperación que integra varias modalidades de datos (como texto, imagen, audio, video, etc.). En otras palabras, no solo busca en función del texto, sino que también busca contenido relacionado en función de imágenes, sonidos u otras entradas modales.

Para comprender la recuperación multimodal de manera más general, podemos profundizar nuestra comprensión a través de las siguientes metáforas y ejemplos: imagina que entras en una biblioteca enorme, donde no solo hay libros, sino también varias imágenes, grabaciones y videos. Puede mostrarle una foto a una bibliotecaria y ella encontrará todos los libros, audios y videos relacionados con esa foto para usted. O bien, puede tararear una melodía y los bibliotecarios pueden encontrar materiales relacionados o proporcionar canciones o videos similares. ¡Esta es la magia de la recuperación multimodal!

Con el desarrollo y la aplicación continuos de la tecnología de aprendizaje profundo, Elasticsearch ha comenzado a explorar la integración directa de modelos de aprendizaje profundo en el proceso de recuperación de vectores. Esto no solo permite cálculos de similitud más complejos y precisos, sino que también abre nuevas áreas de aplicación, como búsquedas basadas en imágenes o sonidos. Especialmente en la versión 8.x de Elasticsearch, esta dirección ha avanzado significativamente.

5.1 La vectorización es la premisa

Como se muestra en la figura a continuación, se escribe de izquierda a derecha. Las imágenes, los documentos y los audios se convierten en representaciones de características vectoriales y se almacenan en el tipo dense_vector en Elasticsearch .

La visualización de derecha a izquierda es recuperación. Primero, la oración de recuperación se convierte en una representación de características vectoriales, y luego se usa el algoritmo de recuperación del vecino más cercano K (implementado por la búsqueda Knn en Elasticsearch) para obtener resultados similares.

Mire en el medio, la sección Resultados es el resultado de la recuperación de vectores.

En resumen, la recuperación de vectores elimina el defecto de que el índice invertido tradicional solo admite la recuperación de texto y puede expandirse para admitir múltiples modos de texto, voz, imagen y video.

7539a71c70d54aaf4fdc4f10c1d4b782.png

Imagen de: documentación oficial de Elasticsearch

Creo que ya debería comprender la recuperación de vectores y la multimodalidad. Sin este proceso de vectorización, la recuperación multimodal está fuera de discusión.

5.2 El modelo es el núcleo

La integración de modelos de aprendizaje profundo se puede dividir en tres pasos:

  • Paso 1: Importación y gestión de modelos: Elasticsearch 8.x admite la importación de modelos de aprendizaje profundo entrenados previamente y proporciona las herramientas de gestión de modelos correspondientes para facilitar la implementación y actualización de modelos.

  • Paso 2: Representación y conversión de vectores: a través de modelos de aprendizaje profundo, los datos no estructurados, como imágenes y sonidos, se pueden convertir en representaciones vectoriales para una recuperación eficiente.

  • Paso 3: Cálculo de similitud personalizado: la versión 8.x proporciona una interfaz de cálculo de similitud personalizada basada en modelos de aprendizaje profundo, lo que permite a los usuarios desarrollar e implementar métodos de cálculo de similitud especializados de acuerdo con las necesidades reales.

En cuanto al aprendizaje profundo, puede ser un modelo de autoformación o un modelo en una biblioteca de modelos de terceros. Por ejemplo, en el caso de nuestra búsqueda de mapas , usamos el modelo clip-ViT-B-32-multilingual-v1 en AbrazandoCara .

4944bece1cc596f2314fbbf2c141bdfb.gif

Lista de modelos de terceros compatibles con Elasticsearch:

nombre Interpretación del modelo
BERT Transformador bidireccional modelo
bart modelo de secuencia a secuencia
Bicodificadores DPR Modelo de recuperación de codificador bidireccional
DestilarBERT BERT ligero
ELECTRA Modelos adversarios preentrenados
MóvilBERT BERT para dispositivos móviles
roberta BERT optimizado
RetriBERT BERT centrado en la recuperación
MPNet red híbrida paralela
Codificadores bicodificadores SentenceTransformers Codificador bidireccional de transformación de oraciones
XLM-RoBERTa Versión multilingüe de Roberta

También se admiten las siguientes bibliotecas de modelos Hugging Face.

77f104a7a014e182cf6f730164b2377d.png Imagen de: documento oficial de HuggingFace

El modelo es el núcleo de la integración de Elasticsearch y el aprendizaje profundo. Puede convertir datos complejos en vectores de "huella digital", lo que hace que la búsqueda sea más eficiente e inteligente. Con la ayuda de modelos, Elasticsearch puede comprender y combinar varios datos no estructurados, como imágenes y sonidos, para brindar resultados de búsqueda más precisos y personalizados, mientras se adapta a los datos y necesidades cambiantes. "Sin modelos, todavía tenemos que andar a tientas en la oscuridad durante mucho tiempo".

Introducción al sitio web oficial del modelo de terceros: https://www.elastic.co/guide/en/machine-learning/8.9/ml-nlp-model-ref.html#ml-nlp-model-ref-text-embedding

Vale la pena mencionar que Elasticsearch requiere una herramienta de cliente Python dedicada, Eland, para importar modelos grandes.

Eland es un cliente de Python para Elasticsearch que permite a los usuarios usar API similares a Pandas para explorar y analizar datos en Elasticsearch. También admite la carga de modelos entrenados desde bibliotecas comunes de aprendizaje automático a Elasticsearch.

Eland es una biblioteca desarrollada para trabajar con Elasticsearch. No es un producto de una versión específica de Elasticsearch, sino un proyecto independiente para ayudar a los desarrolladores de Python a realizar más fácilmente tareas de exploración de datos y aprendizaje automático en Elasticsearch.

Ver más sobre Eland:

https://www.elastic.co/guide/en/elasticsearch/client/eland/current/index.html

https://github.com/elastic/eland

5.3 ESRE es el futuro de Elastic

Hace algún tiempo, cuando estaba conversando con dos jefes de Alibaba Cloud y Tencent Cloud, mencioné que Elasticsearch Relevance Engine (ESRE) es el futuro de Elastic.

La presentación oficial de ESRE es la siguiente: ——El motor de relevancia de Elasticsearch combina las mejores prácticas de IA con la búsqueda de texto de Elastic. ESRE proporciona a los desarrolladores un conjunto completo de algoritmos de recuperación maduros y la capacidad de integrarse con modelos de lenguaje grandes (LLM). Con ESRE, podemos aplicar la búsqueda semántica lista para usar con una relevancia superior, integrar con modelos de lenguaje externos a gran escala, habilitar la búsqueda híbrida y usar modelos de terceros o propios.

ESRE integra una clasificación de correlación avanzada como BM25f, una potente base de datos vectorial, tecnología de procesamiento de lenguaje natural, integración con modelos de terceros como GPT-3 y GPT-4, y ayuda a los desarrolladores a personalizar modelos y aplicaciones. Se caracteriza por una búsqueda semántica profunda, integración de datos con campos profesionales e integración de IA generativa perfecta, lo que permite a los desarrolladores crear experiencias de búsqueda más atractivas y precisas.

Nuevo en Elasticsearch versión 8.9: función de recuperación semántica de búsqueda semántica, los estudiantes que están familiarizados con documentos oficiales encontrarán las siguientes capturas de pantalla, que no están disponibles en versiones anteriores.

df996348c4b9658b0d0dd8f31220f8d0.png

https://www.elastic.co/guide/en/elasticsearch/reference/8.9/semantic-search.html

En lugar de hacer coincidir literalmente los términos de búsqueda, la búsqueda semántica recupera resultados basados ​​en la intención y el significado contextual de la consulta de búsqueda.

Para ir un paso más allá: la búsqueda semántica no se trata solo de hacer coincidir las palabras clave que escribe, sino de tratar de comprender su verdadera intención, brindándole resultados de búsqueda más precisos y contextuales. En términos simples, si busca "fútbol" en el Reino Unido, el sistema sabe que probablemente quiso decir rugby, no fútbol (en los EE. UU., fútbol es fútbol).

Este método de búsqueda inteligente, gracias a la poderosa vectorización de texto y otros antecedentes técnicos, hace que nuestra experiencia de búsqueda en línea sea más intuitiva, conveniente y satisfactoria.

Para explicar la recuperación de texto realizada por la recuperación de vectores - recuperación semántica más claramente, aquí hay una demostración de animación.

Animación de: documentación oficial de Elasticsearch

  • Al comienzo del video, busque el requisito de velocidad de conexión en el texto, que pertenece al método de búsqueda de índice invertido temprano, o la coincidencia de búsqueda de frase_coincidencia de frase o coincidencia de búsqueda de coincidencia de segmentación de palabra en la búsqueda de texto completo. Esto puede dar resultados.

  • Sin embargo, la segunda mitad del video muestra, ¿qué pasa si queremos buscar: "¿Qué tan rápido debe ser mi Internet"?

De hecho, aquí se convierte en recuperación de vectores. Rápido tiene una semántica similar a la velocidad, debería tener una semántica similar a los requisitos y necesidades, e Internet tiene una semántica similar a la conexión y wifi. Por lo tanto, los resultados aún se pueden recordar.

¡Esto rompe la limitación de los sinónimos tradicionales y encarna la belleza de la recuperación semántica!

Además, damos la diferencia entre la recuperación semántica y la recuperación de segmentación de palabras tradicional , con la esperanza de que todos puedan entender mejor la búsqueda semántica.

proyecto búsqueda semántica Búsqueda tradicional de segmentación de palabras
Tecnología del núcleo Basado en búsqueda de vectores, aprendizaje automático e inteligencia artificial Basado en la coincidencia de texto y la expansión de consultas
propósito de búsqueda Comprender el significado profundo y el contexto de las consultas. Coincidencia de palabras clave directamente o vocabulario ampliado
contexto de procesamiento Capacidad de personalizar los resultados en función de la ubicación del buscador, el historial de búsqueda y más Esta información contextual adicional generalmente no se tiene en cuenta.
Relevancia de los resultados de búsqueda Clasifique los resultados según la intención y el contexto de la consulta Basado principalmente en la frecuencia de palabras clave y la coincidencia de posición
Manejar sinónimos y polisemia Capacidad para comprender el significado de las palabras en diferentes contextos y obtener resultados en consecuencia A menudo usa listas de sinónimos o herramientas de expansión de vocabulario, es posible que no siempre entienda el verdadero significado en contexto
comprensión de la consulta Capacidad para distinguir consultas como "chocolate con leche" de "chocolate con leche", incluso si las palabras clave están en el mismo orden o forma Puede simplemente hacer coincidir palabras clave sin comprender lo que realmente significan
aprendizaje y adaptabilidad Mejora continua a través del aprendizaje automático, adaptándose en función de los comentarios y el comportamiento de los usuarios. Por lo general, se basa en algoritmos y reglas fijos, sin la capacidad de aprender y adaptarse continuamente.
experiencia de usuario Proporcione resultados más precisos y contextuales, mejorando la satisfacción del usuario Confíe en la entrada precisa del usuario y puede arrojar resultados que no coinciden con la intención real del usuario.

En general, la integración del aprendizaje profundo se ha convertido en un complemento poderoso para las capacidades de recuperación de vectores de Elasticsearch, lo que lo convierte en una posición más sólida en el campo de la búsqueda y el análisis, al tiempo que brinda un amplio espacio para el desarrollo futuro.

6. Resumen

La recuperación de vectores de Elasticsearch ha pasado de ser una implementación simple a una solución eficiente y versátil que refleja las necesidades y los desafíos de los sistemas modernos de búsqueda y recomendación. A medida que la tecnología continúa evolucionando, podemos esperar que Elasticsearch continúe impulsando la innovación y la excelencia en la recuperación de vectores.

Permítanme hablar sobre mis sentimientos recientes. Con la aparición de nuevas tecnologías como la recuperación de vectores y modelos grandes, siento que "no puedo terminar de aprender, no puedo terminar de aprender en absoluto", y es fácil estar limitado. a "teoría de la piel" (una palabra que creé yo mismo) -todas las tecnologías son un poco, pero no soporto hacer preguntas; si hablo superficialmente, parezco entenderlo todo, pero si hablo sobre profundamente, no sé nada al respecto.

¿Cómo afrontar esta situación? Mi método actual es: comprender la teoría en profundidad con el fin de practicar, comprender el algoritmo cuando sea necesario y luego organizar lo que veo, pienso y pienso en un documento de vez en cuando, para memorizar y sistematizar el conocimiento. Este proceso es muy lento y agotador, pero creo que cuanto mayor sea el tiempo, mayor será el valor.

Bienvenidos a todos a dejar un mensaje para el debate y el intercambio sobre la recuperación de vectores y otros temas. Es probable que su pregunta sea el tema del próximo artículo.

7, referencia

1、https://www.elastic.co/cn/blog/text-similarity-search-with-vectors-in-elasticsearch 

2、https://www.elastic.co/guide/en/elasticsearch/reference/7.3/query-dsl-script-score-query.html#vector-functions-cosine 

3. https://zhuanlan.zhihu.com/p/552249981 

4, https://www.elastic.co/cn/what-is/elasticsearch-machine-learning 

5, https://www.elastic.co/cn/enterprise-search/generative-ai 

6、https://www.elastic.co/cn/blog/may-2023-launch-announcement 

7、https://www.analyticsvidhya.com/blog/2022/10/las-preguntas-más-frecuentes-de-la-entrevista-sobre-el-algoritmo-knn/ 

8, https://www.elastic.co/guide/en/elasticsearch/reference/current/knn-search.html 

9, https://www.elastic.co/cn/blog/how-to-deploy-nlp-text-embeddings-and-vector-search

10, https://www.elastic.co/cn/blog/privacy-first-ai-search-langchain-elasticsearch 

11, https://www.youtube.com/watch?v=W_ZUUDJsUtA

Lectura recomendada

  1. ¡Primer lanzamiento en toda la red! De 0 a 1 vídeo de liquidación de Elasticsearch 8.X

  2. Heavyweight | Dead Elasticsearch 8.X Metodología Lista de cognición

  3. ¿Cómo aprender sistemáticamente Elasticsearch?

  4. 2023, haz algo

  5. Video | Elasticsearch 8.X Mejores prácticas de capacitación interna empresarial 10 conferencias

  6. Combate "mapa de búsqueda de imágenes" de Elasticsearch 8.X

  7. Búsqueda de vectores de alta dimensión: exploración práctica usando dense_vector en Elasticsearch 8.X

1a6b699ed249897db61fe040410ec8fd.jpeg

¡Adquiera más productos secos más rápido en menos tiempo!

¡Mejore con casi 2000+ entusiastas de Elastic en todo el mundo!

e59ad2e43da1f175a6a50624bc10e3a6.gif

¡En la era de los modelos grandes, aprenda productos secos avanzados un paso adelante!

Supongo que te gusta

Origin blog.csdn.net/wojiushiwo987/article/details/132157763
Recomendado
Clasificación