Upgrade da pesquisa no site: respostas contextuais com a IA generativa

IA generativa refere-se ao uso de inteligência artificial para criar novos conteúdos, como textos, imagens, músicas, áudios e vídeos. A IA generativa depende de um modelo de machine learning (ML) para aprender os padrões e relações em um conjunto de dados de conteúdo criado por humanos.

Essa tecnologia tem demonstrado recursos incríveis, por meio de aplicativos como Gemini (em inglês). Talvez você esteja se perguntando como implementar ferramentas de IA generativa nos meus produtos da Web?

Um caso de uso comum é fornecer aos usuários uma interface melhor para fazer perguntas sobre o conteúdo de um site. Você pode melhorar muito os resultados de pesquisa do usuário, com a ajuda do machine learning.

Você pode criar uma interface para os usuários escreverem perguntas, que serão enviados para um modelo de linguagem grande (LLM), como Gemini, e mostrar as respostas aos usuários.

Suponha que esse recurso existisse nesse site. Um usuário quer saber quais APIs estão incluídas no Interop 2024 e inseriram a seguinte consulta:

What are the features included in Interop 24?

Infelizmente, a saída provavelmente será incorreta por alguns motivos:

  • O usuário deu ao LLM pouco contexto para a pergunta, então ele é mais propenso a retornar respostas erradas ou alucinações.
  • O LLM provavelmente foi treinado antes da criação do Interop 2024 ou dos recursos dele decide então não tem conhecimento dessa informação.

Embora seja possível que os LLMs encontrem informações mais recentes, o treinamento do LLM os conjuntos de dados são inerentemente desatualizados. Manter resultados atualizados pode ser demorado e caro.

Usar engenharia de comando

Engenharia de comandos é um conjunto de técnicas para gerar o melhor resultado de um LLM.

Uma técnica é dar mais contexto no comando, tornando o LLM mais propensos a gerar conteúdo relacionado ao contexto.

Continuando com o exemplo da Interop, a primeira etapa é fornecer conteúdos do artigo como contexto. Em seguida, adicione a pergunta como entrada para LLM para responder. Exemplo:

Context:
Following on from the success of Interop 2022 and Interop 2023, we
are excited about the opportunity to collaborate once again with
all key browser vendors and other relevant stakeholders...
(trimmed to fit in this article)

Input:
What are the features included in Interop 2024?

O Gemini vai gerar um resultado parecido com este:

The features included in Interop 24 are Accessibility, CSS Nesting, Custom
Properties, Declarative Shadow DOM, font-size-adjust, HTTPS URLs for
WebSocket, IndexedDB, Layout, Pointer and Mouse Events, Popover, Relative
Color Syntax, requestVideoFrameCallback, Scrollbar Styling, @starting-style
and, transition-behavior, Text Directionality, text-wrap: balance,URL

Essa resposta é provavelmente muito melhor do que com um comando sem contexto, já que resposta é baseada no contexto fornecido.

Escalonar verticalmente com a RAG

Por exemplo, em vez de responder a uma pergunta sobre um único artigo, queremos o LLM para responder mais perguntas sobre o web.dev, usando qualquer artigo como mais contexto. Embora isso seja possível em sites menores, Janela de contexto de 1 milhão de tokens do Gemini 1.5, Comandos maiores são mais lentos e mais caros para serem executados.

Os comprimentos de entrada e saída dos LLMs são medidos e cobrados em tokens, de representar uma sequência comum de caracteres encontrada em uma entrada de texto. A número de tokens geralmente será maior que o número de palavras. Como exemplo, a entrada no primeiro exemplo tinha 775 palavras, representadas por 1097 tokens. LLMs diferentes podem calcular tokens de forma diferente, e a maioria fornece uma API ou um endpoint para calcular o número de tokens para entrada de texto.

