Sdílet prostřednictvím


Načítání rozšířené generace s využitím Azure AI Document Intelligence

Tento obsah se vztahuje na:Zaškrtnutív4.0 (Preview)

Úvod

Načítání rozšířené generace (RAG) je vzor návrhu, který kombinuje předem natrénovaný rozsáhlý jazykový model (LLM), jako je ChatGPT, s externím systémem načítání dat, aby se vygenerovala vylepšená odpověď zahrnující nová data mimo původní trénovací data. Přidání systému načítání informací do vašich aplikací umožňuje chatovat s dokumenty, generovat poutavou obsah a přistupovat k výkonu modelů Azure OpenAI pro vaše data. Máte také větší kontrolu nad daty používanými LLM, protože formuluje odpověď.

Model rozložení analýzy dokumentů je pokročilé rozhraní API pro analýzu dokumentů založené na strojovém učení. Model rozložení nabízí komplexní řešení pro pokročilé možnosti extrakce obsahu a analýzy struktury dokumentů. S modelem rozložení můžete snadno extrahovat text a strukturální prvky, které rozdělí velká těla textu na menší, smysluplné bloky založené na sémantickém obsahu, a ne na libovolných rozděleních. Extrahované informace se dají pohodlně vyčíst do formátu Markdownu, což vám umožní definovat strategii sémantického vytváření bloků dat na základě poskytnutých stavebních bloků.

Snímek obrazovky znázorňující sémantické bloky dat s využitím RAG s využitím Azure AI Document Intelligence

Sémantické vytváření bloků dat

Dlouhé věty jsou pro aplikace zpracování přirozeného jazyka (NLP) náročné. Zvláště když se skládají z více klauzulí, komplexních podstatných jmen nebo slovesných frází, relativních klauzulí a závorek. Stejně jako lidský držitel musí systém NLP také úspěšně sledovat všechny prezentované závislosti. Cílem sémantického vytváření bloků je najít sémanticky koherentní fragmenty reprezentace věty. Tyto fragmenty je pak možné zpracovat nezávisle a rekombinovat jako sémantické reprezentace bez ztráty informací, interpretace nebo sémantické relevance. Základní význam textu se používá jako vodítko pro proces vytváření bloků dat.

Strategie vytváření bloků textových dat hrají klíčovou roli při optimalizaci odezvy a výkonu RAG. Pevné velikosti a sémantické jsou dvě odlišné metody vytváření bloků dat:

  • Bloky dat s pevnou velikostí Většina strategií vytváření bloků dat, které se dnes používají v RAG, vychází z textových segmentů s pevnou velikostí, které se označují jako bloky dat. Bloky dat s pevnou velikostí jsou rychlé, snadné a efektivní s textem, který nemá silnou sémantickou strukturu, jako jsou protokoly a data. Nedoporučuje se ale pro text, který vyžaduje sémantické porozumění a přesný kontext. Pevná velikost okna může vést k rozdělení slov, vět nebo odstavců do porozumění a narušení toku informací a porozumění.

  • Sémantické vytváření bloků dat. Tato metoda rozdělí text na bloky dat na základě sémantického porozumění. Hranice dělení se zaměřují na předmět věty a používají významné výpočetní algoritmicky složité prostředky. Má však jedinečnou výhodu zachování sémantické konzistence v rámci jednotlivých bloků dat. Je užitečné pro shrnutí textu, analýzu mínění a úkoly klasifikace dokumentů.

Sémantické vytváření bloků dat pomocí modelu rozložení funkce Document Intelligence

Markdown je strukturovaný a formátovaný jazyk značek a oblíbený vstup pro povolení sémantického vytváření bloků v RAG (Retrieval-Augmented Generation). Obsah Markdownu z modelu rozložení můžete použít k rozdělení dokumentů na základě hranic odstavců, vytvoření konkrétních bloků dat pro tabulky a vyladění strategie vytváření bloků dat za účelem zlepšení kvality vygenerovaných odpovědí.

