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ê define o domínio de negócios para sua solução. Depois de definir o domínio, você coleta documentos, executa a análise de documentos e coleta perguntas de exemplo pertinentes ao domínio. Você faz essas etapas em paralelo porque elas são inter-relacionadas. Por exemplo, a análise de documentos ajuda você a determinar quais documentos de teste e consultas de teste devem ser coletadas. As perguntas feitas devem ser respondidas pelo conteúdo nos documentos e os documentos devem responder às perguntas relevantes.
Este artigo faz parte de uma série. Leia a introdução.
Determinar o domínio da solução
A primeira etapa nesse processo é definir claramente os requisitos de negócios para a solução ou caso de uso. Esses requisitos ajudam você a determinar que tipo de perguntas a solução deve responder e quais dados de origem ou documentos ajudam a responder a essas perguntas. Em fases posteriores, o domínio da solução ajuda a informar sua estratégia de modelo de inserção.
Análise de documentos
O objetivo da análise de documentos é coletar informações suficientes sobre sua coleção de documentos para ajudá-lo a entender:
As diferentes classificações de documentos. Por exemplo, você pode ter especificações de produto, relatórios trimestrais, contratos de seguro de carro ou contratos de seguro de saúde.
Os diferentes tipos de documentos. Por exemplo, você pode ter PDFs, arquivos Markdown, arquivos HTML ou arquivos DOCX.
As restrições de segurança. Por exemplo, você pode exigir autenticação e autorização para acessar os documentos, dependendo se eles estiverem acessíveis publicamente.
A estrutura dos documentos. Por exemplo, o comprimento dos documentos pode variar. Ou podem ter quebras de tópico, imagens contextualmente relevantes ou dados tabulares.
As seções a seguir descrevem como essas informações ajudam você a escolher suas estratégias de carregamento e agrupamento.
Classificação de documentos
Você precisa entender as diferentes classificações de documentos para ajudá-lo a determinar o número de documentos de teste necessários. Essa parte da análise deve informar sobre as classificações de alto nível, como seguro ou finanças. Ele também deve contar sobre subclassificações, como documentos de seguro de saúde ou documentos de seguro de carro. Você também deseja saber se as subclassificações têm estruturas ou conteúdo diferentes.
O objetivo é entender todas as diferentes variantes de documento que você tem. Em seguida, você pode determinar o número e a divisão de documentos de teste necessários. Você não deseja mais ou menos representar uma classificação de documento específica em sua experimentação.
Tipos de documento
Entender os diferentes formatos de arquivo em sua coleção ajuda a determinar o número e a divisão de documentos de teste. Por exemplo, se você tiver tipos de documento PDF e Open XML para relatórios trimestrais, precisará de documentos de teste para cada um desses tipos de documento. Entender os tipos de documento também ajuda você a entender seus requisitos técnicos para carregar e agrupar seus documentos. Esses requisitos técnicos incluem bibliotecas específicas que podem processar esses formatos de arquivo.
Restrições de segurança
O reconhecimento das restrições de segurança é crucial para determinar suas estratégias de carregamento e agrupamento. Por exemplo, você precisa identificar se alguns ou todos os seus documentos exigem autenticação, autorização ou visibilidade de rede. Se os documentos estiverem dentro de um perímetro seguro, verifique se o código pode acessá-los ou implementar um processo para replicar com segurança os documentos para um local acessível para seu código de processamento.
Os documentos às vezes fazem referência à multimídia, como imagens ou áudio que são importantes para o contexto do documento. Essa mídia também pode estar sujeita a controles de acesso semelhantes aos do próprio documento. Se essa mídia exigir autenticação ou linha de visão de rede, você precisará garantir que seu código possa acessar a mídia ou que você tenha um processo em vigor que tenha acesso e possa replicar o conteúdo.
Se sua carga de trabalho exigir que usuários diferentes tenham acesso apenas a documentos distintos ou segmentos de documentos, verifique se você entende como reter essas permissões de acesso em sua solução de agrupamento.
Estrutura do documento
Você precisa entender a estrutura do documento, incluindo seu layout e os tipos de conteúdo no documento. O reconhecimento da estrutura e o conteúdo de seus documentos ajuda você a fazer as seguintes determinações:
Se o documento requer pré-processamento para limpar ruído, extrair mídia, reformatar conteúdo ou anotar itens a serem ignorados
Se você deseja ignorar ou excluir conteúdo no documento
Quais partes do documento que você deseja capturar
Como você deseja dividir o documento em fragmentos?
Como você deseja lidar com imagens, tabelas, gráficos e outras mídias incorporadas
As seções a seguir listam perguntas categorizadas que você pode usar para ajudá-lo a fazer algumas dessas determinações.
Determinar os itens que você pode ignorar
Alguns elementos estruturais podem não adicionar significado ao documento e podem ser ignorados com segurança ao agrupar. Em algumas situações, esses elementos podem adicionar um contexto valioso e melhorar a relevância das consultas ao índice, mas não todos. Faça as seguintes perguntas sobre os recursos comuns do documento para ver se eles adicionam relevância ou devem ser ignorados.
O documento contém um índice?
Há cabeçalhos ou rodapés?
Existem direitos autorais ou isenções de responsabilidade?
Existem notas de rodapé ou notas de fim?
Existem marcas d'água?
Existem anotações ou comentários?
Determinar uma estratégia de pré-processamento e agrupamento
As perguntas a seguir sobre a estrutura do documento podem ajudá-lo a decidir se você precisa pré-processar o documento para facilitar o processamento. Eles também ajudam você a escolher uma estratégia de agrupamento.
Há dados multilocatários ou parágrafos multicolumn? Você não deseja analisar o conteúdo de várias colunas da mesma maneira que o conteúdo de coluna única.
Como o documento é estruturado? Por exemplo, os arquivos HTML às vezes usam tabelas que precisam ser diferenciadas de dados tabulares inseridos.
Quantos parágrafos existem? Qual a duração dos parágrafos? Os parágrafos são semelhantes em comprimento?
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 incluem vírgulas ou decimais? Eles são consistentes?
Quais partes do documento são uniformes e quais partes não são uniformes?
Existe uma estrutura de cabeçalho em que o significado semântico pode ser extraído?
Há marcadores ou recuos significativos?
Determinar os requisitos de processamento de imagem
Entender as imagens em seu documento pode ajudá-lo a escolher uma estratégia de processamento de imagem. Você precisa saber que tipo de imagens você tem, se elas têm resolução suficiente para processar e se a imagem contém todas as informações necessárias. As perguntas a seguir ajudam você a entender seus requisitos de processamento de imagem.
O documento contém imagens?
Qual é a resolução das imagens?
Há texto incorporado nas imagens?
Existem imagens abstratas que não agregam valor? Por exemplo, os ícones podem não adicionar nenhum valor semântico. Adicionar uma descrição para ícones pode ser prejudicial à sua solução porque o ícone geralmente não é relevante para o conteúdo do documento.
Qual é a relação entre as imagens e o texto ao redor? Determine se as imagens têm conteúdo autônomo ou se há contexto em torno da imagem que você deve usar ao passá-la para um modelo de linguagem. Legendas são um exemplo de texto ao redor que pode ter um contexto valioso que não está incluído na imagem.
Há uma representação textual avançada, como descrições de acessibilidade das imagens?
Determinar sua tabela, gráfico e outros requisitos de processamento de mídia
Entender quais informações são encapsuladas em tabelas, gráficos e outras mídias pode ajudá-lo a decidir como deseja processá-la. As perguntas a seguir ajudam você a entender sua tabela, gráfico e outros requisitos de processamento de mídia.
O documento tem gráficos que incluem números?
O documento contém tabelas?
As tabelas são complexas, como tabelas aninhadas ou não compatíveis?
Existem legendas para as tabelas?
Quanto tempo são as tabelas? Tabelas longas podem exigir cabeçalhos repetidos em partes.
Há outros tipos de mídia inserida, como vídeos ou áudio?
Há equações matemáticas ou notações científicas no documento?
Reúna documentos de teste representativos
Nesta etapa, colete documentos que melhor representem os documentos que você usa em sua solução. Os documentos devem abordar o caso de uso definido e responder às perguntas coletadas na fase paralela de coleta de perguntas.
Considerações
Considere as seguintes á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ê criar um chat bot que ajude os clientes a executar operações bancárias, os documentos deverão atender a esse requisito. Por exemplo, os documentos devem mostrar como abrir ou fechar uma conta bancária. Os documentos devem ser capazes de abordar as perguntas de teste coletadas na etapa paralela. Se os documentos não tiverem informações relevantes para as perguntas, sua solução não poderá produzir uma resposta válida.
Representação: Os documentos devem representar os diferentes tipos de documentos que sua solução usa. Por exemplo, um documento de seguro de carro contém informações diferentes de um documento de seguro de vida ou de saúde. Suponha que o caso de uso exija a solução para dar suporte a todos esses três tipos de seguro, mas você só tem documentos de seguro de carro. Sua solução pode ter um desempenho ruim para operações de seguro de vida e saúde. Você deve ter pelo menos dois documentos para cada variação.
Qualidade do documento físico: Os documentos precisam estar em forma utilizável. 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 conteúdo de alta qualidade. Eles não devem conter erros ortográficos ou gramaticais. Os modelos de linguagem não têm um bom desempenho se você fornecer conteúdo de baixa qualidade.
Para coletar documentos de teste com êxito, você deve estar qualitativamente confiante de que os documentos de teste representam de forma completa e precisa seu domínio específico.
Orientação do documento de teste
Escolha documentos reais em vez dos sintéticos. Documentos reais devem passar por um processo de limpeza para remover dados pessoais.
Considere aumentar seletivamente seus documentos com dados sintéticos. Esse processo ajuda você a garantir que seus documentos abrangem todos os tipos de cenários, incluindo cenários futuros previstos. Se você precisar usar dados sintéticos, faça o possível para torná-los semelhantes a dados reais o máximo possível.
Verifique se os documentos podem abordar as perguntas coletadas.
Tenha pelo menos dois documentos para cada variante de documento.
Use modelos de linguagem ou outras ferramentas para ajudá-lo a avaliar a qualidade dos documentos.
Reunir consultas de teste
Nesta etapa, você reunirá consultas de teste usadas para avaliar suas partes, sua solução de pesquisa e sua engenharia de prompt. Execute esta etapa enquanto reúne os documentos representativos. Você deve reunir as consultas e determinar como os documentos representativos abordam essas consultas ao mesmo tempo. Ao ter as consultas de exemplo e as partes dos documentos de exemplo que abordam essas consultas, você pode avaliar cada estágio da solução RAG enquanto experimenta diferentes estratégias e abordagens.
Coletar saída de consulta de teste
A saída dessa fase inclui o conteúdo do reunir consultas de teste representativas etapa e o reunir documentos de teste representativos etapa. 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 de uma ou mais partes de contexto.
Criar 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 perguntas sintéticas dos documentos de teste representativos coletados. As etapas a seguir descrevem uma abordagem do mundo real para gerar perguntas sintéticas de documentos representativos:
Particione os documentos. Divida os documentos em partes. Não use a estratégia de agrupamento para sua solução geral. Use esta etapa única que você usa para gerar consultas sintéticas. Você pode fazer o agrupamento manualmente se o número de documentos for razoável.
Gerar consultas para cada parte. Para cada parte, gere consultas manualmente ou usando um modelo de linguagem. Ao usar um modelo de linguagem, você geralmente começa gerando duas consultas para cada parte. Você também pode usar o modelo de idioma 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, and directly quote the text from the provided context. Provide the array output in strict JSON format as shown in the output format. Ensure that the generated JSON is completely structurally correct, including proper nesting, comma placement, and quotation marks. There shouldn't be a comma after the last element in the array. Output format: [ { "question": "Question 1", "answer": "Answer 1" }, { "question": "Question 2", "answer": "Answer 2" } ] CONTEXT:
Verifique a saída. Verifique se as perguntas são pertinentes ao caso de uso e se as respostas abordam a pergunta. Um SME deve executar essa verificação.
Consultas não abordadas
É importante reunir consultas que os documentos não abordam e as consultas que eles abordam. Ao testar sua solução e, especialmente, ao testar o modelo de linguagem, você precisa determinar como a solução deve responder a consultas que ela não tem contexto suficiente para responder. Para responder a consultas que a solução não pode resolver, a solução pode:
Afirmou que não sabe a resposta.
Informe que ele não sabe a resposta e forneça um link em que o usuário possa encontrar mais informações.
Coletar consultas de teste para mídia incorporada
Assim como no texto, você deve reunir um conjunto diversificado de perguntas que envolvem o uso da mídia incorporada para gerar respostas altamente relevantes. Se você tiver imagens com grafos, tabelas ou capturas de tela, verifique se você tem perguntas que abrangem todos os casos de uso. Se você determinar na parte de imagens da etapa de análise do documento que o texto antes ou depois da imagem é necessário para responder a algumas perguntas, verifique se você tem essas perguntas em suas consultas de teste.
Reunir orientações de consultas de teste
Determine se há um sistema que contenha perguntas reais de clientes que você possa usar. Por exemplo, se você criar um chat bot para responder às perguntas do cliente, poderá usar perguntas do cliente do seu suporte técnico, perguntas frequentes ou sistema de tíquetes.
O cliente ou o SME para o caso de uso deve atuar como uma porta de qualidade para determinar se os documentos coletados, as consultas de teste associadas e as respostas para as consultas dos documentos são abrangentes, representativas e corretas.
Examine o corpo das perguntas e respostas periodicamente para garantir que elas continuem a refletir com precisão os documentos de origem.