IA generativa se refere ao uso de inteligência artificial para criar conteúdo, como texto, imagens, música, áudio e vídeos. A IA generativa usa um modelo de aprendizado de máquina (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, com aplicativos como o Gemini. Talvez você se pergunte: como implementar ferramentas de IA generativa nos produtos da Web?
Um caso de uso comum é oferecer aos usuários uma interface melhor para fazer perguntas sobre o conteúdo de um site. Você pode melhorar muito os resultados da pesquisa do usuário com a ajuda do aprendizado de máquina.
Crie uma pesquisa melhor em cada site
Você pode criar uma interface em que os usuários escrevem a pergunta, que é enviada para um modelo de linguagem grande (LLM), como o Gemini, e mostrar as respostas aos usuários.
Suponha que esse recurso exista no site. Um usuário quer saber quais APIs estão incluídas no Interop 2024 e fez a seguinte consulta:
What are the features included in Interop 24?
Infelizmente, a saída provavelmente será incorreta por alguns motivos:
- O usuário forneceu pouco contexto para a pergunta ao LLM. Portanto, o LLM é mais propenso a retornar respostas incorretas ou alucinações.
- O LLM provavelmente foi treinado antes da criação do Interop 2024 ou da definição dos recursos, então ele não tem conhecimento dessas informações.
Embora seja possível que os LLMs encontrem informações mais atuais, os conjuntos de dados de treinamento de LLMs são inerentemente desatualizados. Manter resultados atualizados pode ser muito demorado e caro.
Usar a engenharia de comando
A engenharia de comando é um conjunto de técnicas para gerar a melhor saída de um LLM.
Uma técnica é fornecer mais contexto no comando, aumentando a probabilidade de o LLM produzir 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 entrada para que o LLM responda. 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 a resposta é baseada no contexto fornecido.
Escalonar com a RAG
Por exemplo, em vez de responder a uma pergunta sobre um único artigo, queremos que o LLM responda a mais perguntas sobre o web.dev, usando qualquer artigo como contexto adicional. Embora isso seja possível para sites menores, considerando a janela de contexto de 1 milhão de tokens do Gemini 1.5, prompts maiores são mais lentos e mais caros para executar.
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 encontrados em uma entrada de texto. O número de tokens geralmente é maior do 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:
- Adicione o conteúdo dos principais artigos como contexto ao solicitar o LLM.
- Pesquise o conteúdo para encontrar artigos relacionados a "Quais são os recursos incluídos na Interop 2024?".
Queremos que os resultados do Gemini mostrem conteúdo com base nos seguintes artigos:
- Artigo 1: web.dev/blog/submit-your-proposals-for-interop-2024
- Artigo 2: web.dev/blog/interop-2023-wrapup
- Artigo 3: web.dev/blog/interop-2024
A entrada deve 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 quem conhece as técnicas de IA, essa abordagem usa o RAG, uma prática comum para melhorar a probabilidade de respostas reais de ferramentas de IA generativa.
Melhorar a saída com a pesquisa semântica
Embora a técnica RAG possa funcionar com a pesquisa de texto completo normal, há desvantagens nessa abordagem.
- A pesquisa de texto completo ajuda a IA a encontrar correspondências exatas de palavras-chave. No entanto, os LLMs não conseguem determinar o significado pretendido por trás da consulta de um usuário. Isso pode fazer com que as saídas fiquem incompletas ou incorretas.
- Podem ocorrer problemas quando as palavras têm vários significados ou as consultas usam sinônimos. Por exemplo, "banco" (instituição financeira versus banco de areia) pode levar a resultados irrelevantes.
- A pesquisa de texto completo pode gerar resultados que contêm as palavras-chave, mas não estão alinhados com o objetivo do usuário.
A 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 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 as palavras e ideias estão conectadas.
Como resultado, quando você cria ferramentas com pesquisa semântica, a saída da pesquisa depende da finalidade geral da consulta, e não das palavras-chave. Isso significa que uma ferramenta pode determinar documentos relevantes, mesmo quando a palavra-chave exata não está presente. Também é possível evitar resultados em que a palavra esteja presente, mas tenha um significado diferente.
No momento, é possível implementar duas ferramentas que usam a pesquisa semântica: Vertex AI para Pesquisa e Algolia AI para Pesquisa.
Extrair respostas do conteúdo publicado
Você aprendeu a usar a engenharia de comando para permitir que um LLM forneça respostas relacionadas a conteúdo que ele nunca viu, adicionando contexto ao comando. Além disso, você aprendeu a dimensionar essa abordagem de artigos individuais para um corpus inteiro de conteúdo usando a técnica Retrieval-Augmented Generation (RAG). 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, ativamente prejudiciais para uma empresa. Com essas técnicas, usuários e desenvolvedores podem melhorar a confiabilidade e, talvez, criar confiança na saída desses aplicativos.