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 os principais conceitos.
O que é a geração aumentada por recuperação?
RAG é uma técnica que permite que um modelo de linguagem grande (LLM) gere respostas enriquecidas ao aumentar o prompt do usuário com dados de suporte recuperados de uma fonte externa de informações. Ao incorporar essas informações recuperadas, o RAG permite que o LLM gere respostas mais precisas e de maior qualidade em comparação com a não utilização de contexto adicional no prompt.
Por exemplo, suponha que você 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 eles. O 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 do usuário e, em seguida, fornecendo as informações recuperadas ao 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 LLM "consulte" as informações recuperadas para formular sua resposta.
Principais componentes de um aplicativo RAG
Um aplicativo RAG é um exemplo de um sistema de IA composto: Ele expande as funcionalidades 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, as seguintes etapas ocorrem 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 repositório 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 da etapa de recuperação é obter dados de suporte que ajudem o LLM a fornecer uma resposta útil.
- Aumento: Os dados de suporte da etapa de recuperação são combinados com a solicitação do usuário, frequentemente usando um modelo 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.
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. Pré-processar os dados de origem para torná-los adequados para uso em RAG, recuperar dados de forma eficaz, formatar o prompt aumentado e avaliar as respostas geradas requerem 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:
Com um LLM isolado | Usando LLMs com RAG |
---|---|
Sem conhecimento proprietário: LLMs são geralmente treinados com dados disponíveis publicamente, então eles não podem responder com precisão a perguntas sobre dados internos ou proprietários de uma empresa. | Aplicativos RAG podem incorporar dados proprietários: Uma aplicativo RAG pode fornecer documentos proprietários, como memorandos, emails 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 autônomo não pode informar nada sobre os movimentos das ações hoje. | Aplicações RAG podem acessar dados em tempo real: Uma aplicação RAG pode fornecer ao LLM informações atualizadas de uma fonte de dados atualizada, permitindo que ele forneça respostas úteis sobre eventos após sua data de corte de treinamento. |
Falta de citações: 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 um aplicativo 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 dos dados/ACLs: A etapa de recuperação pode ser projetada para encontrar somente 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 fontes 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 |
Sua escolha de 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.