Editar

Compartilhar via


Agrupamento

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

Agora que você reuniu seus documentos e consultas de teste e realizou uma análise de documentos na fase de preparação, a próxima fase é a fragmentação. Dividir documentos em uma coleção de partes de tamanho correto e semanticamente relevantes é um fator-chave para o sucesso de sua implementação de Geração Aumentada de Recuperação (RAG). Passar documentos inteiros ou pedaços superdimensionados é caro, pode sobrecarregar os limites de token do modelo e não produz os melhores resultados. Passar informações para um modelo de linguagem grande que é irrelevante para a consulta pode levar a alucinações. Você tem que determinar quais partes de um documento são relevantes e quais partes são irrelevantes e devem ser ignoradas.

Passar partes que são muito pequenas e não contêm contexto suficiente para abordar a consulta também leva a resultados ruins. O contexto relevante que existe em vários fragmentos pode não ser capturado. A arte é implementar abordagens de fragmentação eficazes para seus tipos de documentos e suas estruturas de conteúdo específicos. Há várias abordagens a serem consideradas, cada uma com suas próprias implicações de custo e eficácia, dependendo do tipo e da estrutura do documento ao qual são aplicadas.

Este artigo descreve várias abordagens de fragmentação e examina como a estrutura de seus documentos pode influenciar a abordagem de fragmentação escolhida.

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

Economia da fragmentação

Ao determinar sua estratégia geral de fragmentação, você deve considerar seu orçamento, juntamente com seus requisitos de qualidade e taxa de transferência para seu corpus de texto. Há custos de engenharia para o projeto e a implementação de cada implementação de fragmentação exclusiva e custos de processamento de documentos que diferem, dependendo da abordagem.

A seguir estão os fatores a serem considerados ao analisar o custo de sua solução geral:

  • Número de implementações de fragmentação exclusivas - Cada implementação exclusiva tem custos de engenharia e de manutenção. Você precisa considerar o número de tipos de documentos exclusivos em seu corpus e as compensações de custo versus qualidade de implementações exclusivas para cada um.
  • Custo por documento de cada implementação - Algumas abordagens de fragmentação podem levar a fragmentações de melhor qualidade, mas têm um custo financeiro e de tempo mais alto para gerar esses fragmentos. Por exemplo, usar um modelo predefinido no IA do Azure para Informação de Documentos provavelmente tem um custo por documento mais alto do que uma implementação de análise de texto puro, mas pode levar a fragmentos melhores.
  • Número de documentos iniciais - O número de documentos iniciais que você precisa processar para iniciar sua solução.
  • Número de documentos incrementais - O número e a taxa de novos documentos que você deve processar para a manutenção contínua do sistema.

Abordagens de fragmentação

Esta seção fornece uma visão geral de algumas abordagens comuns de fragmentação. Esta lista não pretende ser exaustiva, mas sim mostrar algumas abordagens representativas comuns. Você pode usar várias abordagens na implementação, como combinar o uso de um modelo de linguagem grande para obter uma representação de texto de uma imagem com muitas das abordagens listadas.

Cada abordagem é acompanhada por uma matriz de tomada de decisão resumida que destaca as ferramentas, os custos associados e muito mais. O esforço de engenharia e os custos de processamento são subjetivos e estão incluídos para comparação relativa.

Análise baseada em sentenças

Essa abordagem direta divide documentos de texto em fragmentações compostas por frases completas. Os benefícios dessa abordagem incluem que é barata de implementar, tem baixo custo de processamento e pode ser aplicada a qualquer documento baseado em texto escrito em prosa ou frases completas. Um desafio com essa abordagem é que cada fragmento pode não capturar o contexto completo de um pensamento ou significado. Muitas vezes, várias frases devem colocadas juntas para capturar o significado semântico.

Ferramentas: tokenizador de frases SpaCy, divisor de texto recursivo LangChain, tokenizador de frases NLTK
Esforço de engenharia: Baixo
Custo de processamento: Baixo
Casos de uso: documentos não estruturados escritos em prosa ou frases completas, e seu corpus de documentos contém um número proibitivo de diferentes tipos de documentos para criar estratégias individuais de fragmentação para
Exemplos: conteúdo gerado pelo usuário, como feedback aberto de pesquisas, postagens em fóruns, resenhas, mensagens de e-mail, um romance ou um ensaio

Análise de tamanho fixo (com sobreposição)

Essa abordagem divide um documento em fragmentações, com base em um número fixo de caracteres ou tokens e permite alguma sobreposição de caracteres entre fragmentações. Essa abordagem tem muitas das mesmas vantagens e desvantagens que a análise baseada em frases. Uma vantagem dessa abordagem sobre a análise baseada em frases é que é possível obter fragmentações com significado semântico que abrange várias frases.

Você deve escolher o tamanho fixo dos fragmentos e a quantidade de sobreposição. Como os resultados diferem para diferentes tipos de documento, é melhor usar uma ferramenta como o visualizador de blocos HuggingFace para fazer análises exploratórias. Ferramentas como essa permitem que você visualize como seus documentos são fragmentados, de acordo com as suas decisões. É uma prática recomendada usar tokens BERT sobre contagens de caracteres, ao usar a análise de tamanho fixo. Os tokens BERT são baseados em unidades significativas de linguagem, portanto, preservam mais informações semânticas do que contagens de caracteres.

