O padrão RAG (Retrieval-Augmented Generation, Geração aumentada de recuperação) é uma abordagem padrão do setor para criar aplicativos que usam modelos de linguagem grande para raciocinar sobre dados específicos ou proprietários que ainda não são conhecidos pelo modelo de linguagem grande. Embora a arquitetura seja simples, projetar, experimentar e avaliar soluções RAG que se encaixam nessa arquitetura envolve muitas considerações complexas que se beneficiam de uma abordagem científica rigorosa.
Este guia é apresentado como uma série. Cada artigo da série abrange uma fase específica no projeto de soluções RAG.
Essas considerações abordadas pelos artigos deste guia incluem:
- Determinar quais documentos de teste e consultas usar durante a avaliação
- Escolher uma estratégia de fragmentação
- Determinar o que e como você deve enriquecer os fragmentos
- Escolher o modelo de incorporação correto
- Determinar como configurar o índice de pesquisa
- Determinar quais pesquisas você deseja realizar: busca em vetores, texto completo, híbrida, várias manuais
- Avaliação de cada etapa
Os artigos deste guia abordam todas essas considerações.
Arquitetura RAG
Figura 1. Arquitetura RAG de alto nível
Fluxo do aplicativo RAG
A seguir está um fluxo de alto nível para um aplicativo RAG.
- O usuário emite uma consulta em uma interface de usuário de aplicativo inteligente.
- O aplicativo inteligente faz uma chamada de API para um orquestrador. O orquestrador pode ser implementado com ferramentas ou plataformas como Kernel Semântico, de prompt flow do Aprendizado de Máquina do Azure ou LangChain.
- O orquestrador determina qual pesquisa executar na Pesquisa de IA do Azure e emite a consulta.
- O orquestrador empacota os N principais resultados da consulta, empacota-os como contexto dentro de um prompt, juntamente com a consulta, e envia o prompt para o modelo de linguagem grande. O orquestrador retorna a resposta ao aplicativo inteligente para o usuário ler.
Fluxo de pipeline de dados RAG
A seguir está um fluxo de alto nível para um pipeline de dados que fornece dados de fundamentação para um aplicativo RAG.
Os documentos são enviados por push ou puxados para um pipeline de dados.
O pipeline de dados processa cada documento individualmente com as seguintes etapas:
- Documento em fragmentos - Divida o documento em partes semanticamente relevantes que, de forma ideal, tenham uma única ideia ou conceito.
- Enriquecer fragmentos - Adiciona campos de metadados criados a partir do conteúdo nos fragmentos a campos discretos, como título, resumo e palavras-chave.
- Incorporar fragmentos - Usa um modelo de incorporação para vetorizar o fragmento e todos os outros campos de metadados usados para buscas em vetores.
- Persistir fragmentos - Armazena os fragmentos no índice de pesquisa.
Considerações sobre o desenho e a avaliação do RAG
Há uma variedade de decisões de implementação que você deve tomar ao projetar sua solução RAG. A figura a seguir ilustra algumas dessas decisões.
Figura 2. Perguntas que surgem ao projetar a solução RAG
A série de artigos deste guia aborda essas considerações e muito mais.
- Determinar o domínio da solução - Discute a importância de definir claramente os requisitos de negócios para a solução RAG
- Reunir documentos de teste representativos - Discute considerações e orientações sobre a coleta de documentos de teste para sua solução RAG que são representativos de seu corpus.
- Reunir consultas de teste - Discute quais informações você deve coletar junto com suas consultas de teste, fornece orientação sobre como gerar consultas sintéticas e consultas que seus documentos não abrangem.
- Entenda a economia de fragmentação - Discute os fatores a serem considerados ao analisar o custo geral de sua solução de fragmentação para seu corpus de texto
- Executar análise de documento - Fornece uma lista de perguntas que você pode fazer ao analisar um tipo de documento que ajuda a determinar o que no documento você deseja ignorar ou excluir, o que deseja capturar em fragmentos e como deseja fragmentar
- Compreender as abordagens de fragmentação - Descreve as diferentes abordagens para fragmentação, como aumento de modelo de linguagem grande e baseado em frases, tamanho fixo, personalizado, tamanho grande, análise de layout de documento, usando modelos de aprendizado de máquina
- Entender como a estrutura do documento afeta a fragmentação - Discute como o grau de estrutura de um documento influencia sua escolha por uma abordagem de fragmentação
Fase de enriquecimento de agrupamentos
- Limpar fragmentos - Discute diferentes abordagens de limpeza que você pode implementar para dar suporte a correspondências de proximidade, eliminando possíveis diferenças que não são importantes para a semântica do texto
- Aumentar fragmentos - Discute alguns campos de metadados comuns com os quais você deve considerar aumentar seus dados de fragmentos, juntamente com algumas orientações sobre seus possíveis usos na pesquisa e ferramentas ou técnicas que são comumente usadas para gerar o conteúdo de metadados
- Compreender a importância do modelo de incorporação - Discute como um modelo de incorporação pode ter um efeito significativo na relevância dos resultados da busca em vetores
- Escolha de um modelo de incorporação - Fornece orientação sobre como escolher um modelo de incorporação
- Avaliar modelos de incorporação - Discute dois meios de avaliar um modelo de incorporação: visualização das incorporações e cálculo das distâncias de incorporação
Fase de recuperação de informações
- Criar índice de pesquisa - Discute algumas decisões importantes que você deve tomar para a configuração de busca em vetores que se aplica a campos vetoriais
- Reconhecimento das opções de pesquisa - Fornece uma visão geral dos tipos de pesquisa que você pode considerar, como busca em vetores, texto completo, híbrida e várias manuais. Fornece orientação sobre como dividir uma consulta em subconsultas, filtrando consultas
- Avaliar pesquisas - Fornece orientação sobre como avaliar sua solução de pesquisa
Fase de avaliação de ponta a ponta do modelo de linguagem grande
- Compreender métricas de avaliação de modelos de linguagem grande - Fornece uma visão geral de várias métricas que você pode usar para avaliar a resposta de modelos de linguagem grande, incluindo fundamentação, integridade, utilização e relevância
- Compreender as métricas de similaridade e de avaliação - Fornece uma pequena lista de métricas de similaridade e de avaliação que você pode usar ao avaliar sua solução RAG
- Compreender a importância da documentação, dos relatórios e da agregação - Discute a importância de documentar os hiperparâmetros, juntamente com os resultados da avaliação, a agregação dos resultados de várias consultas e a visualização dos resultados
- O RAG Experiment Accelerator - Aborda como o repositório GitHub do RAG Experiment Accelerator pode ser usado para ajudar as equipes a encontrar as melhores estratégias para a implementação do RAG executando vários experimentos, persistindo e avaliando os resultados
Abordagem estruturada
Devido ao número de etapas e variáveis, é importante projetar sua solução RAG por meio de um processo de avaliação estruturado. Avalie os resultados de cada etapa e adapte-se, atendendo às suas necessidades. Embora você deva avaliar cada etapa de forma independente para otimização, o resultado final é o que será experimentado por seus usuários. Certifique-se de entender todas as etapas desse processo, antes de determinar seus próprios critérios de aceitação para cada etapa individual.