A metodologia RAG é uma forma prática e eficiente de aplicar modelos de linguagem avançados no ambiente corporativo. Descubra seu funcionamento, importância e como colocá-la em prática com o suporte do OpenAI e do LangChain.

Geralmente, a utilização de modelos de língua grandes (LLMs) no ambiente corporativo se enquadra em duas categorias principais. A primeira envolve a automação de tarefas relacionadas à linguagem, como a redação de um post em um blog, a elaboração de um e-mail ou a melhoria da gramática ou do tom de um e-mail já redigido. Em grande parte, essas tarefas não envolvem informações confidenciais da empresa.
A segunda categoria refere-se ao tratamento de informações internas da empresa, como documentos diversos (PDFs, planilhas, apresentações, etc.), que necessitam ser examinados, resumidos, consultados ou utilizados de maneira específica em uma atividade focada na linguagem. Essas atividades podem envolver a formulação de perguntas detalhadas sobre as implicações de uma cláusula em um contrato, por exemplo, ou a criação de uma representação visual das projeções de vendas para um futuro lançamento de projeto.
Existem duas razões pelas quais pode não ser apropriado utilizar um LLM de acesso público, como o ChatGPT, para analisar documentos internos. A primeira razão é a questão da confidencialidade, que é evidente. A segunda razão também é relevante: os dados utilizados para treinar um LLM público não contêm informações internas da empresa. Portanto, é improvável que o LLM forneça respostas úteis ao ser questionado sobre essas informações.
Reformulação: Introduza a técnica de recuperação com geração aumentada, também conhecida como RAG. Essa estratégia consiste em enriquecer um modelo de linguagem com informações externas, como documentos internos da empresa, que oferecem ao modelo o conhecimento e contexto necessários para gerar resultados precisos e relevantes para a aplicação específica. A RAG é uma maneira prática e eficiente de aplicar modelos de linguagem na empresa.
Neste artigo, vou apresentar de forma resumida o funcionamento do RAG, mostrar alguns casos de aplicação do RAG e disponibilizar um exemplo de código para configurar um framework RAG básico.
Como o processo de recuperação aprimorada é realizado.
O RAG, abreviação de Recuperação e Geração, é um processo composto por quatro etapas, sendo a primeira realizada uma vez e as demais repetidas conforme necessário.
Os quatro passos para melhorar a recuperação da geração atual.
- Absorver os documentos internos em um banco de dados em formato vetorial. Essa etapa pode demandar bastante trabalho de organização, formatação e segmentação, porém, esse é um custo inicial único. (Para uma introdução rápida a bancos de dados vetoriais, consulte este artigo.)
- Uma solicitação feita em palavras comuns, ou seja, a questão que um ser humano deseja fazer ao LLM.
- A etapa de aumento da consulta com dados recuperados através de pesquisa de similaridade do banco de dados vetorial envolve adicionar o contexto da loja de documentos à consulta antes de enviá-la para o LLM. O prompt instrui o LLM a responder considerando o contexto do conteúdo adicional, sendo o framework RAG responsável por essa tarefa através de um componente chamado recuperador, que realiza a pesquisa e adiciona o contexto relevante de forma automática.
- A resposta à consulta é ampliada pela Geração da Linguagem de Modelo de Linguagem (LLM).
Ao se concentrar no corpus do documento, o RAG assegura que o modelo gere respostas pertinentes e exatas, ao mesmo tempo em que evita respostas aleatórias ou ilógicas, conhecidas como “alucinações” na literatura.
Do ponto de vista do usuário, a criação de recuperação aumentada não será percebida de forma distinta de fazer uma pergunta para qualquer LLM com uma interface de chat, exceto pelo fato de o sistema ter um conhecimento mais aprofundado sobre o conteúdo abordado e oferecer respostas mais precisas.
A perspectiva do utilizador sobre o processo RAG.
- Um indivíduo está indagando sobre o LLM.
- O sistema RAG examina a biblioteca de documentos (repositório de vetores) e identifica informações importantes.
- O sistema RAG envia a pergunta do utilizador juntamente com informações extra obtidas na loja de documentos para o LLM.
- Atualmente, o LLM está capacitado para oferecer uma resposta coerente com base no conteúdo obtido da base de dados de vetores.
- O sistema RAG fornece a resposta do LLM e também tem a capacidade de disponibilizar links para os documentos utilizados na resposta à consulta.
Utilize exemplos para melhorar a eficácia da recuperação.
Os usos do RAG são diversos e estão em constante expansão. Abaixo estão apenas alguns exemplos de como e onde o RAG está sendo aplicado.
Motores de busca são ferramentas online que permitem pesquisar informações na Internet.
Os mecanismos de pesquisa introduziram o RAG com o objetivo de oferecer trechos em destaque mais precisos e atualizados em suas buscas. Qualquer uso de LLMs que necessite de informações sempre atualizadas é adequado para utilizar o RAG.
Sistemas dedicados a responder perguntas.
A Rede de Atenção à Resposta (RAG) foi empregada com o objetivo de aprimorar a precisão das respostas nos sistemas de perguntas e respostas. O método de recuperação de informações identifica trechos ou documentos pertinentes que contêm a resposta (por meio de comparação), e posteriormente produz uma resposta breve e pertinente com base nesses dados.
Venda online
O Recomendador Adaptativo de Grupos (RAG) tem a capacidade de aprimorar a interação do cliente em lojas online, oferecendo sugestões de produtos personalizadas e pertinentes. Ao coletar e analisar dados sobre as preferências do usuário e as características dos produtos, o RAG consegue fornecer recomendações mais acuradas e valiosas para os consumidores.
Bem-estar físico e mental.
A inteligência artificial na saúde tem um grande potencial, especialmente ao utilizar conhecimentos médicos de fontes externas para fornecer respostas precisas em aplicações de saúde, complementando o papel do profissional clínico.
Pode fornecer mais contexto ou detalhes sobre o texto para que eu possa parafraseá-lo adequadamente?
O Reconhecimento Automático de Gráficos (RAG) pode ser utilizado de forma eficaz em situações jurídicas, como fusões e aquisições (M&A), nos quais documentos legais elaborados oferecem informações para pesquisas, possibilitando uma rápida orientação em meio a um emaranhado de questões regulatórias.
Introduzindo registros e adições.
Antes de nos aprofundarmos no exemplo de código, é necessário analisar o procedimento de ingestão de documentos. A fim de incorporar documentos em um banco de dados vetorial para utilização no RAG, é preciso realizar o seguinte pré-processamento:
- Retire o conteúdo.
- Divida o texto em tokens.
- Elabore conjuntos de elementos individuais.
- Guarde os vetores em um banco de dados.
Qual é o significado disso?
Um arquivo pode ser em PDF, HTML ou em outro tipo de formato, e não nos preocupa a formatação ou o tipo de arquivo. O que realmente desejamos é o conteúdo puro – o texto em si.
Após a extração do texto, é necessário fragmentá-lo em partes menores, conhecidas como tokens, e então associar esses tokens a vetores de alta dimensão composto por números de ponto flutuante, geralmente de tamanho 768, 1024 ou até maiores. Esses vetores são denominados de incorporações, pois representam numericamente um trecho de texto em um espaço vetorial.
Existem várias formas de transformar texto em vetores incorporados. Geralmente, essa conversão é realizada por meio de uma ferramenta conhecida como modelo de incorporação, que pode ser um LLM ou um modelo de codificador autônomo. No exemplo apresentado a seguir, será utilizado o modelo de incorporação da OpenAI.
Uma observação acerca de LangChain.
LangChain é uma ferramenta que simplifica o desenvolvimento de aplicações que utilizam modelos de linguagem, possibilitando a interação entre agentes, tarefas e fontes de dados, além de facilitar o trabalho com dados e respostas de modelos.
O LangChain é uma ferramenta valiosa para iniciar a exploração do LLM, porém está em constante evolução. Por isso, é necessário dedicar esforço para manter todas as bibliotecas atualizadas, principalmente se a aplicação tiver muitas partes em movimento com diferentes bibliotecas Python em estágios distintos de desenvolvimento. Uma nova estrutura, chamada LlamaIndex, também surgiu para atender aplicações de dados LLM, trazendo consigo mais funcionalidades.
Tanto o LangChain quanto o LlamaIndex oferecem amplas bibliotecas para processar, analisar e coletar informações de diversas fontes de dados, como texto, PDFs, e-mails, sistemas de mensagens e bancos de dados. Utilizar essas bibliotecas simplifica a análise de diferentes tipos de dados e a extração de conteúdo de diferentes formatos, o que justifica o investimento necessário.
Uma ilustração básica de RAG
Vamos criar uma aplicação básica “Hello World” RAG utilizando Python, LangChain e um modelo de chat da OpenAI. Ao unir a capacidade linguística de um LLM com o conhecimento específico contido em um único documento, nosso aplicativo simples permitirá que façamos perguntas em inglês ao modelo, o qual responderá consultando o conteúdo do documento.
Para o nosso documento, iremos utilizar o discurso do Presidente Biden feito em 7 de fevereiro de 2023, durante o Estado da União. Caso deseje fazer o mesmo em casa, é possível baixar o texto do discurso no link fornecido abaixo.
Uma edição finalizada deste aplicativo possibilitaria que coleções particulares de documentos, como arquivos do Word e PDFs, fossem pesquisadas por meio de perguntas em inglês. Neste momento, estamos desenvolvendo um sistema básico que não garante privacidade, uma vez que os documentos são enviados para um modelo público. Portanto, é recomendado não utilizar este aplicativo com documentos confidenciais.
Vamos utilizar os modelos de incorporação e linguagem fornecidos pelo OpenAI, junto com a biblioteca FAISS (Facebook AI Similarity Search) como nossa base de vetores, para apresentar um aplicativo RAG completo com o mínimo de esforço necessário. Em um próximo artigo, vamos criar um segundo exemplo mais simples usando um LLM totalmente local, sem enviar dados para fora do aplicativo. Optar por um modelo local requer mais trabalho e envolve mais componentes, por isso não é o exemplo ideal inicial.
Para montar o nosso sistema RAG básico, são necessários os seguintes elementos:
- Um conjunto de documentos. Neste caso, apenas um documento será utilizado.
- Um dispositivo que extrai e processa o texto de um documento para criar uma representação textual.
- Uma abordagem de incorporação. Esse método utiliza o documento processado previamente para gerar representações que refletem as partes do documento.
- Uma loja que vende conjuntos de dados vetoriais com um mecanismo de busca para encontrar itens semelhantes.
- Um programa de mestrado em Direito otimizado para responder e orientar em questionamentos.
- Um modelo de bate-papo para interagir com o LLM.
Os estágios de preparação.
O script original para o nosso programa RAG:

