O padrão Retrieval-Augmented Generation (RAG) é uma abordagem padrão do setor para criar aplicativos que usam modelos de linguagem para processar dados específicos ou proprietários que o modelo ainda não conhece. A arquitetura é simples, mas projetar, experimentar e avaliar soluções RAG que se encaixam nessa arquitetura envolvem muitas considerações complexas que se beneficiam de uma abordagem rigorosa e científica.
Este artigo é a introdução de uma série. Cada artigo da série cobre uma fase específica no projeto da solução RAG.
Os outros artigos desta série abrangem as seguintes considerações:
- Como determinar quais documentos de teste e consultas usar durante a avaliação
- Como escolher uma estratégia de fragmentação
- Como determinar quais pedaços você deve enriquecer e como enriquecê-los
- Como escolher o modelo de incorporação certo
- Como configurar o índice de pesquisa
- Como determinar quais pesquisas, como vetoriais, de texto completo, híbridas e manuais, você deve executar
- Como avaliar cada etapa
Arquitetura RAG
Fluxo de aplicativos RAG
O fluxo de trabalho a seguir descreve 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. Você pode implementar o orquestrador com ferramentas ou plataformas como Kernel Semântico, fluxo de prompt do Azure Machine Learning ou LangChain.
- O orquestrador determina qual pesquisa executar na Pesquisa de IA do Azure e emite a consulta.
- O orquestrador empacota os N superiores resultados da consulta. Ele empacota os principais resultados e a consulta como contexto dentro de um prompt e envia o prompt para o modelo de linguagem. O orquestrador retorna a resposta ao aplicativo inteligente para o usuário ler.
Fluxo do pipeline de dados RAG
O fluxo de trabalho a seguir descreve um fluxo de alto nível para um pipeline de dados que fornece dados de aterramento 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, concluindo as seguintes etapas:
- Fragmentar documento: divide o documento em partes semanticamente relevantes que, idealmente, têm uma única ideia ou conceito.
- Enriquecer partes: adiciona campos de metadados que o pipeline cria com base no conteúdo das partes. O pipeline de dados categoriza os metadados em campos discretos, como título, resumo e palavras-chave.
- Incorporar partes: usa um modelo de incorporação para vetorizar a parte e quaisquer outros campos de metadados usados para pesquisas vetoriais.
- Persistir blocos: armazena os blocos no índice de pesquisa.
Considerações sobre o projeto e a avaliação do RAG
Você deve tomar várias decisões de implementação enquanto projeta sua solução RAG. O diagrama a seguir ilustra algumas das perguntas que você deve fazer ao tomar essas decisões.
A lista a seguir fornece uma breve descrição do que você deve fazer durante cada fase do desenvolvimento da solução RAG.
Durante a fase de preparação , deverá:
- Determine o domínio da solução. Defina claramente os requisitos de negócios para a solução RAG.
- Reúna documentos de teste representativos. Reúna documentos de teste para sua solução RAG que sejam representativos de sua coleção de documentos.
- Reúna consultas de teste. Reúna informações e teste consultas e gere consultas sintéticas e consultas que seus documentos não cobrem.
Durante a fase de fragmentação, você deve:
- Entenda a economia do fragmento. Entenda quais fatores considerar ao avaliar o custo geral de sua solução de fragmentação para sua coleção de texto.
- Realizar análise documental. Faça as seguintes perguntas para ajudá-lo a tomar decisões ao analisar um tipo de documento:
- Que conteúdo do documento pretende ignorar ou excluir?
- Que conteúdo você deseja capturar em partes?
- Como você quer fragmentar esse conteúdo?
- Entenda as abordagens de fragmentação. Compreenda as diferentes abordagens para fragmentação, incluindo abordagens baseadas em frases, de tamanho fixo e personalizadas ou usando aumento de modelo de linguagem, análise de layout de documento e modelos de aprendizado de máquina.
- Entenda como a estrutura do documento afeta a fragmentação. Escolha uma abordagem de fragmentação com base no grau de estrutura que o documento tem.
Durante a fase de enriquecimento de pedaços, você deve:
- Limpe pedaços. Implemente abordagens de limpeza para eliminar diferenças que não afetam o significado do texto. Este método suporta correspondências de proximidade.
- Aumente os pedaços. Considere aumentar seus dados de bloco com campos de metadados comuns e entenda seus usos potenciais na pesquisa. Saiba mais sobre as ferramentas ou técnicas mais usadas para gerar conteúdo de metadados.
Durante a fase de incorporação , você deve:
- Entenda a importância do modelo de incorporação. Um modelo de incorporação pode afetar significativamente a relevância dos resultados da sua pesquisa vetorial.
- Escolha o modelo de incorporação certo para o seu caso de uso.
- Avalie modelos de incorporação. Avalie modelos de incorporação visualizando incorporações e calculando distâncias de incorporação.
Durante a fase de recuperação de informações, você deve:
- Crie um índice de pesquisa. Aplique as configurações de pesquisa vetorial apropriadas aos seus campos vetoriais.
- Compreender as opções de pesquisa. Considere os diferentes tipos de pesquisas, incluindo pesquisas vetoriais, de texto completo, híbridas e manuais. Saiba como dividir uma consulta em subconsultas e filtrar consultas.
- Avalie pesquisas. Use métodos de avaliação de recuperação para avaliar sua solução de pesquisa.
Durante a fase de avaliação de ponta a ponta do modelo de linguagem , você deve:
- Compreender as métricas de avaliação de modelos linguísticos. Há várias métricas, incluindo fundamentação, completude, utilização e relevância, que você pode usar para avaliar a resposta do modelo de linguagem.
- Compreender a semelhança e as métricas de avaliação. Você pode usar métricas de semelhança e avaliação para avaliar sua solução RAG.
- Compreender a importância da documentação, dos relatórios e da agregação. Documente os hiperparâmetros e os resultados da avaliação. Agregue os resultados de várias consultas e visualize os resultados.
- Use o RAG Experiment Accelerator. Você pode usar o repositório GitHub do RAG Experiment Accelerator para ajudar sua equipe 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 que você siga um processo de avaliação estruturado para sua solução RAG. Avalie os resultados de cada etapa e faça alterações com base em suas necessidades. Você deve avaliar cada etapa de forma independente para otimização, mas lembre-se de que o resultado final é o que seus clientes experimentam. Certifique-se de entender todas as etapas desse processo antes de determinar seus próprios critérios de aceitação para cada etapa.
Contribuidores
Este artigo é mantido pela Microsoft. Foi originalmente escrito pelos seguintes contribuidores.
Principais autores:
- Raouf Aliouat | Engenheiro de Software II
- Rob Bagby | Líder de conteúdo do Centro de Arquitetura Principal
- Prabal Deb | Engenheiro de Software Principal
- Chade Kittel | Engenheiro de Software Principal
- Ritesh Modi | Engenheiro Principal
- Ryan Pfalz - Brasil | Gerente de Programa Técnico Sênior
- Randy Thurman - Brasil | Principal arquiteto de soluções de nuvem de IA
Para ver perfis não públicos do LinkedIn, faça login no LinkedIn.
Próximos passos
- Geração aumentada de recuperação (RAG) na Pesquisa de IA do Azure
- Geração aumentada através de obtenção e índices