Mejorando las capacidades de los chatbots con PLN y búsqueda vectorial en Elasticsearch

Explora cómo la búsqueda vectorial y el PLN mejoran las capacidades de los chatbots y descubre cómo Elasticsearch facilita el proceso.

Elasticsearch ofrece a los desarrolladores el conjunto de herramientas de búsqueda más completo, desde la búsqueda vectorial hasta las potentes API REST. Descubre los cuadernos de muestra en GitHub para probar algo nuevo. También puedes iniciar tu prueba gratuita o ejecutar Elasticsearch localmente hoy mismo.

Las interfaces conversacionales existen desde hace tiempo y cada vez son más populares como medio para ayudar en diversas tareas, como atención al cliente, recuperación de información y automatización de tareas. Normalmente accesibles a través de asistentes de voz o aplicaciones de mensajería, estas interfaces simulan la conversación humana para ayudar a los usuarios a resolver sus consultas de forma más eficiente.

A medida que avanza la tecnología, los chatbots se emplean para gestionar tareas más complejas —y de forma rápida— sin dejar de ofrecer una experiencia personalizada para los usuarios. El procesamiento del lenguaje natural (PLN) permite a los chatbots procesar el lenguaje del usuario, identificar la intención detrás de su mensaje y extraer información relevante de él. Por ejemplo, el Reconocimiento de Entidades Nombradas extrae información clave de un texto clasificándolos en un conjunto de categorías. El análisis de sentimiento identifica el tono emocional y la pregunta responde a la "respuesta" a una consulta. El objetivo del PLN es permitir que los algoritmos procesen el lenguaje humano y realicen tareas que históricamente solo los humanos eran capaces de realizar, como encontrar pasajes relevantes entre grandes cantidades de texto, resumir textos y generar contenido nuevo y original.

Estas avanzadas capacidades de PLN se basan en una tecnología conocida como búsqueda vectorial. Elastic tiene soporte nativo para búsqueda vectorial, realizando búsqueda exacta y aproximada de k-nearest neighbor (kNN), y para NLP, permitiendo el uso directo de modelos personalizados o de terceros en Elasticsearch.

En esta entrada del blog, exploraremos cómo la búsqueda vectorial y el PLN mejoran las capacidades de los chatbots y demostraremos cómo Elasticsearch facilita este proceso. Empecemos con una breve visión general de la búsqueda vectorial.

Aunque los humanos pueden comprender el significado y el contexto del lenguaje escrito, las máquinas no pueden hacer lo mismo. Aquí es donde entran los vectores. Al convertir el texto en representaciones vectoriales (representaciones numéricas del significado del texto), las máquinas pueden superar esta limitación. En comparación con una búsqueda tradicional, en lugar de depender de palabras clave y búsqueda léxica basada en frecuencias, los vectores permiten el proceso de datos textuales mediante operaciones definidas para valores numéricos.

Esto permite la búsqueda vectorial localizar datos que comparten conceptos o contextos similares empleando distancias en el "espacio de incrustación" para representar similitud dado un vector de consulta. Cuando los datos son similares, los vectores correspondientes serán iguales.

La búsqueda vectorial no solo se emplea en aplicaciones de PLN, sino que también se emplea en varios otros ámbitos donde se involucran datos no estructurados, incluyendo el procesamiento de imágenes y video.

En un flujo de chatbot, puede haber varios enfoques para las consultas de los usuarios y, como resultado, existen diferentes formas de mejorar la recuperación de información para una mejor experiencia de usuario. Dado que cada alternativa tiene su propio conjunto de beneficios y posibles desventajas, es esencial tener en cuenta los datos y recursos disponibles, así como el tiempo de entrenamiento (cuando corresponda) y la precisión esperada. En la siguiente sección, trataremos estos aspectos para modelos de PLN con preguntas frecuentes.

Preguntas frecuentes

Un modelo de preguntas frecuentes (QA) es un tipo de modelo de PLN diseñado para responder preguntas formuladas en lenguaje natural. Cuando los usuarios tienen preguntas que requieren inferir respuestas a partir de múltiples fuentes, sin una respuesta objetivo preexistente disponible en los documentos, los modelos de QA generativa pueden ser útiles. Sin embargo, estos modelos pueden ser computacionalmente costosos y requieren grandes cantidades de datos para el entrenamiento relacionado con el dominio, lo que puede hacerlos menos prácticos en algunas situaciones, aunque este método puede ser especialmente valioso para tratar preguntas fuera del dominio.

