Geração Aumentada por Recuperação com a IA do Azure para Informação de Documentos

Este conteúdo se aplica a:checkmarkv4.0 (versão prévia)

Introdução

A RAG (Geração Aumentada de Recuperação) é um padrão de design que combina um LLM (Grande Modelo de Linguagem) pré-treinado, como o ChatGPT, com um sistema de recuperação de dados externo para gerar uma resposta aprimorada, incorporando novos dados fora dos dados de treinamento originais. Adicionar um sistema de recuperação de informações aos seus aplicativos permite que você converse com seus documentos, gere conteúdo cativante e acesse o poder dos modelos de OpenAI do Azure para seus dados. Você também tem mais controle sobre os dados usados pelo LLM à medida que formula uma resposta.

O modelo de layout da Informação de Documentos é uma API avançada de análise de documentos. O modelo de layout oferece uma solução abrangente para funcionalidades avançadas de extração de conteúdo e análise de estrutura de documentos. Com o layout de modelo, você pode extrair facilmente texto e elementos estruturais para dividir grandes corpos de texto em partes menores e significativas com base no conteúdo semântico, em vez de divisões arbitrárias. As informações extraídas podem ser convenientemente geradas para o formato Markdown, permitindo que você defina sua estratégia de agrupamento semântico com base nos blocos de construção fornecidos.

Screenshot depicting semantic chunking with RAG using Azure AI Document Intelligence.

Agrupamento semântico

Sentenças longas são desafiadoras para aplicativos de NLP (processamento de linguagem natural). Isso é válido especialmente quando elas são compostas por várias cláusulas, frases substantivas ou verbais complexas, cláusulas relativas e agrupamentos de parênteses. Assim como o observador humano, um sistema NLP também precisa acompanhar com êxito todas as dependências apresentadas. A meta do agrupamento semântico é encontrar fragmentos semanticamente coerentes de uma representação de sentença. Esses fragmentos podem ser processados de maneira independente e recombinados como representações semânticas sem perda de informações, interpretação ou relevância semântica. O significado inerente do texto é usado como um guia para o processo de agrupamento.

As estratégias de agrupamento de dados de texto desempenham um papel fundamental na otimização da resposta e do desempenho do RAG. Os métodos de agrupamento de tamanho fixo e semântico são distintos:

  • Agrupamento de tamanho fixo. A maioria das estratégias de agrupamento usadas no RAG hoje é baseada em segmentos de texto de tamanho fixo conhecidos como partes. O agrupamento de tamanho fixo é rápido, fácil e eficaz com texto que não tem uma estrutura semântica forte, como logs e dados. No entanto, ele não é recomendável para texto que exija compreensão semântica e contexto preciso. A natureza de tamanho fixo da janela pode resultar em cortes de palavras, frases ou parágrafos, impedindo a compreensão e interrompendo o fluxo de informações e o entendimento.

  • Agrupamento semântico. Esse método divide o texto em partes com base no reconhecimento semântico. Os limites de divisão são focados no assunto da sentença e usam recursos com algoritmos complexos e computação significativa. No entanto, ele tem a vantagem distinta de manter a consistência semântica dentro de cada parte. Isso é útil para resumo de texto, análise de sentimento e tarefas de classificação de documentos.

Agrupamento semântico com o modelo de Layout da Informação de Documentos

O Markdown é uma linguagem de marcação estruturada e formatada e é uma entrada popular para habilitar o agrupamento semântico no RAG (Geração Aumentada por Recuperação). Você pode usar o conteúdo de Markdown do modelo de layout para dividir documentos com base em limites de parágrafo, criar partes específicas para tabelas e ajustar sua estratégia de agrupamento para aprimorar a qualidade das respostas geradas.

Benefícios do uso do modelo de layout

  • Processamento simplificado. Você pode analisar diferentes tipos de documento, como PDFs digitais e digitalizados, imagens, arquivos do office (docx, xlsx, pptx) e HTML, com apenas uma chamada à API.

  • Escalabilidade e qualidade de IA. O modelo de layout é altamente escalonável em OCR (Reconhecimento Óptico de Caracteres), extração de tabela e análise de estrutura de documentos. Ele dá suporte a 309 idiomas impressos e 12 idiomas manuscritos, garantindo ainda mais resultados de alta qualidade impulsionados por funcionalidades de IA.

  • Compatibilidade com modelo de linguagem grande (LLM). A saída formatada em Markdown do modelo de layout se adequa bem ao LLM e facilita a integração direta aos fluxos de trabalho. Você pode transformar qualquer tabela de um documento em formato Markdown e evitar esforços extensivos para analisar os documentos para obter maior compreensão de LLM.

