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

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

Essa tecnologia mostrou recursos incríveis usando aplicativos como o Gemini. Você deve estar 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. É possível melhorar muito os resultados da pesquisa do usuário com a ajuda do aprendizado de máquina.

É possível criar uma interface em que os usuários escrevem perguntas, que são enviadas para um modelo de linguagem grande (LLM, na sigla em inglês), como o Gemini, e depois mostram 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 insere a seguinte consulta:

What are the features included in Interop 24?

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

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

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

Usar engenharia de comando

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

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

Continuando com nosso exemplo de interoperabilidade, a primeira etapa é fornecer o conteúdo completo do artigo como contexto. Em seguida, adicione a pergunta como a entrada para o LLM 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 algo como o seguinte:

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 a resposta é baseada no contexto fornecido.

Escalonar verticalmente com a RAG

Por exemplo, em vez de responder a uma pergunta sobre um único artigo, queremos que o LLM responda mais perguntas sobre web.dev, usando qualquer artigo como contexto adicional. Embora isso possa ser possível em sites menores, considerando a janela de contexto do Genmini 1.5 de 1 milhão de tokens, solicitações maiores são mais lentas e mais caras para serem executadas.

Os comprimentos de entrada e saída dos LLMs são medidos e cobrados em tokens, que são uma maneira de representar uma sequência comum de caracteres encontrada em uma entrada de texto. O número de tokens geralmente é maior que o número de palavras. Por exemplo, a entrada no primeiro exemplo tinha 775 palavras, representadas por 1.097 tokens. LLMs diferentes podem calcular tokens de maneira 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 para o comando do LLM. Essa tarefa precisa ter duas partes:

  1. Adicione o conteúdo dos principais artigos como contexto ao solicitar o LLM.
  2. Pesquise no conteúdo artigos relacionados a "Quais são os recursos incluídos na interoperabilidade 2024?".

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

A entrada vai ficar assim:

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 aqueles familiarizados com 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á algumas deficiências para a abordagem.

  • A pesquisa de texto completo ajuda a IA a encontrar correspondências exatas de palavra-chave. No entanto, eles não conseguem determinar o significado pretendido por trás da consulta de um usuário. Isso pode levar a saídas 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 levar a resultados irrelevantes.
  • A pesquisa de texto completo pode gerar resultados que contêm as palavras-chave, mas não se alinham ao objetivo do usuário.

A pesquisa semântica é uma técnica para melhorar a precisão da pesquisa focando nestes aspectos principais:

  • Intenção do pesquisador: tenta entender a razão pela qual um usuário está pesquisando algo. O que ele está tentando encontrar ou realizar?
  • Significado contextual: interpreta palavras e frases em relação ao texto ao redor, bem como outros fatores, como a localização ou o histórico de pesquisa do usuário.
  • Relação entre conceitos: a pesquisa semântica usa gráficos de conhecimento (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, a saída dela depende da finalidade geral da consulta, e não de palavras-chave. Isso significa que uma ferramenta pode determinar documentos relevantes, mesmo quando a palavra-chave exata não está presente. Também pode evitar resultados em que a palavra está presente, mas tem um significado diferente.

No momento, é possível implementar duas ferramentas de pesquisa que empregam pesquisa semântica: Vertex AI para Pesquisa e Algolia AI Search.

Extrair respostas do conteúdo publicado

Você aprendeu a usar engenharia de comando para permitir que um LLM forneça respostas relacionadas a conteúdo que nunca é visto, adicionando contexto ao comando. Além disso, você aprendeu a escalonar essa abordagem de artigos individuais para um corpus de conteúdo inteiro usando a técnica de Geração aumentada de recuperação (RAG, na sigla em inglês). Você aprendeu como a pesquisa semântica pode melhorar ainda mais os resultados das consultas de pesquisa do usuário, implementando melhor o RAG no seu produto.

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