Ferramentas: Divisor de texto recursivo LangChain, visualizador de fragmentos Hugging Face
Esforço de engenharia: Baixo
Custo de processamento: Baixo
Casos de uso: Documentos não estruturados escritos em prosa ou não prosa com frases completas ou incompletas. Seu corpus de documentos contém um número proibitivo de diferentes tipos de documentos para criar estratégias individuais de fragmentação para
Exemplos: conteúdo gerado pelo usuário, como feedback aberto de pesquisas, postagens em fóruns, avaliações, mensagens de e-mail, notas ou listas pessoais ou de pesquisa

Código personalizado

Essa abordagem analisa documentos usando código personalizado para criar fragmentos. Essa abordagem é mais bem-sucedida para documentos baseados em texto em que a estrutura é conhecida ou pode ser inferida e um alto grau de controle sobre a criação de fragmentos será necessário. Você pode usar técnicas de análise de texto, como expressões regulares, para criar fragmentos com base em padrões dentro da estrutura do documento. O objetivo é criar fragmentos que tenham tamanho semelhante e fragmentos que tenham conteúdo distinto. Muitas linguagens de programação fornecem suporte para expressões regulares, e algumas têm bibliotecas ou pacotes que oferecem recursos de manipulação de cadeia de caracteres mais elegantes.

Ferramentas: Python (re, regex, BeautifulSoup, lxml, html5lib, marko), R (stringr, xml2), Julia (Gumbo.jl)
Esforço de engenharia: Médio
Custo de processamento: Baixo
Casos de uso: documentos semiestruturados em que a estrutura pode ser inferida
Exemplos: registros de patentes, artigos de pesquisa, apólices de seguro, scripts e roteiros

Aumento de modelo de linguagem grande

Modelos de linguagem grande podem ser usados para criar fragmentos. Casos de uso comuns são usar um modelo de linguagem grande, como GPT-4, para gerar representações textuais de imagens ou resumos de tabelas que podem ser usadas como fragmentos. O aumento de modelo de linguagem grande é usado com outras abordagens de fragmentação, como código personalizado.

Ferramentas: Azure OpenAI, OpenAI
Esforço de engenharia: Médio
Custo de processamento: Alto
Casos de uso: imagens, tabelas
Exemplos: gerar representações de texto de tabelas e imagens, resumir transcrições de reuniões, discursos, entrevistas ou podcasts

Análise de layout do documento

As bibliotecas e os serviços de análise de layout de documentos combinam recursos de reconhecimento óptico de caracteres (OCR) com modelos de aprendizado profundo para extrair a estrutura de documentos e de texto. Os elementos estruturais podem incluir cabeçalhos, rodapés, títulos, títulos de seções, tabelas e figuras. O objetivo é dar melhor significado semântico ao conteúdo contido nos documentos.

As bibliotecas e os serviços de análise de layout de documento expõem um modelo que representa o conteúdo, estrutural e de texto, do documento. Você ainda precisa escrever código que interaja com o modelo.

Observação

O IA do Azure para Informação de Documentos é um serviço baseado em nuvem que requer que você carregue seu documento no serviço. Você precisa garantir que seus regulamentos de segurança e de conformidade permitam que você carregue documentos em serviços como este.

Ferramentas: modelos de análise do IA do Azure para Informação de Documentos, Donut, Layout Parser
Esforço de engenharia: Médio
Custo de processamento:: Médio
Casos de uso: documentos semiestruturados
Exemplos: artigos de notícias, páginas da Web, currículos

Modelo predefinido

Há serviços, como o IA do Azure para Informação de Documentos, que oferecem modelos predefinidos que você pode aproveitar para vários tipos de documento. Alguns modelos são treinados para tipos de documentos específicos, como o formulário W-2 de impostos dos EUA, enquanto outros visam um gênero mais amplo de tipos de documento, como uma fatura.

Ferramentas: modelos predefinidos do IA do Azure para Informação de Documentos, Processamento inteligente de documentos Power Automate, LayoutLMv3
Esforço de engenharia: Baixo
Custo do processamento: Médio/Alto
Casos de uso: documentos estruturados em que existe um modelo predefinido
Exemplos específicos: faturas, recibos, cartão de seguro de saúde, formulário W-2

Modelo personalizado

Para documentos altamente estruturados em que não existe um modelo predefinido, talvez seja necessário criar um modelo personalizado. Essa abordagem pode ser eficaz para imagens ou documentos altamente estruturados, dificultando o uso de técnicas de análise de texto.

Ferramentas: modelos personalizados de IA do Azure para Informação de Documentos,Tesseract
Esforço de engenharia: alto
Custo do processamento: Médio/Alto
Casos de uso: documentos estruturados em que um modelo predefinido não existe
Exemplos: cronogramas de reparo e manutenção automotiva, históricos acadêmicos e registros, manuais técnicos, procedimentos operacionais, diretrizes de manutenção