Výhody použití modelu rozložení

  • Zjednodušené zpracování. Pomocí jediného volání rozhraní API můžete analyzovat různé typy dokumentů, jako jsou digitální a naskenované soubory PDF, obrázky, soubory office (docx, xlsx, pptx) a HTML.

  • Škálovatelnost a kvalita AI Model Rozložení je vysoce škálovatelný v optickém rozpoznávání znaků (OCR), extrakci tabulek a analýze struktury dokumentů. Podporuje 309 tištěných a 12 ručně psaných jazyků a dále zajišťuje vysoce kvalitní výsledky řízené funkcemi AI.

  • Kompatibilita s velkým jazykem (LLM) Formátovaný výstup modelu rozložení Markdown je popisný pro LLM a usnadňuje bezproblémovou integraci do vašich pracovních postupů. Libovolnou tabulku v dokumentu můžete převést do formátu Markdownu a vyhnout se rozsáhlé analýze dokumentů, abyste lépe porozuměli LLM.

Textový obrázek zpracovaný pomocí nástroje Document Intelligence Studio a výstup do MarkDownu pomocí modelu rozložení

Snímek obrazovky článku o novinách zpracovaných modelem rozložení a výstupem do Markdownu

Obrázek tabulky zpracovaný pomocí nástroje Document Intelligence Studio pomocí modelu rozložení

Snímek obrazovky tabulky zpracovávané modelem rozložení a výstupem do Markdownu

Začínáme

Model rozložení 2024-02-29-preview a 2023-10-31-preview podporuje následující možnosti vývoje:

Jste připravení začít?

Document Intelligence Studio

Začněte tím, že budete postupovat podle rychlého startu pro Document Intelligence Studio. V dalším kroku můžete integrovat funkce Document Intelligence s vlastní aplikací pomocí poskytnutého ukázkového kódu.

  • Začněte s modelem rozložení. Abyste mohli používat RAG v sadě Studio, musíte vybrat následující možnosti analýzy:

    **Required**

    • Rozsah spuštění analýzy → aktuálním dokumentu.
    • Rozsah stránek → Všechny stránky.
    • Styl výstupního formátu → Markdownu.

    **Optional**

    • Můžete také vybrat relevantní volitelné parametry detekce.
  • Zvolte Uložit.

    Snímek obrazovky s dialogovým oknem Analyzovat možnosti s požadovanými možnostmi RAG v nástroji Document Intelligence Studio

  • Výběrem tlačítka Spustit analýzu zobrazte výstup.

    Snímek obrazovky s tlačítkem Spustit analýzu v nástroji Document Intelligence Studio

SDK nebo REST API

  • Můžete postupovat podle rychlého startu Document Intelligence pro preferovanou sadu SDK programovacího jazyka nebo rozhraní REST API. Pomocí modelu rozložení můžete extrahovat obsah a strukturu z dokumentů.

  • Můžete si také prohlédnout úložiště GitHubu pro ukázky kódu a tipy pro analýzu dokumentu ve výstupním formátu markdownu.

Vytvoření chatu sémantického vytváření dokumentů sémantickým vytvářením bloků dat

  • Azure OpenAI na vašich datech umožňuje spouštět podporovaný chat v dokumentech. Azure OpenAI na vašich datech použije model rozložení Document Intelligence k extrakci a parsování dat dokumentu tak, že na základě tabulek a odstavců rozdělí dlouhý text. Strategii vytváření bloků dat můžete přizpůsobit také pomocí ukázkových skriptů Azure OpenAI umístěných v našem úložišti GitHubu.

  • Funkce Document Intelligence v Azure AI je teď integrovaná s jazykem LangChain jako jedním z jejích zavaděčů dokumentů. Můžete ho použít k snadnému načtení dat a výstupu do formátu Markdownu. Další informace najdete v našem ukázkovém kódu , který ukazuje jednoduchou ukázku vzoru RAG s funkcí Azure AI Document Intelligence jako zavaděčem dokumentů a službou Azure Search jako retriever v langchainu.

  • Ukázka kódu akcelerátoru datového řešení ukazuje kompletní ukázku vzoru RAG podle směrného plánu. Používá Azure AI Search jako načítač a Funkci dokumentů Azure AI Document Intelligence k načítání a sémantických bloků dokumentů.

Případ použití

Pokud hledáte konkrétní oddíl v dokumentu, můžete použít sémantické bloky dat k rozdělení dokumentu na menší bloky dat na základě hlaviček oddílů, které vám pomůžou rychle a snadno najít oddíl, který hledáte:


# 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

Další kroky