Os rápidos avanços na IA generativa, e mais especificamente nos grandes modelos de linguagem, deram origem a inúmeras tecnologias, algumas das quais prometem revolucionar a forma como interagimos com os dados.
Neste artigo, vamos falar sobre o potencial de um diálogo direto com os dados, em particular através da Geração Aumentada por Recuperação, conhecida como RAG.
O que é a geração aumentada por recuperação?
A esta altura, provavelmente estás a perguntar-te: o que é a Geração Aumentada por Recuperação (RAG)? Em termos simples, a Geração Aumentada por Recuperação é um método que permite que as aplicações te permitam «conversar» com os teus dados, quase como se estivesses a conversar com um bibliotecário bem informado e sempre atualizado.
A Geração Aumentada por Recuperação deve o seu nome ao facto de «aumentar» o Modelo Generativo (como nos Grandes Modelos de Linguagem ou LLM) com informações recuperadas de bases de dados específicas, bases de conhecimento ou outras fontes.
Vamos analisar isto um pouco melhor.
Recuperação de informação
O RAG utiliza uma técnica chamada «Recuperação de Informação» ou, para ser mais específico, «Pesquisa Semântica». O que a pesquisa semântica faz é usar «word embeddings» para representar palavras. E se estás a coçar a cabeça a pensar o que são «word embeddings», basta saberes que são uma representação vetorial das palavras. Isso permite que palavras semanticamente próximas tenham representações vetoriais semelhantes num espaço euclidiano.
Isso significa que palavras semanticamente próximas estarão «próximas» umas das outras nesse espaço, ou terão vetores semelhantes. Assim, quando um utilizador introduz uma pergunta, esta pode ser convertida num vetor. Depois, é possível executar um algoritmo de pesquisa por semelhança de vetores numa base de dados ou num motor de busca, obtendo-se resultados semanticamente semelhantes.

A mecânica do RAG
Como é que o RAG funciona, afinal?
Na sua forma mais simples, a arquitetura RAG usa dois tipos de modelos: um Modelo de Incorporação e um Modelo de Geração de Linguagem (também conhecido como LLM). Também inclui uma Base de Dados de Vetores para armazenar os vetores e um mecanismo para extrair os dados das Fontes de Dados.

