Bewerken

Delen via


Chunking

Azure AI services
Azure AI Search
Azure OpenAI Service
Azure Machine Learning

Nu u uw testdocumenten en query's hebt verzameld en een documentanalyse hebt uitgevoerd in de voorbereidingsfase, wordt de volgende fase gesegmenteerd. Het opsplitsen van documenten in een verzameling rechtse, semantisch relevante segmenten is een belangrijke factor in het succes van uw RAG-implementatie (Retrieval-Augmented Generation). Het doorgeven van volledige documenten of oversized segmenten is duur, kan de tokenlimieten van het model overbelasten en levert niet de beste resultaten op. Het doorgeven van informatie aan een groot taalmodel dat niet relevant is voor de query kan leiden tot halluïnaties. U moet bepalen welke onderdelen van een document relevant zijn en welke onderdelen irrelevant zijn en moeten worden genegeerd.

Het doorgeven van segmenten die te klein zijn en onvoldoende context bevatten om de query aan te pakken, leidt ook tot slechte resultaten. Relevante context die bestaat in meerdere segmenten, wordt mogelijk niet vastgelegd. De kunst is het implementeren van effectieve segmenteringsmethoden voor uw specifieke documenttypen en hun structuren en inhoud. Er zijn verschillende segmenteringsmethoden waarmee u rekening moet houden, elk met hun eigen kosteneffecten en effectiviteit, afhankelijk van het type en de structuur van het document waarop ze worden toegepast.

In dit artikel worden verschillende segmenteringsmethoden beschreven en wordt onderzocht hoe de structuur van uw documenten van invloed kan zijn op de segmenteringsmethode die u kiest.

Dit artikel maakt deel uit van een serie. Lees de inleiding.

Segmentering van economie

Bij het bepalen van uw algehele segmenteringsstrategie moet u rekening houden met uw budget, samen met uw kwaliteits- en doorvoervereisten voor uw tekstinhoud. Er zijn technische kosten voor het ontwerp en de implementatie van elke unieke segmenterings-implementatie en verwerkingskosten per document die verschillen, afhankelijk van de aanpak.

Hier volgen factoren die u moet overwegen bij het bekijken van de kosten van uw algehele oplossing:

  • Aantal unieke segmenterings-implementaties : elke unieke implementatie heeft zowel technische als onderhoudskosten. U moet rekening houden met het aantal unieke documenttypen in uw corpus en de kosten versus de kwaliteit van unieke implementaties voor elk document.
  • Kosten per document van elke implementatie : sommige segmenteringsmethoden kunnen leiden tot betere kwaliteitssegmenten, maar hebben een hogere financiële en tijdelijke kosten om deze segmenten te genereren. Het gebruik van een vooraf samengesteld model in Azure AI Document Intelligence heeft bijvoorbeeld waarschijnlijk een hogere kosten per document dan een pure implementatie voor het parseren van tekst, maar kan leiden tot betere segmenten.
  • Aantal initiële documenten : het aantal initiële documenten dat u moet verwerken om uw oplossing te starten.
  • Aantal incrementele documenten : het aantal en de frequentie van nieuwe documenten die u moet verwerken voor doorlopend onderhoud van het systeem.

Segmenteringsmethoden

In deze sectie vindt u een overzicht van enkele algemene segmenteringsmethoden. Deze lijst is niet bedoeld om volledig te zijn, in plaats van enkele veelgebruikte representatieve benaderingen. U kunt meerdere benaderingen in de implementatie gebruiken, zoals het gebruik van een groot taalmodel combineren om een tekstweergave van een afbeelding te krijgen met veel van de vermelde benaderingen.

Elke benadering gaat gepaard met een samengevatte besluitvormingsmatrix waarin de hulpprogramma's, de bijbehorende kosten en meer worden gemarkeerd. De technische inspanning en verwerkingskosten zijn subjectief en zijn opgenomen voor relatieve vergelijking.

Parseren op basis van zinnen

Met deze eenvoudige benadering worden tekstdocumenten opgesplitst in segmenten die bestaan uit volledige zinnen. De voordelen van deze aanpak zijn dat het goedkoop is om te implementeren, dat het lage verwerkingskosten heeft en kan worden toegepast op elk op tekst gebaseerd document dat is geschreven in proza of volledige zinnen. Een uitdaging met deze benadering is dat elk segment mogelijk niet de volledige context van een gedachte of betekenis vastlegt. Vaak moeten meerdere zinnen samen worden genomen om de semantische betekenis vast te leggen.

