Condividi tramite


Recupero della generazione aumentata con Intelligence sui documenti di Intelligenza artificiale di Azure

Questo contenuto si applica a:segno di spuntav4.0 (anteprima)

Introduzione

LLM (Retrieval-Augmented Generation) è un modello di progettazione che combina un modello di linguaggio large con training preliminare come ChatGPT con un sistema di recupero dati esterno per generare una risposta avanzata che incorpora nuovi dati al di fuori dei dati di training originali. L'aggiunta di un sistema di recupero delle informazioni alle applicazioni consente di chattare con i documenti, generare contenuti accattivanti e accedere alla potenza dei modelli OpenAI di Azure per i dati. Si ha anche un maggiore controllo sui dati usati dall'LLM durante la formulazione di una risposta.

Il modello Document Intelligence Layout è un'API avanzata di analisi dei documenti basata su Machine Learning. Il modello Layout offre una soluzione completa per l'estrazione avanzata dei contenuti e le funzionalità di analisi della struttura dei documenti. Con il modello Layout, è possibile estrarre facilmente testo ed elementi strutturali per dividere grandi corpi di testo in blocchi più piccoli e significativi in base al contenuto semantico anziché a divisioni arbitrarie. Le informazioni estratte possono essere facilmente restituite in formato Markdown, consentendo di definire la strategia di suddivisione in blocchi semantici in base ai blocchi predefiniti forniti.

Screenshot che illustra la suddivisione in blocchi semantici con RAG usando Azure AI Document Intelligence.

Suddivisione in blocchi semantici

Le frasi lunghe sono complesse per le applicazioni NLP (Natural Language Processing). In particolare quando sono costituiti da più clausole, frasi sostantivali o verbi complesse, clausole relative e raggruppamenti tra parentesi. Proprio come il proprietario umano, un sistema NLP deve anche tenere traccia di tutte le dipendenze presentate. L'obiettivo della suddivisione in blocchi semantici è trovare frammenti semanticamente coerenti di una rappresentazione di frase. Questi frammenti possono quindi essere elaborati in modo indipendente e ricombinato come rappresentazioni semantiche senza perdita di informazioni, interpretazione o rilevanza semantica. Il significato intrinseco del testo viene usato come guida per il processo di suddivisione in blocchi.

Le strategie di suddivisione in blocchi dei dati di testo svolgono un ruolo fondamentale nell'ottimizzazione della risposta e delle prestazioni rag. Le dimensioni fisse e la semantica sono due metodi distinti di suddivisione in blocchi:

  • Suddivisione in blocchi a dimensione fissa. La maggior parte delle strategie di suddivisione in blocchi usate in RAG oggi si basa su segmenti di testo con dimensioni corrette note come blocchi. La suddivisione in blocchi a dimensione fissa è rapida, semplice ed efficace con testo che non ha una struttura semantica avanzata, ad esempio log e dati. Tuttavia, non è consigliabile per il testo che richiede la comprensione semantica e il contesto preciso. La natura fissa della finestra può comportare parole, frasi o paragrafi che impediscono la comprensione e l'interruzione del flusso di informazioni e comprensione.

  • Suddivisione in blocchi semantici. Questo metodo divide il testo in blocchi in base alla comprensione semantica. I limiti di divisione sono incentrati sull'oggetto frase e usano risorse complesse di calcolo significative. Tuttavia, ha il vantaggio distinto di mantenere la coerenza semantica all'interno di ogni blocco. È utile per le attività di riepilogo del testo, analisi del sentiment e classificazione dei documenti.

Suddivisione in blocchi semantici con il modello Di layout di Intelligence sui documenti

Markdown è un linguaggio di markup strutturato e formattato e un input diffuso per abilitare la suddivisione in blocchi semantici in RAG (Generazione aumentata di recupero). È possibile usare il contenuto Markdown del modello layout per suddividere i documenti in base ai limiti dei paragrafi, creare blocchi specifici per le tabelle e ottimizzare la strategia di suddivisione in blocchi per migliorare la qualità delle risposte generate.