Puedo ayudarte con eso, pero necesitaría más información sobre el texto que deseas parafrasear. ¿Podrías proporcionar más detalles o contexto sobre el texto “IDG”?
Conforme ilustrado na imagem acima, a precisão da resposta do modelo à nossa pergunta inicial é evidente.
A OTAN, sigla para Organização do Tratado do Atlântico Norte, é uma aliança militar formada em 1949 por 30 países membros da América do Norte e da Europa. Seu principal objetivo é assegurar a defesa coletiva de seus integrantes, promovendo valores democráticos, cooperação e segurança, além de participar ativamente em operações de gestão de crises e manutenção da paz globalmente.
Corrente finalizada.
E a solução do modelo para a segunda pergunta é precisamente correta.
A Aliança do Atlântico Norte foi estabelecida em 4 de abril de 1949.
Corrente finalizada.
Como mencionado, LangChain facilita bastante os primeiros passos em aplicações LLM. Recomenda-se fortemente LangChain para iniciantes que desejam experimentar alguns exemplos simples. Essa ferramenta auxilia na compreensão da geração avançada de texto, incluindo a ingestão de documentos e as interações entre o banco de dados vetorial e o LLM, em vez de se concentrar apenas na canalização.
Para expandir para um conjunto de dados maior e implementar uma aplicação em ambiente de produção, será preciso aprofundar-se em LLMs locais, bancos de dados vetoriais e incorporações. Embora as implementações em produção exijam mais detalhes e personalização, os princípios básicos continuam os mesmos. Em futuros artigos, vamos abordar com mais detalhes LLMs locais, bancos de dados vetoriais e incorporações.