Aprimorando as capacidades de chatbots com PNL e busca vetorial no Elasticsearch.

Descubra como a busca vetorial e o PNL (Processamento de Linguagem Natural) trabalham juntos para aprimorar os recursos dos chatbots e veja como o Elasticsearch facilita esse processo.

Da busca vetorial às poderosas REST APIs, o Elasticsearch oferece aos desenvolvedores o kit de ferramentas de busca mais abrangente. Mergulhe em notebooks de exemplo no GitHub para experimentar algo novo. Você também pode iniciar seu teste gratuito ou executar o Elasticsearch localmente hoje mesmo.

Interfaces conversacionais existem há algum tempo e estão se tornando cada vez mais populares como forma de auxiliar em diversas tarefas, como atendimento ao cliente, recuperação de informações e automação de tarefas. Normalmente acessadas por meio de assistentes de voz ou aplicativos de mensagens, essas interfaces simulam a conversa humana para ajudar os usuários a resolver suas dúvidas com mais eficiência.

Com o avanço da tecnologia, os chatbots são usados para lidar com tarefas mais complexas — e rapidamente — sem deixar de oferecer uma experiência personalizada aos usuários. O processamento de linguagem natural (PLN) permite que os chatbots processem a linguagem do usuário, identifiquem a intenção por trás da mensagem e extraiam informações relevantes dela. Por exemplo, o Reconhecimento de Entidades Nomeadas extrai informações importantes de um texto, classificando-as em um conjunto de categorias. A Análise de Sentimentos identifica o tom emocional, e o Question Answering (Resposta a Perguntas) a “resposta” a uma consulta. O objetivo do PNL (Processamento de Linguagem Natural) é permitir que algoritmos processem a linguagem humana e executem tarefas que historicamente apenas os humanos eram capazes de realizar, como encontrar trechos relevantes em grandes quantidades de texto, resumir textos e gerar conteúdo novo e original.

Essas capacidades avançadas de PNL (Processamento de Linguagem Natural) são baseadas em uma tecnologia conhecida como busca vetorial. O Elasticsearch oferece suporte nativo para busca vetorial, realizando buscas exatas e aproximadas de k-vizinhos mais próximos (kNN), e para PNL (Processamento de Linguagem Natural), permitindo o uso de modelos personalizados ou de terceiros diretamente no Elasticsearch.

Neste artigo, exploraremos como a busca vetorial e o PNL (Processamento de Linguagem Natural) trabalham juntos para aprimorar as capacidades dos chatbots e demonstraremos como o Elasticsearch facilita esse processo. Vamos começar com uma breve visão geral da busca vetorial.

Embora os seres humanos consigam compreender o significado e o contexto da linguagem escrita, as máquinas não conseguem fazer o mesmo. É aí que entram os vetores. Ao converter o texto em representações vetoriais (representações numéricas do significado do texto), as máquinas podem superar essa limitação. Em comparação com uma busca tradicional, em vez de depender de palavras-chave e busca lexical baseada em frequências, os vetores permitem o processamento de dados textuais usando operações definidas para valores numéricos.

Isso permite que a busca vetorial localize dados que compartilham conceitos ou contextos semelhantes, usando distâncias no "espaço de incorporação" para representar a similaridade, dado um vetor de consulta. Quando os dados são semelhantes, os vetores correspondentes também serão semelhantes.

A busca vetorial não é utilizada apenas em aplicações de PNL (Processamento de Linguagem Natural), mas também em vários outros domínios que envolvem dados não estruturados, incluindo processamento de imagem e vídeo.

Em um fluxo de chatbot, podem existir diversas abordagens para as consultas dos usuários e, consequentemente, diferentes maneiras de aprimorar a recuperação de informações para uma melhor experiência do usuário. Como cada alternativa possui seu próprio conjunto de vantagens e possíveis desvantagens, é essencial levar em consideração os dados e recursos disponíveis, bem como o tempo de treinamento (quando aplicável) e a precisão esperada. Na seção seguinte, abordaremos esses aspectos para modelos de PNL (Processamento de Linguagem Natural) de resposta a perguntas.

Respostas a perguntas

Um modelo de perguntas e respostas (QA, na sigla em inglês) é um tipo de modelo de PNL (Processamento de Linguagem Natural) projetado para responder a perguntas feitas em linguagem natural. Quando os usuários têm dúvidas que exigem a inferência de respostas a partir de múltiplas fontes, sem que haja uma resposta preexistente nos documentos, os modelos generativos de perguntas e respostas podem ser úteis. No entanto, esses modelos podem ser computacionalmente dispendiosos e exigem grandes quantidades de dados para treinamento relacionado ao domínio, o que pode torná-los menos práticos em algumas situações, embora esse método possa ser particularmente valioso para lidar com questões fora do domínio.