Hulpprogramma's: SpaCy-zinstokenizer, LangChain recursieve tekstsplitser, NLTK-zinstokenizer
Technische inspanning: Laag
Verwerkingskosten: Laag
Gebruiksvoorbeelden: Ongestructureerde documenten die zijn geschreven in proza of volledige zinnen, en uw verzameling documenten bevat een verboden aantal verschillende documenttypen om afzonderlijke segmenteringsstrategieën te bouwen voor
Voorbeelden: Door de gebruiker gegenereerde inhoud zoals open-beëindigde feedback van enquêtes, forumberichten, beoordelingen, e-mailberichten, een roman of een essay

Parseren met vaste grootte (met overlapping)

Deze benadering breekt een document op in segmenten op basis van een vast aantal tekens of tokens en maakt enige overlapping van tekens tussen segmenten mogelijk. Deze benadering heeft veel van dezelfde voor- en nadelen als parseren op basis van zinnen. Een voordeel van deze benadering is dat parseren op basis van zinnen mogelijk is dat het mogelijk is om segmenten te verkrijgen met semantische betekenis die meerdere zinnen omvat.

U moet de vaste grootte van de segmenten en de hoeveelheid overlapping kiezen. Omdat de resultaten verschillen voor verschillende documenttypen, kunt u het beste een hulpprogramma zoals de segmentvisualr HuggingFace gebruiken om verkennende analyses uit te voeren. Met dergelijke hulpprogramma's kunt u visualiseren hoe uw documenten worden gesegmenteerd, gezien uw beslissingen. Het is raadzaam OM BERT-tokens te gebruiken voor het aantal tekens wanneer u parseren met vaste grootte gebruikt. BERT-tokens zijn gebaseerd op zinvolle taaleenheden, zodat ze meer semantische informatie behouden dan het aantal tekens.

Hulpprogramma's: LangChain recursieve tekstsplitser, Face-segment visualiseren
Technische inspanning: Laag
Verwerkingskosten: Laag
Gebruiksvoorbeelden: Ongestructureerde documenten die zijn geschreven in proza of niet-proza met volledige of onvolledige zinnen. Uw verzameling documenten bevat een verboden aantal verschillende documenttypen voor het bouwen van afzonderlijke segmenteringsstrategieën voor
Voorbeelden: Door de gebruiker gegenereerde inhoud, zoals open-beëindigde feedback van enquêtes, forumberichten, beoordelingen, e-mailberichten, persoonlijke notities of lijsten

Aangepaste code

Met deze methode worden documenten geparseerd met behulp van aangepaste code om segmenten te maken. Deze methode is het meest succesvol voor op tekst gebaseerde documenten waarbij de structuur bekend is of kan worden afgeleid en een hoge mate van controle over het maken van segmenten is vereist. U kunt tekstparseringstechnieken zoals reguliere expressies gebruiken om segmenten te maken op basis van patronen in de structuur van het document. Het doel is om segmenten te maken met een vergelijkbare grootte in lengte en segmenten met afzonderlijke inhoud. Veel programmeertalen bieden ondersteuning voor reguliere expressies en sommige hebben bibliotheken of pakketten die elegantere functies voor het bewerken van tekenreeksen bieden.

Hulpprogramma's: Python (re, regex, BeautifulSoup, lxml, html5lib, marko), R (stringr, xml2), Julia (Gumbo.jl)
Technische inspanning: gemiddeld
Verwerkingskosten: Laag
Gebruiksvoorbeelden: Semi-gestructureerde documenten waar structuur kan worden afgeleid
Voorbeelden: Octrooiaanvrages, onderzoeksdocumenten, verzekeringsbeleid, scripts en screenplays

Uitbreiding van grote taalmodellen

Grote taalmodellen kunnen worden gebruikt om segmenten te maken. Veelvoorkomende use cases zijn het gebruik van een groot taalmodel, zoals GPT-4, voor het genereren van tekstuele weergaven van afbeeldingen of samenvattingen van tabellen die kunnen worden gebruikt als segmenten. Uitbreiding van grote taalmodellen wordt gebruikt met andere segmenteringsmethoden, zoals aangepaste code.

