Editar

Compartilhar via


Preparação

Serviços de IA do Azure
Azure AI Search
Serviço OpenAI do Azure
Azure Machine Learning

A primeira fase de desenvolvimento e experimentação da RAG (Retrieval-Augmented Generation, Geração Aumentada de Recuperação) é a fase de preparação. Durante essa fase, você primeiro define o domínio de negócios para sua solução. Depois de definir o domínio, você inicia o processo paralelo de coleta de documentos e perguntas de exemplo pertinentes ao domínio. As etapas são feitas em paralelo porque estão interrelacionadas. As perguntas devem ser respondidas pelo conteúdo dos documentos e os documentos devem responder a perguntas relevantes. Ao reunir os documentos de teste e consultas, execute uma análise de seus documentos para obter uma melhor compreensão da estrutura e do conteúdo.

Este artigo faz parte de uma série. Leia a introdução.

Determinar o domínio da solução

A primeira etapa desse processo é definir claramente os requisitos de negócios para a solução ou o caso de uso. Esses requisitos ajudam a determinar que tipo de perguntas a solução pretende abordar e quais dados ou documentos de origem ajudam a resolver essas questões. Em estágios posteriores, o domínio da solução ajuda a informar sua estratégia de modelo de incorporação.

Reúna documentos de teste representativos

Nessa etapa, você está reunindo documentos que são a melhor representação dos documentos que você usa em sua solução de produção. Os documentos devem abordar o caso de uso definido e ser capazes de responder às perguntas reunidas na fase paralela de coleta de perguntas.

Considerações

Considere essas áreas ao avaliar possíveis documentos de teste representativos:

  • Pertinência - Os documentos devem atender aos requisitos de negócios do aplicativo de conversação. Por exemplo, se você estiver criando um chat bot encarregado de ajudar os clientes a realizar operações bancárias, os documentos devem corresponder a esse requisito, como documentos mostrando como abrir ou fechar uma conta bancária. Os documentos devem ser capazes de abordar as questões do teste que estão sendo reunidas na etapa paralela. Se os documentos não tiverem as informações relevantes para as perguntas, não poderão produzir uma resposta válida.
  • Representativo - Os documentos devem ser representativos dos diferentes tipos de documentos que sua solução utilizará. Por exemplo, um documento de seguro de carro é diferente de um documento de seguro de saúde ou de seguro de vida. Suponha que o caso de uso exija a solução para suportar todos os três tipos, e você só tivesse dois documentos de seguro de carro, sua solução teria um desempenho ruim para seguros de saúde e de vida. Você deve ter pelo menos 2 para cada variação.
  • Qualidade do documento físico - Os documentos precisam estar em uma forma utilizável. As imagens digitalizadas, por exemplo, podem não permitir que você extraia informações utilizáveis.
  • Qualidade do conteúdo do documento - Os documentos devem ter alta qualidade de conteúdo. Não deve haver erros ortográficos nem gramaticais. Modelos de linguagem grande não funcionam bem se você fornecer a eles conteúdo de baixa qualidade.

O fator de sucesso nesta etapa é estar qualitativamente confiante de que você tem uma boa representação de documentos de teste para seu domínio específico.

Orientação do documento de teste

  • Prefira documentos reais a sintéticos. Documentos reais devem passar por um processo de limpeza para remover informações de identificação pessoal (PII).
  • Considere aumentar seus documentos com dados sintéticos para garantir que você esteja considerando todos os tipos de cenários.
  • Se você precisar usar dados sintéticos, faça o possível para torná-los o mais próximo possível dos dados reais.
  • Certifique-se de que os documentos possam responder às perguntas que estão sendo coletadas.
  • Você deve ter pelo menos dois documentos para cada variante de documento.
  • Você pode usar modelos de linguagem grande ou outras ferramentas para ajudar a avaliar a qualidade do documento.

Reunir consultas de teste

Nessa etapa, você está reunindo consultas de teste que usará para avaliar seus fragmentos, a solução de pesquisa e sua engenharia de prompt. Você fará isso em conjunto com a coleta dos documentos representativos, pois não está apenas coletando as consultas, mas também como os documentos representativos abordam as consultas. Ter as duas consultas de exemplo, combinadas com as partes dos documentos de exemplo que abordam essas consultas, permite que você avalie cada estágio da solução RAG, conforme estiver experimentando diferentes estratégias e abordagens.

Coletar saída de consulta de teste

A saída dessa fase inclui conteúdo das etapas Reunir consultas de teste representativas e Reunir documentos de teste representativos. A saída é uma coleção que contém os seguintes dados:

  • Consulta - A pergunta, representando o possível prompt de um usuário legítimo.
  • Contexto - Uma coleção de todo o texto real nos documentos que abordam a consulta. Para cada bit de contexto, você deve incluir a página e o texto real.
  • Resposta - Uma resposta válida para a consulta. A resposta pode ser conteúdo diretamente dos documentos ou pode ser reformulada a partir de uma ou mais partes do contexto.

Criação de consultas sintéticas