Por outro lado, quando os usuários têm dúvidas sobre um tópico específico e a resposta correta está presente no documento, podem ser utilizados modelos de perguntas e respostas extrativas. Esses modelos extraem a resposta diretamente do documento original, fornecendo resultados transparentes e verificáveis, o que os torna uma opção mais prática para empresas ou organizações que desejam oferecer uma maneira simples e eficiente de responder a perguntas.

O exemplo abaixo demonstra o uso de um modelo de perguntas e respostas extrativo pré-treinado, disponível no Hugging Face e implantado no Elasticsearch, para extrair respostas de um determinado contexto:

Implantar modelos treinados.

Adicionar um modelo a um pipeline de ingestão de inferência.

Existem diversas maneiras de lidar com consultas de usuários e recuperar informações, e o uso de múltiplos modelos de linguagem e fontes de dados pode ser uma alternativa eficaz ao lidar com dados não estruturados. Para ilustrar isso, temos um exemplo do processamento de dados de um chatbot utilizado para responder a perguntas com respostas que consideram dados extraídos de documentos selecionados.

Conforme mostrado acima, o processamento de dados do nosso chatbot pode ser dividido em três partes:

  • Processamento vetorial: Esta etapa converte documentos em representações vetoriais.
  • Processamento da entrada do usuário: Esta etapa extrai informações relevantes da consulta do usuário e realiza busca semântica e recuperação híbrida.
  • Otimização: Esta etapa inclui o monitoramento e é crucial para garantir a confiabilidade do chatbot, o desempenho ideal e uma ótima experiência do usuário.

Processamento vetorial

Na etapa de processamento , o primeiro passo é determinar os componentes de cada documento para, em seguida, converter cada elemento em uma representação vetorial; essas representações podem ser criadas para uma ampla variedade de formatos de dados.

Existem vários métodos que podem ser usados para calcular embeddings, incluindo modelos pré-treinados e bibliotecas.

É importante notar que a eficácia da busca e recuperação nessas representações depende dos dados existentes e da qualidade e relevância do método utilizado.

À medida que os vetores são calculados, eles são armazenados no Elasticsearch com um tipo de campo dense_vector .

Processamento de entrada do usuário do chatbot

Do ponto de vista do usuário , após receber uma pergunta, é útil extrair todas as informações possíveis dela antes de prosseguir. Isso ajuda a entender a intenção do usuário e, neste caso, estamos usando um modelo de Reconhecimento de Entidades Nomeadas (NER) para auxiliar nesse processo. NER é o processo de identificar e classificar entidades nomeadas em categorias de entidades predefinidas.

Embora não seja um passo necessário, ao usar dados estruturados ou o resultado do modelo de PNL acima ou de outro modelo para categorizar a consulta do usuário, podemos restringir a pesquisa kNN usando um filtro. Isso ajuda a melhorar o desempenho e a precisão, reduzindo a quantidade de dados que precisam ser processados.

Busca semântica e recuperação híbrida

Como a solicitação surge de consultas do usuário e o chatbot precisa processar a linguagem humana com sua variabilidade e ambiguidade, a busca semântica é uma ótima opção. No Elasticsearch, você pode realizar uma busca semântica em uma única etapa, passando a string de consulta e o ID do modelo de incorporação para um objeto `query_vector_builder`. Isso vetorizará a consulta e realizará uma busca kNN para recuperar as k correspondências mais próximas em significado à consulta:

Exemplo completo: Como implantar um modelo de incorporação de texto e usá-lo para pesquisa semântica. O Elasticsearch utiliza a implementação Lucene do Okapi BM25, um modelo esparso , para classificar as consultas de texto quanto à relevância, enquanto modelos densos são usados para busca semântica. Para combinar os pontos fortes das correspondências vetoriais e das correspondências obtidas a partir da consulta de texto, você pode realizar uma recuperação híbrida :

A combinação de modelos esparsos e densos geralmente produz os melhores resultados.

Os modelos esparsos geralmente têm melhor desempenho em consultas curtas e terminologias específicas, enquanto os modelos densos aproveitam o contexto e as associações. Se você quiser saber mais sobre como esses métodos se comparam e se complementam, aqui comparamos o BM25 com dois modelos densos que foram treinados especificamente para recuperação de dados.

O resultado mais relevante geralmente é a primeira resposta fornecida ao usuário; o_score é um número usado para determinar a relevância do documento retornado.

Otimização de chatbot

Para ajudar a melhorar a experiência do usuário, o desempenho e a confiabilidade do seu chatbot, além de aplicar a pontuação híbrida, você pode incorporar as seguintes abordagens: Análise de Sentimento: Para fornecer informações sobre os comentários e reações dos usuários à medida que o diálogo se desenrola, você pode incorporar um modelo de análise de sentimento:

Funcionalidades do GPT : Como alternativa para aprimorar a experiência geral, você pode combinar a relevância de pesquisa do Elasticsearch com os recursos de resposta a perguntas do GPT da OpenAI, utilizando a API Chat Completion para retornar ao usuário respostas geradas pelo modelo, considerando esses k documentos principais como contexto. Prompt: "responda a esta pergunta <user_question> usando apenas este documento <top_search_result>"