Hulpprogramma's: Azure OpenAI, OpenAI
Technische inspanning: gemiddeld
Verwerkingskosten: hoog
Use cases: Afbeeldingen, tabellen
Voorbeelden: Tekstweergaven van tabellen en afbeeldingen genereren, transcripties van vergaderingen, spraak, interviews of podcasts samenvatten

Analyse van documentindeling

Analysebibliotheken en -services voor documentindeling combineren ocr-mogelijkheden (optical character recognition) met deep learning-modellen om zowel de structuur van documenten als tekst te extraheren. Structurele elementen kunnen kopteksten, voetteksten, titels, sectiekoppen, tabellen en afbeeldingen bevatten. Het doel is om een betere semantische betekenis te bieden aan inhoud in documenten.

In documentindelingsanalysebibliotheken en -services wordt een model weergegeven dat de inhoud, zowel structurele als tekst, van het document vertegenwoordigt. U moet nog steeds code schrijven die communiceert met het model.

Notitie

Azure AI Document Intelligence is een cloudservice waarvoor u uw document naar de service moet uploaden. U moet ervoor zorgen dat u met uw beveiligings- en nalevingsregels documenten kunt uploaden naar services zoals deze.

Hulpprogramma's: Azure AI Document Intelligence documentanalysemodellen, Donut, Layout Parser
Technische inspanning: gemiddeld
Verwerkingskosten: gemiddeld
Gebruiksvoorbeelden: Semi-gestructureerde documenten
Voorbeelden: Nieuwsartikelen, webpagina's, cv's

Vooraf samengesteld model

Er zijn services, zoals Azure AI Document Intelligence, die vooraf samengestelde modellen bieden waarvan u kunt profiteren voor verschillende documenttypen. Sommige modellen worden getraind voor specifieke documenttypen, zoals het formulier Us Tax W-2, terwijl andere modellen gericht zijn op een breder genre van documenttypen, zoals een factuur.

Hulpprogramma's: Vooraf samengestelde modellen van Azure AI Document Intelligence, Power Automate Intelligent Document Processing, LayoutLMv3
Technische inspanning: Laag
Verwerkingskosten: gemiddeld/hoog
Use cases: Gestructureerde documenten waarin een vooraf samengesteld model bestaat
Specifieke voorbeelden: Facturen, ontvangsten, zorgverzekeringskaart, W-2-formulier

Aangepast model

Voor zeer gestructureerde documenten waarin geen vooraf samengesteld model bestaat, moet u mogelijk een aangepast model maken. Deze aanpak kan effectief zijn voor afbeeldingen of documenten die zeer gestructureerd zijn, waardoor ze moeilijk te gebruiken zijn voor het parseren van tekst.

Hulpprogramma's: Aangepaste modellen van Azure AI Document Intelligence, Tesseract
Technische inspanning: Hoog
Verwerkingskosten: gemiddeld/hoog
Use cases: Gestructureerde documenten waarbij een vooraf samengesteld model niet bestaat
Voorbeelden: Planningen voor autoherstel en onderhoud, academische transcripties en records, technische handleidingen, operationele procedures, onderhoudsrichtlijnen

Documentstructuur

Documenten variëren in de hoeveelheid structuur die ze hebben. Sommige documenten, zoals overheidsformulieren, hebben een complexe en bekende structuur, zoals een W-2 Amerikaans belastingdocument. Aan het andere uiteinde van het spectrum zijn ongestructureerde documenten, zoals vrije notities. De mate van structuur tot een documenttype is een goed uitgangspunt voor het bepalen van een effectieve chunkingbenadering. Hoewel er geen vaste en snelle regels zijn, bevat deze sectie enkele richtlijnen die u kunt volgen.

Diagram met segmenteringsmethoden per documentstructuur.

Figuur 1. Segmenteringsbenadering past bij documentstructuur

Gestructureerde documenten

Gestructureerde documenten, ook wel documenten met een vaste indeling genoemd, hebben gedefinieerde indelingen. De gegevens in deze documenten bevinden zich op vaste locaties. De datum of de achternaam van de klant vindt u bijvoorbeeld op dezelfde locatie in elk document met dezelfde vaste indeling. Voorbeelden van documenten met vaste notatie zijn het amerikaanse belastingdocument W-2.