Por otro lado, cuando los usuarios tienen preguntas sobre un tema específico y la respuesta real está presente en el documento, se pueden emplear modelos extractivos de control de calidad. Estos modelos extraen directamente la respuesta del documento fuente, proporcionando resultados transparentes y verificables, lo que los convierte en una opción más práctica para compañías u organizaciones que desean ofrecer una forma sencilla y eficiente de responder a sus preguntas.

El ejemplo siguiente demuestra el uso de un modelo extractivo de control de calidad preentrenado, disponible en Hugging Face y desplegado en Elasticsearch, para extraer respuestas de un contexto dado:

Despliega modelos capacitados.

Agrega un modelo a una tubería de ingestión de inferencia.

Existen varias formas de gestionar consultas de usuarios y recuperar información, y emplear múltiples modelos de lenguaje y fuentes de datos puede ser una alternativa eficaz al tratar con datos no estructurados. Para ilustrar esto, tenemos un ejemplo del procesamiento de datos de un chatbot empleado para responder a consultas con respuestas que consideran datos extraídos de documentos seleccionados.

Como se mostró anteriormente, el procesamiento de datos para nuestro chatbot puede dividir en tres partes:

  • Procesamiento vectorial: Esta parte convierte documentos en representaciones vectoriales.
  • Procesamiento de entrada por parte del usuario: Esta parte extrae información relevante de la consulta del usuario y realiza búsqueda semántica y recuperación híbrida.
  • Optimización: Esta parte incluye la monitorización y es fundamental para garantizar la fiabilidad del chatbot, su rendimiento óptimo y una excelente experiencia de usuario.

Procesamiento vectorial

Para la parte de procesamiento , el primer paso es determinar las partes componentes de cada documento para luego convertir cada elemento a una representación vectorial; Estas representaciones pueden crear para una amplia variedad de formatos de datos.

Existen varios métodos que pueden usar para calcular incrustaciones, incluyendo modelos y bibliotecas preentrenadas.

Es importante señalar que la efectividad de la búsqueda y recuperación en estas representaciones depende de los datos existentes y de la calidad y relevancia del método empleado.

A medida que se calculan los vectores, se almacenan en Elasticsearch con un tipo de campo dense_vector .

Procesamiento de entrada de usuario en chatbots

Para el usuario , tras recibir una pregunta, es útil extraer toda la información posible antes de continuar. Esto ayuda a entender la intención del usuario y, en este caso, estamos empleando un modelo de Reconocimiento de Entidades Nombradas (NER) para ayudar con ello. NER es el proceso de identificar y clasificar entidades nombradas en categorías de entidades predefinidas.

Aunque no es un paso necesario, usando datos estructurados o el anterior u otro resultado de modelo NLP para categorizar la consulta del usuario, podemos restringir la búsqueda kNN usando un filtro. Esto ayuda a mejorar el rendimiento y la precisión al reducir la cantidad de datos que deben ser procesados.

Búsqueda semántica y recuperación híbrida

Dado que el prompt se origina en consultas de usuarios y el chatbot necesita procesar el lenguaje humano con su variabilidad y ambigüedad, la búsqueda semántica es una excelente opción. En Elasticsearch, puedes realizar búsqueda semántica en un solo paso pasando la cadena de consulta y el ID del modelo de incrustación a un objeto query_vector_builder. Esto vectorizará la consulta y realizará una búsqueda kNN para recuperar las k coincidencias principales que sean las más cercanas en significado a la consulta:

Ejemplo de extremo a extremo: Cómo desplegar un modelo de incrustación de texto y usarlo para búsqueda semántica. Elasticsearch emplea la implementación Lucene del Okapi BM25, un modelo disperso , para clasificar consultas de texto y determinar su relevancia, mientras que los modelos densos se emplean para la búsqueda semántica. Para combinar las fortalezas de ambos , coincidencias vectoriales y coincidencias obtenidas a partir de la consulta de texto, puedes realizar una recuperación híbrida :

Combinar modelos dispersos y densos suele dar los mejores resultados

Los modelos dispersos generalmente rinden mejor en consultas cortas y terminologías específicas, mientras que los modelos densos aprovechan el contexto y las asociaciones. Si quieres aprender más sobre cómo estos métodos se comparan y complementan, aquí comparamos BM25 con dos modelos densos que fueron capacitados específicamente para la recuperación.

El resultado más relevante suele ser la primera respuesta dada al usuario, el_score es un número usado para determinar la relevancia del documento devuelto.

Optimización de chatbots

Para ayudar a mejorar la experiencia del usuario, el rendimiento y la fiabilidad de tu chatbot, además de aplicar puntaje híbrido, puedes incorporar los siguientes enfoques: Análisis de Sentimiento: Para proporcionar conciencia de los comentarios y reacciones de los usuarios a medida que se desarrolla el diálogo, puedes incorporar un modelo de análisis de sentimiento:

