Compartir tecnología

Elasticsearch: Presentación de recuperadores: búsqueda de todo

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

Autor: de ElásticoJeff Vestal, Jack Conradson

En 8.14, Elastic introdujo una nueva función de búsqueda llamada "retrievers" en Elasticsearch. Siga leyendo para conocer su simplicidad y eficiencia, y cómo pueden mejorar sus operaciones de búsqueda.

Los recuperadores son una nueva capa de abstracción agregada a la API de búsqueda en Elasticsearch. Proporcionan la posibilidad de configurar canales de recuperación de varias etapas en una única llamada a la API _search. Esta arquitectura simplifica la lógica de búsqueda en su aplicación al eliminar la necesidad de realizar múltiples llamadas a la API de Elasticsearch para consultas de búsqueda complejas. También reduce la necesidad de lógica del lado del cliente, que a menudo requiere combinar resultados de múltiples consultas.

El tipo inicial del perro perdiguero.

En la versión inicial se incluyen tres tipos de perros perdigueros. Cada recuperador está diseñado para un propósito específico y, cuando se combinan, pueden realizar búsquedas complejas.

Los tipos disponibles incluyen:

  • estándar - Devuelve documentos de primer nivel en consultas tradicionales. Estos tipos son compatibles con versiones anteriores al admitir la sintaxis de solicitud DSL de consulta existente, lo que le permite migrar al marco del rastreador a su propio ritmo.
  • kNN - Devuelve los documentos principales en la búsqueda kNN.
  • FRR - Utilice el algoritmo de fusión recíproca para combinar y clasificar varios recuperadores de primera etapa en un único conjunto de resultados con un ajuste mínimo o nulo por parte del usuario. Un recuperador RRF es un recuperador compuesto cuyos elementos de filtro se propagan a sus recuperadores secundarios.

¿En qué se diferencian los perros perdigueros? ¿Por qué son útiles?

Para consultas tradicionales, la consulta es parte de una llamada API de búsqueda general. Los recuperadores se diferencian en que están diseñados como entidades independientes que pueden usarse individualmente o combinarse fácilmente. Este enfoque modular proporciona una mayor flexibilidad al diseñar estrategias de búsqueda.

Los recuperadores están diseñados como parte de un "árbol de recuperadores", una estructura jerárquica que define las operaciones de búsqueda aclarando su orden y lógica. Esta estructura hace que las búsquedas complejas sean más manejables, más fáciles de entender para los desarrolladores y permite agregar fácilmente nuevas funciones en el futuro.

Los recuperadores admiten la componibilidad, lo que le permite crear canalizaciones e integrar diferentes estrategias de recuperación. Esto permite probar fácilmente diferentes combinaciones de recuperación. También brindan más control sobre cómo se califican y filtran los documentos. Por ejemplo, puede especificar un umbral de puntuación mínimo, aplicar filtros complejos sin afectar la puntuación y utilizar parámetros como terminate_after para optimizar el rendimiento.

Mantiene la compatibilidad con elementos de consulta heredados y los convierte automáticamente en recuperadores adecuados.

Ejemplo de uso de recuperación

Veamos algunos ejemplos del uso de recuperadores. Usamos el conjunto de datos de muestra de IMDB.

Puedes ejecutar el incluido cuaderno jupyter, importe datos IMDB a su proyecto de búsqueda sin servidor y ejecute los siguientes ejemplos usted mismo.

Las configuraciones de alto nivel son:

  • descripción general: un breve resumen de la película
  • nombres - los nombres de las películas
  • Overview_dense - vector_denso generado a partir del modelo e5-small
  • Overview_sparse: vectores dispersos que utilizan el modelo ELSER de Elastic.
  • Usar solo campos y configurar _source:false devuelve la versión de texto de los nombres y la descripción general

Estándar: ¡Busca en todo el texto!

  1. GET /imdb_movies/_search?pretty
  2. {
  3. "retriever": {
  4. "standard": {
  5. "query": {
  6. "term": {
  7. "overview": "clueless"
  8. }
  9. }
  10. }
  11. },
  12. "size": 3,
  13. "fields": [
  14. "names",
  15. "overview"
  16. ],
  17. "_source": false
  18. }

