O padrão rag (geração de Retrieval-Augmented) é 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 aborda uma fase específica no design da solução RAG.
Os outros artigos desta série abordam as seguintes considerações:
- Como determinar quais documentos e consultas de teste usar durante a avaliação
- Como escolher uma estratégia de agrupamento
- Como determinar quais partes você deve enriquecer e como enriquecê-las
- Como escolher o modelo de inserção correto
- Como configurar o índice de pesquisa
- Como determinar quais pesquisas, como vetor, texto completo, híbrido e várias pesquisas manuais, você deve executar
- Como avaliar cada etapa
Arquitetura de RAG
Fluxo do aplicativo 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 no Azure AI Search e emite a consulta.
- O orquestrador empacota os principais resultados N da consulta. Ele empacota os principais resultados e a consulta como contexto em um prompt e envia o prompt para o modelo de idioma. O orquestrador retorna a resposta ao aplicativo inteligente para o usuário ler.
Fluxo de 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:
- Documento em partes: 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 nas partes. O pipeline de dados categoriza os metadados em campos discretos, como título, resumo e palavras-chave.
- Inserir partes: usa um modelo de inserção para vetorizar a parte e quaisquer outros campos de metadados usados para pesquisas de vetor.
- Persista partes: armazena as partes no índice de pesquisa.
Considerações sobre o desenho e a avaliação do RAG
Você deve tomar várias decisões de implementação ao projetar 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 , você deve:
- Determine o domínio da solução. Defina claramente os requisitos de negócios para a solução RAG.
- Reunir documentos de teste representativos. Reúna documentos de teste para sua solução RAG que são representativos de sua coleção de documentos.
- Reunir consultas de teste. Colete informações e teste consultas e gere consultas e consultas sintéticas que seus documentos não abrangem.
Durante a fase de agrupamento , você deve:
- Entenda a economia em partes. Entenda quais fatores considerar ao avaliar o custo geral da sua solução de agrupamento para sua coleção de texto.
- Execute a análise do documento. Faça as seguintes perguntas para ajudá-lo a tomar decisões ao analisar um tipo de documento:
- Qual conteúdo no documento você deseja ignorar ou excluir?
- Qual conteúdo você deseja capturar em partes?
- Como você deseja dividir esse conteúdo?
- Entenda as abordagens de agrupamento. Entenda as diferentes abordagens de agrupamento, incluindo abordagens baseadas em frases, de tamanho fixo e personalizadas ou usando o aumento do modelo de linguagem, a análise de layout de documento e os modelos de machine learning.
- Entenda como a estrutura do documento afeta o agrupamento. Escolha uma abordagem de agrupamento com base no grau de estrutura que o documento tem.
Durante a fase de enriquecimento de partes , você deve:
- Partes limpas. Implemente abordagens de limpeza para eliminar diferenças que não afetam o significado do texto. Esse método dá suporte a correspondências de proximidade.
- Aumentar partes. Considere aumentar seus dados de partes com campos de metadados comuns e entender seus possíveis usos na pesquisa. Saiba mais sobre ferramentas ou técnicas comumente usadas para gerar conteúdo de metadados.
Durante a fase de inserção , você deve:
- Entenda a importância do modelo de inserção. Um modelo de inserção pode afetar significativamente a relevância dos resultados da pesquisa de vetor.
- Escolha o modelo de inserção correto para seu caso de uso.
- Avaliar modelos de inserção. Avalie os modelos de inserção visualizando inserções e calculando distâncias de inserção.
Durante a fase de recuperação de informações , você deve:
- Crie um índice de pesquisa. Aplique as configurações de pesquisa de vetor apropriadas aos campos de vetor.
- Entenda as opções de pesquisa. Considere os diferentes tipos de pesquisas, incluindo vetor, texto completo, híbrido e várias pesquisas manuais. Saiba mais sobre como dividir uma consulta em subconsultas e filtrar consultas.
- Avaliar 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: - Entenda as métricas de avaliação do modelo de linguagem. Há várias métricas, incluindo aterramento, integridade, utilização e relevância, que você pode usar para avaliar a resposta do modelo de idioma.
- Entenda as métricas de similaridade e avaliação. Você pode usar métricas de similaridade e avaliação para avaliar sua solução RAG.
- Entenda a importância da documentação, do relatório e da agregação. Documente os hiperparâmetros e os resultados da avaliação. Agregar os resultados de várias consultas e visualizar os resultados.
- Use o Acelerador de Experimento RAG. Você pode usar o repositório GitHub do Acelerador de Experimentos de RAG 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 seus requisitos. 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.
Colaboradores
Este artigo é mantido pela Microsoft. Foi originalmente escrito pelos colaboradores a seguir.
Autores principais:
- Raouf Aliouat | Engenheiro de Software II
- Rob Bagby | Principal Líder de Conteúdo do Centro de Arquitetura
- Prabal Deb | Engenheiro de Software Principal
- Chad Kittel | Engenheiro de Software Principal
- Ritesh Modi | Engenheiro principal
- Ryan Pfalz | Gerente sênior de programas técnicos
- Randy Thurman | Arquiteto principal de soluções de ia na nuvem
Para ver perfis não públicos do LinkedIn, entre no LinkedIn.
Próximas etapas
- Geração Aumentada de Recuperação (RAG) na Pesquisa de IA do Azure
- Geração aumentada de recuperação e índices