Projetando e desenvolvendo uma solução RAG

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

O padrão RAG (Retrieval-Augmented Generation) é uma abordagem padrão do setor para a criação de aplicativos que usam modelos de linguagem grandes 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 rigorosa e científica.

Este guia é apresentado como uma série. Cada artigo da série cobre uma fase específica na conceção de soluções RAG.

Estas considerações abordadas pelos artigos deste guia incluem:

  • Determinar quais documentos de teste e consultas usar durante a avaliação
  • Escolhendo uma estratégia de fragmentação
  • Determinar o que e como você deve enriquecer os pedaços
  • Escolher o modelo de incorporação certo
  • Determinar como configurar o índice de pesquisa
  • Determinar quais pesquisas você deseja realizar: vetorial, texto completo, híbrido, manual múltiplo
  • Avaliação de cada etapa

Os artigos deste guia abordam todas essas considerações.

Arquitetura RAG

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

Figura 1. Arquitetura RAG de alto nível

Fluxo de aplicativos RAG

A seguir está 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. O orquestrador pode ser implementado com ferramentas ou plataformas como Kernel Semântico, fluxo de prompt do Azure Machine Learning ou LangChain.
  3. O orquestrador determina qual pesquisa deve ser executada na Pesquisa de IA do Azure e emite a consulta.
  4. O orquestrador empacota os principais resultados N 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 do pipeline de dados RAG

A seguir está 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 com as seguintes etapas:

    1. Fragmentar documento - Divida o documento em partes semanticamente relevantes que, idealmente, têm uma única ideia ou conceito.
    2. Enriquecer blocos - Adiciona campos de metadados criados a partir do conteúdo nos blocos a campos discretos, como título, resumo e palavras-chave.
    3. Incorporar blocos - Usa um modelo de incorporação para vetorizar o bloco e quaisquer outros campos de metadados usados para pesquisas vetoriais.
    4. Persiste blocos - Armazena os blocos no índice de pesquisa.

Considerações sobre o projeto 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 seguinte ilustra algumas dessas decisões.

Diagrama mostrando a arquitetura de alto nível de uma solução RAG, incluindo perguntas que surgem ao projetar a solução.

Figura 2. Questões que surgem ao projetar a solução RAG

A série de artigos deste guia aborda essas considerações e muito mais.

Fase de preparação

  • 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 do 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 cobrem.

Fase de fragmentação

  • Compreender a economia de fragmentação - Discute os fatores a considerar ao analisar o custo geral da sua solução de fragmentação para o seu corpus de texto
  • Executar análise de documentos - 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 partes e como deseja fragmentar
  • Compreender as abordagens de fragmentação - Descreve as diferentes abordagens para fragmentação, como aumento de modelo de linguagem grande baseado em frases, tamanho fixo, personalizado, análise de layout de documentos, 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 pedaços

  • Limpar partes - 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 relevantes para a semântica do texto
  • Aumentar blocos - Discute alguns campos de metadados comuns com os quais você deve considerar aumentar seus dados de blocos , juntamente com algumas orientações sobre seus usos potenciais na pesquisa e ferramentas ou técnicas que são comumente usadas para gerar o conteúdo de metadados

Fase de incorporação

  • 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 pesquisa vetorial
  • Escolhendo 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: visualizar incorporações e calcular 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 pesquisa vetorial que se aplica a campos vetoriais
  • Noções básicas sobre opções de pesquisa - Fornece uma visão geral dos tipos de pesquisa que você pode considerar, como vetor, texto completo, híbrido e múltiplo manual. Fornece orientação sobre como dividir uma consulta em subconsultas, filtrar consultas
  • Avaliar pesquisas - Fornece orientação sobre como avaliar sua solução de pesquisa

Modelo linguístico grande fase de avaliação de ponta a ponta

  • Compreender métricas de avaliação de modelos de linguagem grandes - Fornece uma visão geral de várias métricas que você pode usar para avaliar a resposta de modelos de linguagem grandes, incluindo fundamentação, integridade, utilização e relevância
  • Compreender a semelhança e as métricas de avaliação - Fornece uma pequena lista de métricas de semelhança e avaliação que você pode usar ao avaliar sua solução RAG
  • Compreender a importância da documentação, relatórios e agregação - Discute a importância de documentar os hiperparâmetros juntamente com os resultados da avaliação, agregando resultados de várias consultas e visualizando os resultados
  • O RAG Experiment Accelerator - Fornece um link para o Rag Experiment Accelerator, que é uma ferramenta projetada para ajudar as equipes a encontrar rapidamente 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, de acordo com as 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.

Contribuidores

Próximos passos