kNN - ¡Busca todos los vectores densos!

  1. GET /imdb_movies/_search?pretty
  2. {
  3. "retriever": {
  4. "knn": {
  5. "field": "overview_dense",
  6. "query_vector_builder": {
  7. "text_embedding": {
  8. "model_id": ".multilingual-e5-small_linux-x86_64",
  9. "model_text": "clueless slackers"
  10. }
  11. },
  12. "k": 5,
  13. "num_candidates": 5
  14. }
  15. },
  16. "size": 3,
  17. "fields": [
  18. "names",
  19. "overview"
  20. ],
  21. "_source": false
  22. }

text_expansion - ¡Busca todos los vectores dispersos!

  1. GET /imdb_movies/_search?pretty
  2. {
  3. "retriever": {
  4. "standard": {
  5. "query": {
  6. "text_expansion": {
  7. "overview_sparse": {
  8. "model_id": ".elser_model_2_linux-x86_64",
  9. "model_text": "clueless slackers"
  10. }
  11. }
  12. }
  13. }
  14. },
  15. "size": 3,
  16. "fields": [
  17. "names",
  18. "overview"
  19. ],
  20. "_source": false
  21. }

rrf - ¡combina todo!

  1. GET /imdb_movies/_search?pretty
  2. {
  3. "retriever": {
  4. "rrf": {
  5. "retrievers": [
  6. {
  7. "standard": {
  8. "query": {
  9. "term": {
  10. "overview": "clueless slackers"
  11. }
  12. }
  13. }
  14. },
  15. {
  16. "knn": {
  17. "field": "overview_dense",
  18. "query_vector_builder": {
  19. "text_embedding": {
  20. "model_id": ".multilingual-e5-small_linux-x86_64",
  21. "model_text": "clueless slackers"
  22. }
  23. },
  24. "k": 5,
  25. "num_candidates": 5
  26. }
  27. },
  28. {
  29. "standard": {
  30. "query": {
  31. "text_expansion": {
  32. "overview_sparse": {
  33. "model_id": ".elser_model_2_linux-x86_64",
  34. "model_text": "clueless slackers"
  35. }
  36. }
  37. }
  38. }
  39. }
  40. ],
  41. "rank_window_size": 5,
  42. "rank_constant": 1
  43. }
  44. },
  45. "size": 3,
  46. "fields": [
  47. "names",
  48. "overview"
  49. ],
  50. "_source": false
  51. }

El límite actual del retriever.

El recuperador tiene ciertas limitaciones que los usuarios deben tener en cuenta. Por ejemplo, el uso de un recuperador compuesto permite consultar solo elementos. Esto obliga a una separación más clara de las preocupaciones y evita la complejidad que conlleva el anidamiento excesivo o la configuración independiente. Además, los perros perdigueros secundarios no deben utilizar elementos que restrinjan a un perro perdiguero compuesto a ser parte de un árbol de perros perdigueros.

Estas restricciones mejoran el rendimiento y la componibilidad incluso cuando se utilizan estrategias de recuperación complejas.

El recuperador se lanza inicialmente como una vista previa de la tecnología, por lo que su API está sujeta a cambios.

en conclusión

Los buscadores representan un importante paso adelante en la funcionalidad de búsqueda y la facilidad de uso de Elasticsearch. Se pueden encadenar en forma de canalización, donde cada recuperador aplica su lógica y pasa los resultados al siguiente elemento de la cadena. Los recuperadores pueden mejorar significativamente la experiencia de búsqueda al permitir operaciones de búsqueda más estructuradas, flexibles y eficientes.

Los siguientes recursos proporcionan más detalles sobre los perros perdigueros.

¡Pruebe el código anterior usted mismo!Tu puedes corrercuaderno jupyter adjunto, importe datos IMDB al proyecto Elastic Serverless Search.

¿Listo para probarlo tú mismo?comenzarPrueba gratis
¿Quieres obtener la certificación Elastic?Descúbrelo la próxima vezFormación de ingenieros de Elasticsearch¡Cuándo empezar!

original:Recuperadores de Elasticsearch: cómo utilizar recuperadores de búsqueda en Elasticsearch — Elastic Search Labs