Condividi tramite


Generazione del recupero augmentata con Informazioni sui documenti di Azure AI

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

Introduzione

Generazione del recupero augmentata (RAG) è un schema progettuale che combina un modello linguistico di grandi dimensioni (LLM) 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 Azure OpenAI per i dati. Si dispone anche un maggiore controllo sui dati usati dal LLM durante la formulazione di una risposta.

Il modello di layout di Intelligence sui documenti è un’API avanzata di analisi dei documenti basata sull’apprendimento automatico. Il modello di layout offre una soluzione completa per estrazione di contenuti avanzata e funzionalità di analisi della struttura dei documenti. Con il modello di 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 a blocchi predefiniti forniti.

Screenshot che illustra la suddivisione in blocchi semantici con generazione del recupero augmentata (RAG) usando Informazioni sui documenti di Azure AI.

Suddivisione in blocchi semantici

Le frasi lunghe sono complesse per le applicazioni di elaborazione del linguaggio naturale (NLP). In particolare quando sono costituite da più frasi, gruppi nominali e sintagmi verbali complessi, preposizioni relative e raggruppamenti tra parentesi. Proprio come gli ascoltatori umani, 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 ricombinati 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 di generazione del recupero augmentata (RAG). Le dimensioni fisse e la semantica sono due metodi distinti di suddivisione in blocchi:

  • Suddivisione in blocchi secondo dimensioni fisse. La maggior parte delle strategie di suddivisione in blocchi usate in generazione del recupero augmentata (RAG) oggi si basa su segmenti di testo con dimensioni fisse note come blocchi. La suddivisione in blocchi secondo dimensioni fisse è 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 una comprensione semantica e un contesto preciso. La natura delle dimensioni fisse della finestra può comportare il troncamento di parole, frasi o paragrafi che impediscono la comprensione e interrompono il flusso di informazioni e la 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 e algoritmiche significative. Tuttavia, questo metodo ha il vantaggio distinto di mantenere la coerenza semantica all’interno di ogni blocco. È utile per le attività di riepilogo testi, 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 secondo la generazione del recupero augmentata (RAG). È possibile usare il contenuto Markdown del modello di layout per suddividere 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 documenti, ad esempio PDF digitali e analizzati, immagini, file di office (docx, xlsx, pptx) e HTML, con una singola chiamata API.

  • Qualità di scalabilità e intelligenza artificiale. Il modello di layout è altamente scalabile in riconoscimento ottico dei caratteri (OCR), estrazione di tabelle e analisi della struttura dei documenti. Supporta 309 lingue stampate e 12 lingue scritte a mano, garantendo risultati di alta qualità basati sulle funzionalità di intelligenza artificiale.

  • Compatibilità LLM (modello linguistico di grandi dimensioni). L’output formattato in Markdown del modello di layout è semplice e facilita l’integrazione nei flussi di lavoro. È possibile trasformare qualsiasi tabella in un documento in formato Markdown ed evitare un lavoro di analisi approfondita dei documenti per una maggiore comprensione LLM.

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

Screenshot dell’articolo di giornale elaborato dal modello di layout e restituito in Markdown.

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

Screenshot della tabella elaborata dal modello di layout e restituita in Markdown.

Operazioni preliminari

Il modello di layout di Intelligence sui documenti 2024-02-29-preview e 2023-10-31-preview supporta le opzioni di sviluppo seguenti:

Pronti per iniziare?

Document Intelligence Studio

Per iniziare, è possibile seguire l’avvio rapido di Document Intelligence Studio. È quindi possibile integrare le funzionalità di Intelligence sui documenti con la propria applicazione usando il codice di esempio fornito.

  • Iniziare con il modello di layout. È necessario selezionare le opzioni di analisi seguenti per usare la generazione del recupero augmentata (RAG) in studio:

    **Required**

    • Eseguire l’intervallo di analisi → Documento corrente.
    • Intervallo di pagine → Tutte le pagine.
    • Stile del formato di output → Markdown.

    **Optional**

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

    Screenshot della finestra di dialogo di opzioni di analisi con le opzioni necessarie di generazione del recupero augmentata (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 l’avvio rapido di Intelligence sui documenti per l’SDK del linguaggio di programmazione preferito o l’API REST. Usare il modello di layout per estrarre contenuti 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 Intelligence sui documenti per estrarre e analizzare i dati dei documenti suddividendo in blocchi un testo lungo in base a tabelle e paragrafi. È anche possibile personalizzare la strategia di suddivisione in blocchi usando script di esempio di Azure OpenAI disponibili nel repository GitHub.

  • Informazioni sui documenti di Azure AI è ora integrato con LangChain come uno dei relativi caricatori di documenti. È possibile usarlo per caricare facilmente i dati e l’output in formato Markdown. Per altre informazioni, vedere il codice di esempio che mostra una semplice demo per il modello di generazione del recupero augmentata (RAG) con Informazioni sui documenti di Azure AI come caricatore di documenti e Ricerca di Azure come funzione di recupero in LangChain.

  • La chat con l’acceleratore di soluzioni dati di esempio di codice illustra un esempio di modello di generazione del recupero augmentata di base end-to-end. Usa Azure AI Search come funzione di recupero e Informazioni sui documenti di Azure AI per il caricamento di documenti 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