Consultas semánticas

Con el índice ahora equipado con incrustaciones ELSER, la función handle_search() en app.py puede cambiar para buscar estas incrustaciones. Por ahora, verás cómo buscar solo a través de ELSER; más adelante, los métodos de búsqueda anteriores se reincorporarán para crear una solución combinada.

Para usar inferencias ELSER durante la búsqueda, se emplea el tipo de consulta text_expansion . A continuación puedes ver una función de handle_search() actualizada con esta consulta:

La consulta text_expansion recibe una clave con el nombre del campo a buscar. Bajo esta clave, model_id configura qué modelo usar en la búsqueda y model_text define qué buscar. Fíjate en que en este caso no es necesario generar una incrustación para el texto de búsqueda, ya que Elasticsearch gestiona el modelo y puede encargar de ello.

En la versión anterior de handle_search() las filters quedaron sin usar y se omitieron las agregaciones. Estos pueden agregar de nuevo de la misma manera que se incorporaron a la solución de búsqueda de texto completo. A continuación se muestra una función de handle_search() actualizada que mueve la consulta de text_expansion dentro de una sección bool.must , con filtros incluidos en bool.filter y agregaciones agregadas como antes.

Dedica un tiempo a experimentar con diferentes búsquedas. Verás que, al igual que con las incrustaciones vectoriales densas, las búsquedas impulsadas por el modelo ELSER funcionan mejor que la búsqueda en texto completo cuando las palabras exactas no aparecen en los documentos indexados.

¿Estás listo para crear experiencias de búsqueda de última generación?

No se logra una búsqueda suficientemente avanzada con los esfuerzos de uno. Elasticsearch está impulsado por científicos de datos, operaciones de ML, ingenieros y muchos más que son tan apasionados por la búsqueda como tú. Conectemos y trabajemos juntos para crear la experiencia mágica de búsqueda que te dará los resultados que deseas.

Pruébalo tú mismo