Introdução ao RAG no desenvolvimento de IA

Este artigo é uma introdução à geração aumentada por recuperação (RAG): o que é, como funciona e key conceitos.

O que é geração aumentada por recuperação?

O RAG é uma técnica que permite que um modelo de linguagem ampla (LLM) gere respostas enriquecidas aumentando o prompt de um usuário com dados de suporte recuperados de uma fonte de informações externa. Ao incorporar essas informações recuperadas, o RAG permite que o site LLM gere respostas mais precisas e de melhor qualidade em comparação com a ausência de contexto adicional no prompt.

Por exemplo, suponha que o senhor esteja criando um chatbot de perguntas e respostas para ajudar os funcionários a responder perguntas sobre os documentos de propriedade da sua empresa. Um LLM autônomo não conseguirá responder com precisão às perguntas sobre o conteúdo desses documentos se não tiver sido treinado especificamente para isso. O site LLM pode se recusar a responder devido à falta de informações ou, pior ainda, pode gerar uma resposta incorreta.

O RAG aborda esse problema primeiro recuperando informações relevantes dos documentos da empresa com base na consulta de um usuário e, em seguida, fornecendo as informações recuperadas para o site LLM como contexto adicional. Isso permite que o LLM gere uma resposta mais precisa com base nos detalhes específicos encontrados nos documentos relevantes. Em essência, o RAG permite que o site LLM "consulte" as informações recuperadas para formular sua resposta.

Componentes principais de um aplicativo RAG

Um aplicativo RAG é um exemplo de um sistema de IA composto: Ele amplia os recursos de linguagem do modelo sozinho, combinando-o com outras ferramentas e procedimentos.

Ao usar um LLM autônomo, um usuário envia uma solicitação, como uma pergunta, para o LLM, e o LLM responde com uma resposta baseada exclusivamente em seus dados de treinamento.

Em sua forma mais básica, os seguintes passos acontecem em um aplicativo RAG:

  • Recuperação: A solicitação do usuário é usada para consultar alguma fonte externa de informações. Isso pode significar a consulta a um armazenamento de vetores, a realização de uma pesquisa de palavras-chave em algum texto ou a consulta a um banco de dados SQL. O objetivo do passo a passo da recuperação é obter dados de suporte que ajudem o site LLM a fornecer uma resposta útil.

  • Aumento: Os dados de suporte do passo de recuperação são combinados com a solicitação do usuário, geralmente usando um padrão com formatação adicional e instruções para o LLM, para criar um prompt.

  • Geração: O prompt resultante é passado para o LLM, e o LLM gera uma resposta à solicitação do usuário.

O fluxo de um aplicativo RAG, desde a solicitação do usuário até a recuperação de dados e a resposta.

Esta é uma visão geral simplificada do processo do RAG, mas é importante observar que a implementação de um aplicativo RAG envolve muitas tarefas complexas. O pré-processamento dos dados de origem para torná-los adequados para uso no RAG, a recuperação eficaz dos dados, a formatação do prompt aumentado e a avaliação das respostas geradas exigem consideração e esforço cuidadosos. Esses tópicos serão abordados com mais detalhes em seções posteriores deste guia.

Por que usar o RAG?

A tabela a seguir descreve os benefícios de usar o RAG em comparação com um LLM autônomo:

Somente com um LLM

Uso de LLMs com o RAG

Sem conhecimento de propriedade: Os LLMs geralmente são treinados em dados disponíveis publicamente, portanto, não podem responder com precisão a perguntas sobre os dados internos ou proprietários de uma empresa.

Os aplicativos RAG podem incorporar dados proprietários: Um aplicativo RAG pode fornecer documentos proprietários, como memorandos, e-mails e documentos de design para um LLM, permitindo que ele responda a perguntas sobre esses documentos.

O conhecimento não é atualizado em tempo real: Os LLMs não têm acesso a informações sobre eventos que ocorreram depois que eles foram treinados. Por exemplo, um LLM independente não pode lhe dizer nada sobre os movimentos das ações hoje.

Os aplicativos RAG podem acessar dados em tempo real: Um aplicativo RAG pode fornecer ao site LLM informações oportunas de uma fonte de dados atualizada, permitindo que ele forneça respostas úteis sobre eventos após a data limite de treinamento.

Falta de citações: Os LLMs não podem citar fontes específicas de informação ao responder, deixando o usuário incapaz de verificar se a resposta é factualmente correta ou uma alucinação.

O RAG pode citar fontes: Quando usado como parte de uma candidatura ao RAG, um LLM pode ser solicitado a citar suas fontes.

Falta de controles de acesso a dados (ACLs): Os LLMs sozinhos não podem fornecer de forma confiável respostas diferentes para usuários diferentes com base em permissões de usuário específicas.

O RAG permite a segurança de dados/ACLs: O passo a passo de recuperação pode ser projetado para encontrar apenas as informações que o usuário tem credenciais para acessar, permitindo que um aplicativo RAG recupere seletivamente informações pessoais ou proprietárias.

Tipos de RAG

A arquitetura RAG pode trabalhar com dois tipos de dados de suporte:

Dados estruturados

Dados não estruturados

Definição

Dados tabulares organizados em linhas e colunas com um esquema específico, por exemplo, tabelas em um banco de dados.

Dados sem uma estrutura ou organização específica, por exemplo, documentos que incluem texto e imagens ou conteúdo multimídia, como áudio ou vídeos.

Exemplo de fonte de dados

  • Registros de clientes em um sistema de BI ou data warehouse

  • Dados de transação de um banco de dados SQL

  • Dados de APIs de aplicativos (como SAP, Salesforce, etc.)

  • Registros de clientes em um sistema de BI ou data warehouse

  • Dados de transação de um banco de dados SQL

  • Dados de APIs de aplicativos (como SAP, Salesforce, etc.)

  • PDFs

  • Documentos do Google ou do Microsoft Office

  • Wikis

  • Imagens

  • Vídeos

A escolha dos dados para o RAG depende do seu caso de uso. O restante do livro de receitas se concentra no RAG para dados não estruturados.