Muitas vezes, é um desafio para os especialistas no assunto (PMEs) de um domínio específico montar uma lista abrangente de perguntas para o caso de uso. Uma solução para esse desafio é gerar questões sintéticas a partir dos documentos representativos do teste que foram coletados. A seguir está uma abordagem do mundo real para gerar perguntas sintéticas a partir de documentos representativos:

  1. Dividir os documentos em fragmentos - Divida os documentos em fragmentos. Essa etapa de fragmentação não está usando a estratégia de fragmentação para sua solução geral. É uma etapa única que será usada para gerar consultas sintéticas. A fragmentação pode ser feita manualmente, se o número de documentos for razoável.

  2. Gerar consultas por fragmento - Para cada fragmento, gere consultas manualmente ou usando um modelo de linguagem grande. Ao usar um modelo de linguagem grande, geralmente começamos gerando duas consultas por fragmento. O modelo de linguagem grande também pode ser usado para criar a resposta. O exemplo a seguir mostra um prompt que gera perguntas e respostas para um fragmento.

    Please read the following CONTEXT and generate two question and answer json objects in an array based on the CONTEXT provided. The questions should require deep reading comprehension, logical inference, deduction, and connecting ideas across the text. Avoid simplistic retrieval or pattern matching questions. Instead, focus on questions that test the ability to reason about the text in complex ways, draw subtle conclusions, and combine multiple pieces of information to arrive at an answer. Ensure that the questions are relevant, specific, and cover the key points of the CONTEXT.  Provide concise answers to each question, directly quoting the text from provided context. Provide the array output in strict JSON format as shown in output format. Ensure that the generated JSON is 100 percent structurally correct, with proper nesting, comma placement, and quotation marks. There should not be any comma after last element in the array.
    
    Output format:
    [
      {
        "question": "Question 1",
        "answer": "Answer 1"
      },
      {
        "question": "Question 2",
        "answer": "Answer 2"
      }
    ]
    
    CONTEXT:
    
  3. Verificar saída - Verifique se as perguntas são pertinentes ao caso de uso e se as respostas abordam a pergunta. Esta verificação deve ser realizada por um PME.

Consultas não abordadas

É importante reunir consultas que os documentos não abordam, juntamente com consultas que são abordadas. Ao testar sua solução, especialmente quando você testa o modelo de linguagem grande, você precisa determinar como a solução deverá responder a consultas das quais não tem contexto suficiente para responder. As abordagens para responder a consultas que você não pode resolver incluem:

  • Como responder que você não sabe
  • Responder que você não sabe e fornecer um link em que o usuário pode encontrar mais informações

Reunir orientações de consultas de teste

  • Determine se há um sistema que contém perguntas reais do cliente que você pode usar. Por exemplo, se você estiver criando um chat bot para responder às perguntas dos clientes, poderá usar as perguntas dos clientes do suporte técnico, das perguntas frequentes ou do sistema de tickets.
  • O cliente ou o PME do caso de uso deve atuar como um portal de qualidade para determinar se os documentos coletados, as consultas de teste associadas e as respostas às consultas dos documentos são abrangentes, representativas e corretas.
  • A revisão do corpo de perguntas e respostas deve ser feita periodicamente para garantir que elas continuem a refletir com precisão os documentos de origem.

Análise de documentos

O objetivo da análise de documentos é determinar as três coisas a seguir:

  • O que no documento você deseja ignorar ou excluir
  • O que no documento você deseja capturar em fragmentos
  • Como você deseja dividir o documento em fragmentos?

A seguir estão algumas perguntas comuns que você pode fazer ao analisar um tipo de documento que o ajuda a fazer estas três determinações:

  • O documento contém um índice?
  • O documento contém imagens?
    • São imagens de alta resolução?
    • Que tipo de dados você tem sobre as imagens?
    • Há legendas para as imagens?
    • Há texto incorporado nas imagens?
  • O documento tem gráficos com números?
  • O documento contém tabelas?
    • As tabelas são complexas (tabelas aninhadas) ou não complexas?
    • Existem legendas para as tabelas?
  • Há dados de várias colunas ou parágrafos de várias colunas? Você não deseja analisar o conteúdo de várias colunas como se fosse uma única coluna.
  • Quantos parágrafos existem? Qual a duração dos parágrafos? Os parágrafos têm aproximadamente a mesma extensão?
  • Quais idiomas, variantes de idioma ou dialetos estão nos documentos?
  • O documento contém caracteres Unicode?
  • Como os números são formatados? Eles estão usando vírgulas ou decimais?
  • Existem cabeçalhos e rodapés? Você precisa deles?
  • Existem direitos autorais ou isenções de responsabilidade? Você precisa deles?
  • O que no documento é uniforme e o que não é uniforme?
  • Existe uma estrutura de cabeçalho em que o significado semântico pode ser extraído?
  • Existem notas de rodapé ou notas de fim?
  • Existem marcas d'água?
  • Existem anotações ou comentários (por exemplo, em documentos em PDF ou documentos do Word)
  • Existem outros tipos de mídia incorporada, como vídeos ou áudio?
  • Há alguma equação matemática/notação científica no documento?
  • Há marcadores ou recuos significativos?

As respostas a essas perguntas o ajudam a identificar a estrutura do documento, determinar sua abordagem de fragmentação e identificar o conteúdo a ser fragmentado e o que não vai ser fragmentado.

Próximas etapas