Editar

Partilhar via


Projetar e desenvolver uma solução RAG

Azure AI services
Azure AI Search
Azure OpenAI Service
Azure Machine Learning

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

Diagrama que mostra a arquitetura de alto nível de uma solução RAG, incluindo o fluxo de solicitações e o pipeline de dados.

Fluxo de aplicativos RAG

O fluxo de trabalho a seguir descreve um fluxo de alto nível para um aplicativo RAG.

  1. O usuário emite uma consulta em uma interface de usuário de aplicativo inteligente.
  2. 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.
  3. O orquestrador determina qual pesquisa executar na Pesquisa de IA do Azure e emite a consulta.
  4. 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.

  1. Os documentos são enviados por push ou puxados para um pipeline de dados.
  2. O pipeline de dados processa cada documento individualmente, concluindo as seguintes etapas:
    1. Fragmentar documento: divide o documento em partes semanticamente relevantes que, idealmente, têm uma única ideia ou conceito.
    2. 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.
    3. Incorporar partes: usa um modelo de incorporação para vetorizar a parte e quaisquer outros campos de metadados usados para pesquisas vetoriais.
    4. 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.

Diagrama que mostra a arquitetura de alto nível de uma solução RAG, incluindo as perguntas que você deve fazer ao projetar a solução.

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:

Para ver perfis não públicos do LinkedIn, faça login no LinkedIn.

Próximos passos