Documenten met een vaste indeling kunnen gescande afbeeldingen zijn van oorspronkelijke documenten die met de hand zijn gevuld of complexe indelingsstructuren hebben, waardoor ze moeilijk te verwerken zijn met een eenvoudige benadering voor het parseren van tekst. Een veelvoorkomende benadering voor het verwerken van complexe documentstructuren is het gebruik van machine learning-modellen om gegevens te extraheren en waar mogelijk semantische betekenis toe te passen op die gegevens.

Voorbeelden: W-2 formulier, Verzekeringskaart
Algemene benaderingen: vooraf samengestelde modellen, aangepaste modellen

Semi-gestructureerde documenten

Semi-gestructureerde documenten hebben geen vaste indeling of schema, zoals het W-2-formulier, maar ze bieden wel consistentie met betrekking tot indeling of schema. Alle facturen zijn bijvoorbeeld niet hetzelfde, maar in het algemeen hebben ze een consistent schema. U kunt verwachten dat een factuur een invoice number en een vorm van bill to naam ship to en adres heeft, onder andere gegevens. Een webpagina heeft mogelijk geen schema-consistentie, maar ze hebben vergelijkbare structurele elementen of indelingselementen, zoals body, titleen H1p die kunnen worden gebruikt om semantische betekenis toe te voegen aan de omringende tekst.

Net als gestructureerde documenten zijn semi-gestructureerde documenten met complexe indelingsstructuren moeilijk te verwerken met tekstparsering. Voor deze documenttypen zijn machine learning-modellen een goede benadering. Er zijn vooraf samengestelde modellen voor bepaalde domeinen met consistente schema's zoals facturen, contracten of zorgverzekeringen. Overweeg aangepaste modellen te bouwen voor complexe structuren waar geen vooraf samengesteld model bestaat.

Voorbeelden: Facturen, ontvangstbewijzen, webpagina's, Markdown-bestanden
Algemene benaderingen: Modellen voor documentanalyse

Uitgestelde structuur

Sommige documenten hebben een structuur, maar worden niet in markeringen geschreven. Voor deze documenten moet de structuur worden afgeleid. Een goed voorbeeld is het volgende document over eu-regelgeving.

Diagram met een EU-verordening als voorbeeld van een document met een afgeleide structuur.

Figuur 2. EU-verordening met een uitgestelde structuur

Omdat u de structuur van het document duidelijk begrijpt en er geen bekende modellen voor zijn, kunt u bepalen of u aangepaste code kunt schrijven. Een documentindeling zoals deze kan de moeite niet rechtvaardigen om een aangepast model te maken, afhankelijk van het aantal verschillende documenten van dit type waarmee u werkt. Als uw corpus bijvoorbeeld alle EU-regelgeving of Amerikaanse staatswetten is, kan een aangepast model een goede aanpak zijn. Als u met één document werkt, zoals de EU-verordening in het voorbeeld, is aangepaste code mogelijk rendabeler.

Voorbeelden: Wetdocumenten, scripts, productiespecificaties
Algemene benaderingen: Aangepaste code, aangepaste modellen

Niet-gestructureerde documenten

Een goede benadering voor documenten met weinig tot geen structuur zijn op zin gebaseerde of vaste grootte met overlappende benaderingen.

Voorbeelden: door de gebruiker gegenereerde inhoud, zoals open-beëindigde feedback van enquêtes, forumberichten of beoordelingen, e-mailberichten en persoonlijke of onderzoeksnotities
Algemene benaderingen: zinsgebasd of grensgebasd met overlap

Experimenten

Hoewel de beste pasvorm voor elke segmenteringsbenadering wordt vermeld, zijn alle benaderingen in de praktijk mogelijk geschikt voor elk documenttype. Parsering op basis van zinnen kan bijvoorbeeld geschikt zijn voor zeer gestructureerde documenten of een aangepast model kan geschikt zijn voor ongestructureerde documenten. Onderdeel van het optimaliseren van uw RAG-oplossing zal experimenteren met verschillende segmenteringsmethoden, rekening houdend met het aantal resources dat u hebt, de technische vaardigheid van uw resources en het aantal documenten dat u moet verwerken. Als u een optimale segmenteringsstrategie wilt bereiken, moet u de voordelen en afwegingen van elk van de methoden die u test, observeren om ervoor te zorgen dat u de juiste benadering kiest voor uw use-case.

Volgende stappen