Observabilidade: Garantir o desempenho de qualquer chatbot é crucial, e o monitoramento é um componente essencial para atingir esse objetivo. Além dos registros que capturam as interações do chatbot, é importante monitorar o tempo de resposta, a latência e outras métricas relevantes do chatbot. Dessa forma, você pode identificar padrões, tendências e até mesmo detectar anomalias. As ferramentas do Elastic Observability permitem coletar e analisar essas informações.

Resumo

Esta postagem do blog aborda o que são PNL (Processamento de Linguagem Natural) e busca vetorial e explora um exemplo de um chatbot usado para responder a perguntas de usuários, considerando dados extraídos da representação vetorial de documentos.

Conforme demonstrado, utilizando PNL (Processamento de Linguagem Natural) e busca vetorial, os chatbots são capazes de executar tarefas complexas que vão além de dados estruturados e direcionados. Isso inclui fazer recomendações e responder a perguntas específicas relacionadas a produtos ou negócios, usando múltiplas fontes e formatos de dados como contexto, além de proporcionar uma experiência personalizada ao usuário.

Os casos de uso variam desde o atendimento ao cliente, auxiliando os clientes com suas dúvidas, até o auxílio a desenvolvedores com suas perguntas, fornecendo orientações passo a passo, sugerindo recomendações ou até mesmo automatizando tarefas. Dependendo do objetivo e dos dados existentes, outros modelos e métodos também podem ser utilizados para alcançar resultados ainda melhores e aprimorar a experiência geral do usuário.

Aqui estão alguns links sobre o assunto que podem ser úteis:

  1. Como implementar o processamento de linguagem natural (PLN): Primeiros passos
  2. Visão geral da busca por similaridade de imagens no Elasticsearch
  3. ChatGPT e Elasticsearch: OpenAI encontra dados privados
  4. Monitor OpenAI API and GPT models with OpenTelemetry and Elastic (Monitore a API do OpenAI e os modelos do GPT com o OpenTelemetry e a Elastic)
  5. 5 motivos pelos quais os líderes de TI precisam da busca vetorial para melhorar a experiência de busca.

Ao incorporar PNL (Processamento de Linguagem Natural) e busca vetorial nativa no Elasticsearch, você pode aproveitar sua velocidade, escalabilidade e recursos de busca para criar chatbots altamente eficientes e eficazes, capazes de lidar com grandes quantidades de dados, sejam eles estruturados ou não estruturados.

Pronto para começar? Inicie um teste gratuito do Elastic Cloud.

Neste artigo, podemos ter usado ou podemos fazer referência a ferramentas de IA generativa de terceiros, que são propriedade e operadas por seus respectivos proprietários. A Elastic não tem qualquer controle sobre as ferramentas de terceiros e não nos responsabilizamos pelo seu conteúdo, funcionamento ou utilização, nem por quaisquer perdas ou danos que possam resultar da sua utilização. Tenha cautela ao usar ferramentas de IA com informações pessoais, sensíveis ou confidenciais. Quaisquer dados que você enviar poderão ser usados para treinamento de IA ou outros fins. Não há garantia de que as informações fornecidas serão mantidas em segurança ou confidenciais. Você deve se familiarizar com as práticas de privacidade e os termos de uso de quaisquer ferramentas de IA generativa antes de utilizá-las.

Elastic, Elasticsearch e marcas associadas são marcas comerciais, logotipos ou marcas registradas da Elasticsearch NV nos Estados Unidos e em outros países. Todos os outros nomes de empresas e produtos são marcas comerciais, logotipos ou marcas registradas de seus respectivos proprietários.

Como otimizar um chatbot

1

Aproveite os recursos do GPT: combine a relevância de pesquisa do Elasticsearch com os recursos de resposta a perguntas do GPT da OpenAI, utilizando a API Chat Completion para retornar ao usuário respostas geradas pelo modelo, considerando esses k documentos principais como contexto.

2

Incorpore a análise de sentimentos: Incorpore um modelo de análise de sentimentos para fornecer informações sobre os comentários e reações dos usuários à medida que o diálogo se desenrola.

3

Observabilidade: Além dos registros que capturam as interações do chatbot, é importante monitorar o tempo de resposta, a latência e outras métricas relevantes do chatbot. Ao fazer isso, você pode identificar padrões, tendências e até mesmo detectar anomalias.

Conteúdo relacionado

Pronto para criar buscas de última geração?

Uma pesquisa suficientemente avançada não se consegue apenas com o esforço de uma só pessoa. O Elasticsearch é impulsionado por cientistas de dados, especialistas em operações de aprendizado de máquina, engenheiros e muitos outros que são tão apaixonados por buscas quanto você. Vamos nos conectar e trabalhar juntos para construir a experiência de busca mágica que lhe trará os resultados desejados.

Experimente você mesmo(a)