Capacidades de GPT : Como alternativa para mejorar la experiencia global, puedes combinar la relevancia de búsqueda de Elasticsearch con las capacidades de respuesta a preguntas de GPT de OpenAI, empleando la API de Finalización de Chat para devolver a las respuestas generadas por el modelo de usuario considerando estos k primeros documentos como contexto. Prompt: "responder a esta pregunta <user_question> usando solo este documento <top_search_result>"

Observancia: Garantizar el rendimiento de cualquier chatbot es crucial, y la monitorización es un componente esencial para lograrlo. Además de los registros que capturan las interacciones con chatbots, es importante hacer un seguimiento del tiempo de respuesta, la latencia y otras métricas relevantes del chatbot. De este modo, puedes identificar patrones, tendencias e incluso detectar anomalías.Las herramientas de observabilidad elástica te permiten recopilar y analizar esta información.

Resumen

Esta entrada de blog explica qué son el PLN y la búsqueda vectorial y profundiza en un ejemplo de chatbot empleado para responder a consultas de usuarios considerando datos extraídos de la representación vectorial de documentos.

Como se demostró, usando PLN y búsqueda vectorial, los chatbots son capaces de realizar tareas complejas que van más allá de los datos estructurados y dirigidos. Esto incluye hacer recomendaciones y responder a consultas específicas relacionadas con productos o negocios empleando múltiples fuentes de datos y formatos como contexto, además de proporcionar una experiencia de usuario personalizada.

Los casos de uso van desde ofrecer atención al cliente ayudando a los clientes con sus consultas hasta ayudar a los desarrolladores con sus consultas, proporcionando orientación paso a paso, sugiriendo recomendaciones o incluso automatizando tareas. Dependiendo del objetivo y de los datos existentes, también se pueden emplear otros modelos y métodos para lograr resultados aún mejores y mejorar la experiencia global del usuario.

Aquí tienes algunos enlaces sobre el tema que pueden ser útiles:

  1. Cómo desplegar el procesamiento de lenguaje natural (PLN): Comienzo
  2. Resumen de la búsqueda por similitud de imágenes en Elasticsearch
  3. ChatGPT y Elasticsearch: OpenAI se encuentra con datos privados
  4. Monitoriza los modelos de OpenAI API y GPT con OpenTelemetry y Elastic
  5. 5 razones por las que los líderes de TI necesitan la búsqueda vectorial para mejorar la experiencia de búsqueda

Al incorporar PLN y búsqueda vectorial nativa en Elasticsearch, puedes aprovechar su velocidad, escalabilidad y capacidades de búsqueda para crear chatbots altamente eficientes y eficaces, capaces de manejar grandes cantidades de datos, ya sean estructurados o no.

¿Listo para empezar? Comienza una prueba gratis de Elastic Cloud.

En esta entrada del blog, es posible que empleamos o podamos referirnos a herramientas de IA generativa de terceros, que son propiedad y están gestionadas por sus respectivos propietarios. Elastic no tiene ningún control sobre las herramientas de terceros y no tenemos responsabilidad ni responsabilidad por su contenido, funcionamiento o uso, ni por ninguna pérdida o daño que pueda surgir por su uso de dichas herramientas. Por favor, ten precaución al emplear herramientas de IA con información personal, sensible o confidencial. Cualquier dato que envíes puede usar para entrenamiento de IA u otros fines. No hay garantía de que la información que proporciones se mantenga segura o confidencial. Deberías familiarizarte con las prácticas de privacidad y los términos de uso de cualquier herramienta de IA generativa antes de emplearla.

Elastic, Elasticsearch y las marcas asociadas son marcas registradas, logotipos o marcas registradas de Elasticsearch N.V. en Estados Unidos y otros países. Todos los demás nombres de empresas y productos son marcas registradas, logotipos o marcas registradas de sus respectivos propietarios.

Cómo optimizar un chatbot

1

Aprovecha las capacidades de GPT: Combina la relevancia de búsqueda de Elasticsearch con las capacidades de respuesta a preguntas de GPT de OpenAI, empleando la API de Finalización de Chat para devolver a las respuestas generadas por el modelo de usuario considerando estos k documentos principales como contexto.

2

Incorpora el análisis de sentimiento: Incorpora un modelo de análisis de sentimiento para dar conciencia de los comentarios y reacciones de los usuarios a medida que se desarrolla el diálogo.

3

Observabilidad: Además de los registros que capturan las interacciones con chatbots, es importante rastrear el tiempo de respuesta, la latencia y otras métricas relevantes del chatbot. De este modo, puedes identificar patrones, tendencias e incluso detectar anomalías.

Contenido relacionado

¿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