Uma solução é fornecer artigos relevantes ao prompt do LLM. Essa tarefa precisa ser são divididas em duas partes:

  1. Adicione o conteúdo das principais matérias como contexto ao enviar comandos ao LLM.
  2. Pesquise o conteúdo por artigos relacionados a "Quais recursos estão incluídos no Interop 2024?".

Queremos que os resultados do Gemini retornem conteúdo com base nos seguintes artigos:

A entrada será semelhante a esta:

Context:
Article 1:
Over the past two years... (trimmed)

Article 2:
At the end of last year Interop 2023 wrapped up. This effort... (trimmed)

Article 3:
Following on from the success of Interop 2022... (trimmed)

Input:
What are the features included in Interop 2024?

Esse contexto produz a saída esperada.

* Accessibility * CSS Nesting * Custom Properties
* Declarative Shadow DOM * font-size-adjust
* HTTPS URLs for WebSocket * IndexedDB * Layout
* Pointer and Mouse Events * Popover * Relative Color Syntax
* requestVideoFrameCallback * Scrollbar Styling
* @starting-style and transition-behavior * Text Directionality
* text-wrap: balance * URL

Para quem conhece as técnicas de IA, essa abordagem usa RAG, uma prática comum para melhorar a probabilidade de respostas reais das ferramentas de IA generativa.

Embora a técnica RAG possa funcionar com a pesquisa normal de texto completo, há e desvantagens da abordagem.

  • A pesquisa de texto completo ajuda a IA a encontrar correspondências exatas de palavras-chave. No entanto, os LLMs não podem para determinar o significado por trás da consulta de um usuário. Isso pode levar a as saídas estiverem incompletas ou incorretas.
  • Pode haver problemas quando as palavras têm vários significados ou as consultas usam sinônimos. Por exemplo, "banco" (instituição financeira ou margem do rio) pode gerar a resultados irrelevantes.
  • A pesquisa de texto completo pode gerar resultados que contenham as palavras-chave, mas não estão alinhadas ao objetivo do usuário.

Pesquisa semântica é uma técnica para melhorar a precisão da pesquisa, concentrando-se nestes aspectos principais:

  • Intenção do usuário que faz a pesquisa: tenta entender por que um usuário está pesquisando por alguma coisa. O que ele está tentando encontrar ou realizar?
  • Significado contextual: interpreta palavras e frases em relação ao ao redor do texto, bem como outros fatores, como a localização ou pesquisa do usuário história.
  • Relação entre conceitos: a pesquisa semântica usa gráficos de informações (grandes redes de entidades relacionadas) e processamento de linguagem natural para entender como palavras e ideias estão conectadas.

Como resultado, quando você cria ferramentas com pesquisa semântica, o resultado da pesquisa depende na finalidade geral da consulta, e não nas palavras-chave. Isso significa que uma ferramenta pode determinar documentos relevantes, mesmo quando a palavra-chave exata não está presente. Ela pode também evitar resultados em que a palavra esteja presente, mas tenha um significado diferente.

No momento, você pode implementar duas ferramentas de pesquisa que utilizam a pesquisa semântica: a Vertex AI para Pesquisa e Pesquisa da Algolia AI.

Extrair respostas do conteúdo publicado

Você aprendeu a usar a engenharia de comando para permitir que um LLM dê respostas. relacionadas a conteúdo que nunca foi acessado, adicionando contexto ao comando. E você aprendeu a dimensionar essa abordagem de artigos individuais para um corpus inteiro de conteúdo usando o Geração Aumentada de Recuperação (RAG) técnica. Você aprendeu como a pesquisa semântica pode melhorar ainda mais os resultados para o usuário consultas de pesquisa, implementando melhor o RAG em seu produto.

É um problema conhecido que as ferramentas de IA generativa podem "alucinar", o que torna na melhor das hipóteses, às vezes não confiáveis ou, na pior das hipóteses, ativamente prejudiciais para um os negócios. Com essas técnicas, tanto usuários quanto desenvolvedores podem melhorar a a confiabilidade e, talvez, criar confiança nos resultados desses aplicativos.