Vantaggi dell'uso del modello di layout

  • Elaborazione semplificata. È possibile analizzare diversi tipi di documento, ad esempio PDF digitali e analizzati, immagini, file di office (docx, xlsx, pptx) e HTML, con una singola chiamata API.

  • Scalabilità e qualità dell'intelligenza artificiale. Il modello Layout è altamente scalabile nell'analisi OCR (Optical Character Recognition), nell'estrazione di tabelle e nell'analisi della struttura dei documenti. Supporta 309 lingue stampate e 12 scritte a mano, garantendo ulteriormente risultati di alta qualità basati sulle funzionalità di intelligenza artificiale.

  • Compatibilità LLM (Large Language Model). L'output formattato markdown del modello di layout è semplice e semplifica l'integrazione nei flussi di lavoro. È possibile trasformare qualsiasi tabella in un documento in formato Markdown ed evitare un'analisi approfondita dei documenti per una maggiore comprensione LLM.

Immagine di testo elaborata con Document Intelligence Studio e output in MarkDown usando il modello layout

Screenshot dell'articolo del giornale elaborato dal modello di layout e restituito a Markdown.

Immagine di tabella elaborata con Document Intelligence Studio con il modello di layout

Screenshot della tabella elaborata dal modello layout e restituita a Markdown.

Operazioni preliminari

Il modello document intelligence layout 2024-02-29-preview e 2023-10-31-preview supporta le opzioni di sviluppo seguenti:

Pronto per iniziare?

Document Intelligence Studio

Per iniziare, seguire la guida introduttiva di Document Intelligence Studio. È quindi possibile integrare le funzionalità di Document Intelligence con la propria applicazione usando il codice di esempio fornito.

  • Iniziare con il modello Layout. È necessario selezionare le opzioni di analisi seguenti per usare RAG in studio:

    **Required**

    • Eseguire l'intervallo di analisi → documento corrente.
    • Intervallo di pagine → Tutte le pagine.
    • Stile formato di output → Markdown.

    **Optional**

    • È anche possibile selezionare i parametri di rilevamento facoltativi pertinenti.
  • Seleziona Salva.

    Screenshot della finestra di dialogo Analizza opzioni con le opzioni necessarie di Rag in Document Intelligence Studio.

  • Selezionare il pulsante Esegui analisi per visualizzare l'output.

    Screenshot del pulsante Esegui analisi in Document Intelligence Studio.

SDK o API REST

  • È possibile seguire la guida introduttiva di Document Intelligence per l'SDK del linguaggio di programmazione preferito o l'API REST. Usare il modello Layout per estrarre contenuto e struttura dai documenti.

  • È anche possibile consultare i repository GitHub per esempi di codice e suggerimenti per l'analisi di un documento in formato di output markdown.

Creare chat di documenti con suddivisione in blocchi semantici

  • Azure OpenAI sui dati consente di eseguire chat supportate nei documenti. Azure OpenAI sui dati applica il modello Di layout di Document Intelligence per estrarre e analizzare i dati dei documenti tramite la suddivisione in blocchi di testo lungo in base a tabelle e paragrafi. È anche possibile personalizzare la strategia di suddivisione in blocchi usando gli script di esempio OpenAI di Azure disponibili nel repository GitHub.

  • Azure AI Document Intelligence è ora integrato con LangChain come uno dei relativi caricatori di documenti. È possibile usarlo per caricare facilmente i dati e l'output nel formato Markdown. Per altre informazioni, vedere il codice di esempio che mostra una semplice demo per il modello RAG con Azure AI Document Intelligence come caricatore di documenti e Ricerca di Azure come retriever in LangChain.

  • La chat con l'esempio di codice dell'acceleratore di soluzioni dati illustra un esempio di modello rag di base end-to-end. Usa Ricerca di intelligenza artificiale di Azure come strumento di recupero e Intelligence per i documenti di Intelligenza artificiale di Azure per il caricamento e la suddivisione in blocchi semantici.

Caso d'uso

Se si sta cercando una sezione specifica in un documento, è possibile usare la suddivisione in blocchi semantici per dividere il documento in blocchi più piccoli in base alle intestazioni di sezione che consentono di trovare la sezione che si sta cercando in modo rapido e semplice:


# 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

Passaggi successivi