Preparação

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

A primeira fase do desenvolvimento e experimentação da Geração Aumentada de Recuperação (RAG) é 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ê começa o processo paralelo de coleta de documentos e exemplos de perguntas pertinentes ao domínio. As etapas são feitas em paralelo porque estão inter-relacionadas. As perguntas devem poder ser respondidas pelo conteúdo dos documentos e os documentos devem responder às perguntas pertinentes. Ao reunir os documentos de teste e consultas, realize 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

O primeiro passo nesse 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

Nesta 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 estas áreas ao avaliar documentos de teste potencialmente representativos:

  • Pertinência - Os documentos devem atender aos requisitos de negócios do aplicativo de conversação. Por exemplo, se você estiver criando um bot de bate-papo encarregado de ajudar os clientes a realizar operações bancárias, os documentos devem corresponder a esse requisito, como documentos que mostrem 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 é possível produzir uma resposta válida.
  • Representante - Os documentos devem ser representativos dos diferentes tipos de documentos que a sua solução irá utilizar. Por exemplo, um documento de seguro automóvel é diferente de um documento de seguro de saúde ou de vida. Suponha que o caso de uso exija que a solução suporte todos os três tipos, e você só tinha dois documentos de seguro de carro, sua solução teria um desempenho ruim para o seguro de saúde e de vida. Você deve ter pelo menos 2 para cada variação.
  • Qualidade física do documento - 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 ou gramaticais. Modelos de linguagem grandes não têm um bom desempenho se você fornecer conteúdo de baixa qualidade.

O fator de sucesso nesta etapa é ter confiança qualitativa de que você tem uma boa representação de documentos de teste para seu domínio específico.

Orientações para documentos de teste

  • Prefira documentos reais a sintéticos. Os 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 lidando com 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 de dados reais.
  • Certifique-se de que os documentos podem abordar as questões que estão a ser recolhidas.
  • Você deve ter pelo menos dois documentos para cada variante de documento.
  • Você pode usar modelos de linguagem grandes ou outras ferramentas para ajudar a avaliar a qualidade do documento.

Reunir consultas de teste

Nesta etapa, você está reunindo consultas de teste que usará para avaliar suas partes, a solução de pesquisa e sua engenharia de prompt. Você fará isso em conjunto com a coleta dos documentos representativos, pois você não está apenas coletando as consultas, mas também está coletando como os documentos representativos abordam as consultas. Ter ambas as 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 à medida que experimenta diferentes estratégias e abordagens.

Reunir saída de consulta de teste

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

  • Consulta - A pergunta, que representa o prompt potencial 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 à 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) para um domínio específico montar uma lista abrangente de perguntas para o caso de uso. Uma solução para este desafio é gerar perguntas sintéticas a partir dos documentos de teste representativos que foram recolhidos. A seguir está uma abordagem do mundo real para gerar perguntas sintéticas a partir de documentos representativos:

  1. Fragmentar os documentos - Divida os documentos em partes. Esta 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 bloco - Para cada bloco, gere consultas manualmente ou usando um modelo de linguagem grande. Ao usar um modelo de linguagem grande, geralmente começamos gerando duas consultas por bloco. 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 bloco.

    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 para o caso de uso e se as respostas abordam a pergunta. Esta verificação deve ser realizada por uma PME.

Consultas não resolvidas

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

  • Responder que não sabe
  • Responder que você não sabe e fornecer um link onde 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 bot de bate-papo para responder às perguntas dos clientes, poderá usar as perguntas dos clientes do suporte técnico, das perguntas frequentes ou do sistema de emissão de tíquetes.
  • O cliente ou PME para o caso de uso deve agir como uma porta 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 documental

O objetivo da análise documental é determinar as seguintes três coisas:

  • O que no documento você deseja ignorar ou excluir
  • O que no documento você deseja capturar em partes
  • Como você deseja fragmentar o documento

A seguir estão algumas perguntas comuns que você pode fazer ao analisar um tipo de documento que ajuda você a fazer essas 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 tem sobre imagens?
    • Existem 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?
  • Existem dados com várias colunas ou parágrafos com várias colunas? Você não quer 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?
  • Que idiomas, variantes linguísticas ou dialetos estão nos documentos?
  • O documento contém caracteres Unicode?
  • Como são formatados os números? Estão usando vírgulas ou decimais?
  • Existem cabeçalhos e rodapés? Precisa deles?
  • Existem direitos de autor ou isenções de responsabilidade? Precisa deles?
  • O que no documento é uniforme e o que não é uniforme?
  • Existe uma estrutura de cabeçalho onde 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 PDFs ou documentos do Word)
  • Existem outros tipos de mídia incorporada, como vídeos ou áudio?
  • Existem equações matemáticas/notações científicas no documento?
  • Existem marcadores ou recuos significativos?

As respostas a essas perguntas ajudam você a identificar a estrutura do documento, determinar sua abordagem de fragmentação e identificar o conteúdo para fragmentar e o que não fazer.

Próximos passos