Imagem de texto processada com o Estúdio da Informação de Documentos e saída para MarkDown usando o modelo de layout

Screenshot of newspaper article processed by Layout model and outputted to Markdown.

Imagem de tabela processada com o Estúdio da Informação de Documentos usando o modelo de layout

Screenshot of table processed by Layout model and outputted to Markdown.

Introdução

O modelo de Informação de Documentos Layout 2024-02-29-preview e 2023-10-31-preview oferece suporte às seguintes opções de desenvolvimento:

Pronto para começar?

Estúdio de Informação de Documentos

Você pode seguir o início rápido do Estúdio da Informação de Documentos como uma introdução. Em seguida, você pode integrar os recursos da Informação de Documentos ao seu aplicativo usando o código de exemplo fornecido.

  • Comece com o modelo de layout. Você precisa selecionar as seguintes Opções de análise para usar o RAG no estúdio:

    **Required**

    • Executar intervalo de análise → Documentação atual.
    • Intervalo de páginas → Todas as páginas.
    • Estilo de formato de saída → Markdown.

    **Optional**

    • Você também pode selecionar parâmetros de detecção opcionais relevantes.
  • Selecione Salvar.

    Screenshot of Analyze options dialog window with RAG required options in the Document Intelligence studio.

  • Selecione o botão Executar análise para exibir a saída.

    Screenshot of the Run Analysis button in the Document Intelligence Studio.

SDK ou API REST

  • Você pode seguir o início rápido do Informação de Documentos para sua linguagem de programação preferida SDK ou API REST. Use o modelo de layout para extrair conteúdo e estrutura de seus documentos.

  • Você também pode conferir os repositórios do GitHub para obter exemplos de código e dicas para analisar um documento no formato de saída de markdown.

Criar um chat de documento com agrupamento semântico

  • O OpenAI do Azure em seus dados permite que você execute chat com suporte em seus documentos. O OpenAI do Azure em seus dados aplica o modelo de layout da Informação de Documentos para extrair e analisar dados do documento agrupando texto longo com base em tabelas e parágrafos. Você também pode personalizar sua estratégia de agrupamento usando scripts de exemplo de OpenAI do Azure localizados em nosso repositório do GitHub.

  • A IA do Azure para Informação de Documentos agora está integrada ao LangChain como um de seus carregadores de documentos. Você pode usá-la para carregar facilmente os dados e a saída no formato Markdown. Para obter mais informações, confira nosso código de exemplo que mostra uma demonstração simples para o padrão RAG com a IA do Azure para Informação de Documentos como carregador de documentos e o Azure Search como recuperador no LangChain.

  • O chat com o seu exemplo de código de acelerador de solução de dados demonstra um exemplo de padrão RAG de linha de base de ponta a ponta. Ele usa a Pesquisa de IA do Azure como um recuperador e a IA do Azure para Informação de Documentos para carregamento de documentos e agrupamento semântico.

Caso de uso

Se você estiver procurando uma seção específica em um documento, poderá usar o agrupamento semântico para dividir o documento em partes menores com base nos cabeçalhos de seção que ajudam a encontrar a seção que você está procurando de maneira rápida e fácil:


# Using SDK targeting 2024-02-29-preview or 2023-10-31-preview, make sure your resource is in one of these regions: East US, West US2, West Europe
# pip install azure-ai-documentintelligence==1.0.0b1
# pip install langchain langchain-community azure-ai-documentintelligence

from azure.ai.documentintelligence import DocumentIntelligenceClient

endpoint = "https://<my-custom-subdomain>.cognitiveservices.azure.com/"
key = "<api_key>"

from langchain_community.document_loaders import AzureAIDocumentIntelligenceLoader
from langchain.text_splitter import MarkdownHeaderTextSplitter
 
# Initiate Azure AI Document Intelligence to load the document. You can either specify file_path or url_path to load the document.
loader = AzureAIDocumentIntelligenceLoader(file_path="<path to your file>", api_key = key, api_endpoint = endpoint, api_model="prebuilt-layout")
docs = loader.load()
 
# Split the document into chunks base on markdown headers.
headers_to_split_on = [
    ("#", "Header 1"),
    ("##", "Header 2"),
    ("###", "Header 3"),
]
text_splitter = MarkdownHeaderTextSplitter(headers_to_split_on=headers_to_split_on)
 
docs_string = docs[0].page_content
splits = text_splitter.split_text(docs_string)
splits

Próximas etapas