Aqui está um passo a passo de como funciona:
- Agregação de dados: um ETL ou um mecanismo semelhante pode consolidar vários tipos de dados — sejam bases de dados estruturadas, blogs, feeds de notícias ou até transcrições de conversas — num formato padronizado, utilizando o modelo de Embeddings para armazenar as representações vetoriais na Base de Dados Vetorial.
- Recuperação: Estas bases de dados vetoriais foram concebidas para pesquisas rápidas, garantindo que o sistema consiga localizar e utilizar rapidamente a informação certa.
- Geração: Quando fazes uma pergunta ao sistema, este pesquisa a base de dados vetorial para encontrar a informação mais relevante e atualizada. Essa informação, combinada com o conhecimento de base do LLM, produz uma resposta detalhada e precisa. Por outras palavras, crias um prompt que inclui a pergunta original, o histórico da conversa (potencialmente) e os resultados da pesquisa, e depois pedes ao LLM para prever o que vem a seguir, usando apenas os resultados da pesquisa.
Uma grande vantagem deste processo é que ele limita as «alucinações» dos LLMs e permite que as respostas sejam efetivamente fundamentadas, o que significa que a arquitetura RAG é particularmente útil para resolver alguns dos problemas e limitações bem conhecidos dos LLMs. Vamos ver mais de perto quais são essas limitações.
As limitações dos grandes modelos de linguagem (LLMs)
A maioria de nós já está familiarizada com as capacidades dos Grandes Modelos de Linguagem. Eles são capazes de gerar texto com base em texto (entrada) e num contexto (memória de curto prazo), utilizando uma gigantesca rede neural, muitas vezes composta por milhares de milhões de parâmetros (ou milhares de milhões, se estiveres nos EUA). O exemplo mais proeminente atualmente é o GPT-4 da OpenAI (código fechado, disponível através da API e da aplicação muito conhecida ChatGPT).
Ainda assim, apesar do enorme potencial dos LLMs, há algumas limitações que deves ter em conta e que a Geração Aumentada por Recuperação pode ajudar a minimizar.
Os dados podem não estar atualizados
Os LLMs podem ser robustos, gerar textos semelhantes aos humanos e são extremamente eficientes nisso. No entanto, são treinados com um conjunto finito de dados, que por vezes se baseia em informações desatualizadas. Por exemplo, no momento em que este artigo foi escrito, o GPT-4 estava a fornecer resultados a partir de dados com os quais foi treinado apenas até setembro de 2021. Isso foi há mais de dois anos. Inevitavelmente, isso pode ter um impacto em alguns dos resultados que apresenta.
A Geração Aumentada por Recuperação resolve isso recorrendo à Base de Dados Vectorial, que contém toda a informação atualizada.
Os LLMs não conseguem citar as suas fontes
Se fizeres uma pergunta a um modelo sobre algo em que ele foi treinado (por exemplo, na Wikipédia), ele será capaz de responder, mas não te dirá de onde veio essa informação. Isso acontece porque este tipo de modelos não consegue indicar a fonte da sua informação.
Com o RAG, os artigos de conhecimento são armazenados na Base de Dados Vectorial juntamente com referências à fonte original.
Alucinações
Os modelos também tendem a «alucinar». Isto significa que podem inventar coisas à medida que avançam. Existem parâmetros (por exemplo, a temperatura) que podem ser ajustados para minimizar isto, mas não há garantia de que a resposta esteja correta, ou de que o modelo não tenha simplesmente «inventado» um novo facto. No que diz respeito a estas alucinações, os modelos podem, por vezes, produzir ficção muito plausível e, outras vezes, simplesmente disparates óbvios.
Com o RAG, as alucinações são limitadas, uma vez que o LLM é instruído a utilizar explicitamente apenas os resultados da pesquisa. Isso limita as alucinações.
Sem acesso a dados privados
Além disso, os LLMs não sabem nada sobre os dados confidenciais de uma organização. Isso acontece simplesmente porque nunca os «viram» de verdade. Ou seja, não foram treinados com esses dados.
Isso pode ser resolvido com uma técnica chamada «ajuste fino», que consiste em treinar um modelo base com dados mais específicos, para o «especializar». O CODEX, por exemplo, é um modelo ajustado para compreender linguagens de programação.
No entanto, muitas vezes isso não é viável, porque ou consome demasiados recursos, ou requer competências muito especializadas, ou simplesmente não há dados suficientes (em termos de qualidade e quantidade) para treinar um modelo que seja realmente útil.
Como já falámos, o RAG combina a recuperação de dados privados com a geração de texto, o que permite aceder a dados privados, apresentando, em muitos casos, melhores resultados do que a abordagem de afinação.

Aplicações práticas do RAG
Agora que já sabes o que é o RAG, como funciona e qual a sua importância, imagina o potencial de um sistema destes em áreas como:
- Apoio aos profissionais do conhecimento: Os profissionais têm acesso a dados em tempo real, informações sobre o setor e conhecimento da organização na ponta dos dedos, o que leva a uma melhor tomada de decisões e a uma maior produtividade.
- Atendimento ao cliente: Os chatbots com tecnologia RAG podem oferecer respostas rápidas, precisas e adequadas ao contexto, aumentando significativamente a satisfação dos utilizadores
- Desenvolvimento de software: assistentes ou agentes
Em conclusão
O que é particularmente promissor na arquitetura RAG é a sua capacidade de superar as limitações dos LLMs. Ao atualizar constantemente o seu repositório de conhecimento, a abordagem de Geração Aumentada por Recuperação (RAG) garante que os dados a que recorre estão atualizados. Além disso, ao poder indicar a fonte exata da sua informação, promove a transparência e a fiabilidade, ambas cruciais na era atual, orientada pelos dados.