Estrutura do documento

Os documentos variam na quantidade de estrutura que têm. Alguns documentos, como formulários do governo, têm uma estrutura complexa e bem conhecida, como um documento fiscal W-2 dos EUA. No outro extremo do espectro estão documentos não estruturados, como notas de forma livre. O grau de estrutura de um tipo de documento é um bom ponto de partida para determinar uma abordagem de fragmentação eficaz. Embora não haja regras rígidas e rápidas, esta seção fornece algumas diretrizes a serem seguidas.

Diagrama mostrando abordagens de fragmentação por estrutura do documento.

Figura 1. A abordagem de fragmentação se ajusta à estrutura do documento

Documentos estruturados

Documentos estruturados, às vezes chamados de documentos de formato fixo, têm layouts definidos. Os dados nesses documentos estão localizados em locais fixos. Por exemplo, a data, ou o sobrenome do cliente, é encontrado no mesmo local em todos os documentos do mesmo formato fixo. Exemplos de documentos de formato fixo são o documento fiscal W-2 dos EUA.

Documentos de formato fixo podem ser imagens digitalizadas de documentos originais que foram preenchidos à mão ou têm estruturas de layout complexas, dificultando o processamento com uma abordagem básica de análise de texto. Uma abordagem comum para processar estruturas de documentos complexas é usar modelos de aprendizado de máquina para extrair dados e aplicar significado semântico a esses dados, sempre que possível.

Exemplos: formulário W-2, cartão de seguro
Abordagens comuns: modelos predefinidos, modelos personalizados

Documentos semiestruturados

Documentos semiestruturados não têm um formato nem esquema fixo, como o formulário W-2, mas oferecem consistência em relação ao formato ou esquema. Por exemplo, todas as faturas não são dispostas da mesma forma, mas, no entanto, em geral, elas têm um esquema consistente. Você pode esperar que uma fatura tenha uma invoice number e alguma forma de bill to e ship to nome e endereço, entre outros dados. Uma página da Web pode não ter consistências de esquema, mas tem elementos estruturais ou de layout semelhantes, como body, title, H1e p que podem ser usados para adicionar significado semântico ao texto ao redor.

Assim como os documentos estruturados, os documentos semiestruturados com estruturas de layout complexas são difíceis de processar com a análise de texto. Para esses tipos de documento, os modelos de aprendizado de máquina são uma boa abordagem. Existem modelos predefinidos para determinados domínios que têm esquemas consistentes, como faturas, contratos ou seguro de saúde. Considere a criação de modelos personalizados para estruturas complexas nas quais não existe um modelo predefinido.

Exemplos: faturas, recibos, páginas da Web, arquivos de markdown
Abordagens comuns:: modelos de análise de documentos

Estrutura inferida

Alguns documentos têm uma estrutura, mas não são escritos em marcação. Para esses documentos, a estrutura deve ser inferida. Um bom exemplo é o seguinte documento de regulamentação da UE.

Diagrama mostrando um regulamento da UE como exemplo de um documento com estrutura inferida.

Figura 2. Regulamentação da UE que mostra uma estrutura inferida

Como você pode entender claramente a estrutura do documento e não há modelos conhecidos para ele, você pode determinar que pode escrever código personalizado. Um formato de documento como esse pode não justificar o esforço para criar um modelo personalizado, dependendo do número de documentos diferentes desse tipo com os quais você está trabalhando. Por exemplo, se o seu corpus for todos os regulamentos da UE ou leis estaduais dos EUA, um modelo personalizado pode ser uma boa abordagem. Se você estiver trabalhando com um único documento, como o regulamento da UE no exemplo, o código personalizado pode ter um maior custo-benefício.

Exemplos: documentos legais, scripts, especificações de fabricação
Abordagens comuns: código personalizado, modelos personalizados

Documentos não estruturados

Uma boa abordagem para documentos com pouca ou nenhuma estrutura é baseada em frases ou de tamanho fixo com abordagens de sobreposição.

Exemplos: conteúdo gerado pelo usuário, como feedback aberto de pesquisas, postagens em fóruns, avaliações, mensagens de e-mail, notas pessoais ou de pesquisa
Abordagens comuns: baseadas em frases ou em limites com sobreposição

Experimentação

Embora os melhores ajustes para cada uma das abordagens de fragmentação estejam listados, na prática, qualquer uma das abordagens pode ser apropriada para qualquer tipo de documento. Por exemplo, a análise baseada em frases pode ser apropriada para documentos altamente estruturados ou um modelo personalizado pode ser apropriado para documentos não estruturados. Parte da otimização de sua solução RAG será experimentar várias abordagens de fragmentação, levando em conta o número de recursos que você tem, a habilidade técnica de seus recursos e o volume de documentos que você precisa processar. Para chegar a uma estratégia de fragmentação ideal, você precisa observar as vantagens e as compensações de cada uma das abordagens testadas para garantir que está escolhendo a abordagem apropriada para seu caso de uso.

Próximas etapas