Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
När du har samlat in dina testdokument och frågor och utför en dokumentanalys under förberedelsefasen är nästa fas segmentering. Att dela upp dokument i segment med lämplig storlek som var och en innehåller semantiskt relevant innehåll är avgörande för att implementeringen av Retrieval-Augmented Generation (RAG) ska lyckas. Att skicka hela dokument eller stora segment är dyrt, kan överbelasta modellens tokengränser och ger inte det bästa resultatet. Att skicka information till en språkmodell som är irrelevant för frågan kan resultera i felaktiga eller orelaterade svar. Du måste optimera processen för att skicka relevant information och ta bort irrelevant information med hjälp av effektiva segmenterings- och sökstrategier. Den här metoden minimerar falska positiva och negativa och maximerar sanna positiva och negativa.
Segment som är för små och inte innehåller tillräckligt med kontext för att hantera frågan kan leda till dåliga resultat. Relevant kontext som finns i flera segment kanske inte registreras. Nyckeln är att implementera effektiva segmenteringsmetoder för dina specifika dokumenttyper och deras specifika strukturer och innehåll. Det finns olika segmenteringsmetoder att tänka på, var och en med sina egna kostnadskonsekvenser och effektivitet, beroende på typ och struktur för dokument som de tillämpas på.
Den här artikeln beskriver olika segmenteringsmetoder och undersöker hur strukturen i dina dokument kan påverka den segmenteringsmetod som du väljer.
Den här artikeln är en del av en serie. Läs introduktionen innan du fortsätter.
Segmentering av ekonomi
När du fastställer din övergripande segmenteringsstrategi måste du tänka på din budget och dina krav på kvalitet och dataflöde för dokumentsamlingen. Det finns tekniska kostnader för design och implementering av varje unik segmenteringsimplementering och bearbetningskostnader per dokument som skiljer sig beroende på metoden. Om dina dokument har inbäddade eller länkade medier måste du överväga ekonomin för att bearbeta dessa element. Vid segmentering använder den här bearbetningen vanligtvis språkmodeller för att generera beskrivningar av mediet. Dessa beskrivningar segmenteras sedan. En alternativ metod för vissa medier är att skicka dem as-is till en multimodal modell vid inferenstid. Detta tillvägagångssätt påverkar dock inte segmenteringsekonomin.
Följande avsnitt undersöker ekonomin för segmentering av bilder och den övergripande lösningen.
Bild som segmenterar ekonomi
Det finns en kostnad för att använda en språkmodell för att generera en beskrivning av en bild som du delar upp. Till exempel debiterar molnbaserade tjänster som Azure OpenAI-tjänsten antingen per transaktion eller på förbetalda etableringsbasis. Större bilder medför en större kostnad. Genom dokumentanalysen bör du avgöra vilka bilder som är värdefulla att avskilja och vilka bilder du bör ignorera. Därifrån måste du förstå antalet och storleken på bilderna i din lösning. Sedan bör du väga värdet för att segmentera bildbeskrivningarna mot kostnaden för att generera dessa beskrivningar.
Ett sätt att avgöra vilka bilder som ska bearbetas är att använda en tjänst som Azure AI Vision för att klassificera bilder, tagga bilder eller göra logotypidentifiering. Du kan sedan använda resultat- och konfidensindikatorerna för att avgöra om bilden lägger till meningsfullt, kontextuellt värde och ska bearbetas. Anrop till Vision-systemet kan vara mindre kostsamma än anrop till språkmodeller, så den här metoden kan leda till kostnadsbesparingar. Experimentera för att fastställa vilka konfidensnivåer och vilka klassificeringar eller taggar som ger bäst resultat för dina data. Ett annat alternativ är att skapa en egen klassificerarmodell. Om du använder den här metoden bör du tänka på kostnaderna för att skapa, vara värd för och underhålla din egen modell.
En annan strategi för kostnadsoptimering är att cacha med hjälp av mönstretCache-Aside. Du kan generera en nyckel som baseras på bildens hash. Som ett första steg kontrollerar du om du har ett cachelagrat resultat från en tidigare körning eller ett tidigare bearbetat dokument. Om du gör det kan du använda det resultatet. Den här metoden eliminerar kostnaderna för att anropa en klassificerare eller en språkmodell. Om det inte finns någon cache, cachar du resultatet när du anropar klassificeraren eller språkmodellen. Framtida anrop för den här avbildningen använder cacheminnet.
Följande enkla arbetsflöde integrerar alla dessa kostnadsoptimeringsprocesser:
Kontrollera om bildbearbetningen cachelagras. I så fall använder du de cachelagrade resultaten.
Kör klassificeraren för att avgöra om du ska bearbeta avbildningen. Cachelagrade klassificeringsresultatet. Om klassificeringslogik fastställer att bilden lägger till värde går du vidare till nästa steg.
Generera beskrivningen för avbildningen. Cacha resultatet.
Ekonomi för den övergripande lösningen
Tänk på följande faktorer när du utvärderar kostnaden för din övergripande lösning:
Antal unika segmentimplementeringar: Varje unik implementering har kostnader för teknik och underhåll. Tänk på antalet unika dokumenttyper i samlingen och kostnaden jämfört med kvalitetsväganden för unika implementeringar för var och en.
Kostnaden per dokument för varje implementering: Vissa segmenteringsmetoder kan resultera i segment av bättre kvalitet men har en högre ekonomisk och tidsmässig kostnad för att generera dessa segment. Om du till exempel använder en fördefinierad modell i Azure AI Document Intelligence har det sannolikt en högre kostnad per dokument än en ren textparsningsimplementering, men kan resultera i bättre segment.
Antal inledande dokument: Antalet inledande dokument som du behöver bearbeta för att starta lösningen.
Antal inkrementella dokument: Antalet och antalet nya dokument som du måste bearbeta för löpande underhåll av systemet.
Inläsning och segmentering
Under segmenteringen måste du först läsa in dokumentet i minnet i något format. Segmenteringskoden fungerar sedan mot den minnesinterna representationen av dokumentet. Du kan kombinera inläsningskoden med segmentering eller separat inläsning i en egen fas. Den metod som du väljer bör främst baseras på arkitekturbegränsningar och dina inställningar. I följande avsnitt går vi kort igenom båda alternativen och ger allmänna rekommendationer.
Separat inläsning och segmentering
Det finns flera orsaker till varför du kan välja att separera inläsnings- och segmenteringsfaserna. Du kanske vill kapsla in logik i inläsningskoden. Du kanske vill spara resultatet av inläsningskoden före segmentering, särskilt när du experimenterar med olika segmenteringspermutationer för att spara på bearbetningstid eller kostnad. Slutligen kanske du vill köra inläsnings- och segmenteringskoden i separata processer av arkitekturskäl, till exempel process bulkheading eller säkerhetssegmentering som innebär att personliga data tas bort.
Kapsla in logik i inläsningskoden
Du kan välja att kapsla in förbearbetningslogik i inläsningsfasen. Den här metoden förenklar segmenteringskoden eftersom den inte kräver någon förbearbetning. Förbearbetning kan vara så enkelt som att ta bort eller kommentera delar av dokumentet som du vill ignorera i dokumentanalys, till exempel vattenstämplar, sidhuvuden och sidfötter, till mer komplexa uppgifter som att formatera om dokumentet. Du kan till exempel inkludera följande förbearbetningsuppgifter i inläsningsfasen:
Ta bort eller kommentera objekt som du vill ignorera.
Ersätt bildreferenser med bildbeskrivningar. Under den här fasen använder du en stor språkmodell för att generera en beskrivning av bilden och uppdatera dokumentet med den beskrivningen. Om du i dokumentanalysfasen fastställer att det finns omgivande text som ger värdefull kontext till bilden skickar du texten tillsammans med bilden till den stora språkmodellen.
Ladda ned eller kopiera bilder till fillagring som Azure Data Lake Storage som ska bearbetas separat från dokumenttexten. Om du i dokumentanalysen bedömer att det finns omgivande text som ger värdefull kontext till bilden lagrar du den här texten tillsammans med bilden i fillagringen.
Formatera om tabeller så att de blir enklare att bearbeta.
Spara resultatet av inläsningskoden
Det finns flera orsaker till att du kan välja att spara resultatet av inläsningskoden. En orsak är om du vill kunna inspektera dokumenten när de har lästs in och förbearbetats, men innan segmenteringslogik körs. En annan orsak är att du kanske vill köra olika segmenteringslogik mot samma förbearbetade kod när den är under utveckling eller i produktion. Om den inlästa koden sparas påskyndas den här processen.
Köra inläsnings- och segmenteringskod i separata processer
Separera inläsnings- och segmenteringskoden i separata processer för att köra flera segmentimplementeringar mot samma förbearbetade kod. Med den här separationen kan du också köra inläsnings- och segmenteringskod i olika beräkningsmiljöer och på olika maskinvara. Du kan använda den här designen för att oberoende justera den datorkraft som används för inläsning och segmentering.
Kombinera inläsning och segmentering
Att kombinera inläsnings- och segmenteringskoden är en enklare implementering i de flesta fall. Många av de operationer som du kan överväga att utföra i datapreprocessering i en separat laddningsfas kan utföras i segmenteringsfasen. I stället för att till exempel ersätta bild-URL:er med en beskrivning i inläsningsfasen kan segmenteringslogik göra anrop till den stora språkmodellen för att hämta en textbeskrivning och segmentera beskrivningen.
När du har dokumentformat som HTML som har taggar med referenser till bilder kontrollerar du att läsaren eller parsern som segmenteringskoden använder inte tar bort taggarna. Segmenteringskoden måste kunna identifiera bildreferenser.
Rekommendationer
Tänk på följande rekommendationer när du avgör om du ska kombinera eller separera segmenteringslogik.
Börja med att kombinera inläsnings- och segmenteringslogik. Separera dem när lösningen kräver det.
Undvik att konvertera dokument till ett mellanliggande format om du väljer att separera processerna. Den här typen av åtgärd kan leda till dataförlust.
Segmenteringsmetoder
Det här avsnittet innehåller en översikt över vanliga segmenteringsmetoder. Du kan använda flera metoder i implementeringen, till exempel att kombinera användningen av en språkmodell för att få en textrepresentation av en bild med många av de angivna metoderna.
Varje metod åtföljs av en sammanfattad beslutsmatris som markerar verktygen, tillhörande kostnader med mera. Kostnaderna för teknisk ansträngning och bearbetning är subjektiva och ingår för relativ jämförelse.
Meningsbaserad parsning
Den här enkla metoden delar upp textdokument i segment som består av fullständiga meningar. Fördelarna med den här metoden är låg implementeringskostnad, låg bearbetningskostnad och dess tillämplighet för alla textbaserade dokument som skrivs i prosa eller fullständiga meningar. En nackdel med den här metoden är att varje segment kanske inte avbildar hela kontexten för en idé eller mening. Flera meningar måste ofta tas tillsammans för att fånga den semantiska innebörden.
Verktyg:spaCy meningstokeniserare, LangChain rekursiv textdelare, NLTK meningstokeniserare
Teknisk insats: Låg
Bearbetningskostnad: Låg
Användningsfall: Ostrukturerade dokument skrivna i prosa eller fullständiga meningar, och din samling dokument innehåller ett oöverkomligt antal olika dokumenttyper som kräver enskilda segmenteringsstrategier
Exempel: Användargenererat innehåll som öppen feedback från undersökningar, foruminlägg, recensioner, e-postmeddelanden, en roman eller en uppsats
Parsning med fast storlek och överlappning
Den här metoden delar upp ett dokument i segment baserat på ett fast antal tecken eller token och tillåter viss överlappning av tecken mellan segment. Den här metoden har många av samma fördelar och nackdelar som meningsbaserad parsning. En fördel med den här metoden jämfört med meningsbaserad parsning är möjligheten att hämta segment med semantiska betydelser som sträcker sig över flera meningar.
Du måste välja segmentens fasta storlek och mängden överlappning. Eftersom resultaten varierar för olika dokumenttyper är det bäst att använda ett verktyg som huggande ansiktssegmentvisualiserare för att utföra undersökande analys. Du kan använda verktyg som detta för att visualisera hur dina dokument segmenteras baserat på dina beslut. Du bör använda BERT-token i stället för teckenantal när du använder parsning med fast storlek. BERT-token baseras på meningsfulla språkenheter, så de bevarar mer semantisk information än teckenantal.
Verktyg:Rekursiv textdelning i LangChain, Hugging Face chunk visualizer
Teknisk insats: Låg
Bearbetningskostnad: Låg
Användningsfall: Ostrukturerade dokument skrivna i prosa eller icke-prosa med fullständiga eller ofullständiga meningar. Din samling dokument innehåller ett oöverkomligt antal olika dokumenttyper som kräver enskilda segmenteringsstrategier
Exempel: Användargenererat innehåll som öppen feedback från undersökningar, foruminlägg, recensioner, e-postmeddelanden, personliga anteckningar, forskningsanteckningar, listor
Anpassad kod
Den här metoden parsar dokument med hjälp av anpassad kod för att skapa segment. Den här metoden är mest framgångsrik för textbaserade dokument där strukturen är känd eller kan härledas och en hög grad av kontroll över att skapa segment krävs. Du kan använda textparsningstekniker som reguljära uttryck för att skapa segment baserat på mönster i dokumentets struktur. Målet är att skapa segment som har liknande storlek i längd och segment som har distinkt innehåll. Många programmeringsspråk har stöd för reguljära uttryck och vissa har bibliotek eller paket som ger mer eleganta funktioner för strängmanipulering.
Verktyg:Python (re, regex, BeautifulSoup, lxml, html5lib, marko), R (stringr, xml2), Julia (Gumbo.jl)
Teknisk insats: Medium
Bearbetningskostnad: Låg
Användningsfall: Halvstrukturerade dokument där struktur kan härledas
Exempel: Patentansökningar, forskningsdokument, försäkringar, skript och manus
Förhöjd språkmodell
Du kan använda språkmodeller för att skapa segment. Du kan till exempel använda en stor språkmodell, till exempel GPT-4, för att generera textrepresentationer av bilder eller sammanfattningar av tabeller som kan användas som segment. Förhöjd språkmodell används med andra segmenteringsmetoder, till exempel anpassad kod.
Om dokumentanalysen visar att texten före eller efter bilden hjälper till att besvara vissa kravfrågor skickar du den här extra kontexten till språkmodellen. Det är viktigt att experimentera för att avgöra om den här extra kontexten förbättrar lösningens prestanda.
Om segmenteringslogik delar upp bildbeskrivningen i flera segment kontrollerar du att du inkluderar bild-URL:en i varje segment. Inkludera bild-URL:en i varje segment för att säkerställa att metadata returneras för alla frågor som bilden hanterar. Det här steget är avgörande för scenarier där slutanvändaren behöver komma åt källbilden via url:en eller använda råa bilder under inferenstiden.
Verktyg:Azure OpenAI, OpenAI
Teknisk insats: Medium
Bearbetningskostnad: Hög
Användningsfall: Bilder, tabeller
Exempel: Generera textrepresentationer av tabeller och bilder, sammanfatta avskrifter från möten, tal, intervjuer eller podcaster
Dokumentlayoutanalys
Dokumentlayoutanalysbibliotek och -tjänster kombinerar funktioner för optisk teckenigenkänning med djupinlärningsmodeller för att extrahera både strukturen och texten i dokument. Strukturella element kan innehålla sidhuvuden, sidfötter, rubriker, avsnittsrubriker, tabeller och siffror. Målet är att ge bättre semantisk betydelse för innehåll som finns i dokument.
Dokumentlayoutanalysbibliotek och -tjänster exponerar en modell som representerar dokumentets strukturella innehåll och textinnehåll. Du måste fortfarande skriva kod som interagerar med modellen.
Anmärkning
Dokumentinformation är en molnbaserad tjänst som kräver att du laddar upp dokumentet. Du måste se till att dina säkerhets- och efterlevnadsregler gör att du kan ladda upp dokument till sådana tjänster.
Verktyg:Dokumentintelligens dokumentanalysmodeller, Donut, Layout Parser
Teknisk insats: Medium
Bearbetningskostnad: Medium
Användningsfall: Halvstrukturerade dokument
Exempel: Nyhetsartiklar, webbsidor, meritförteckningar
Fördefinierad modell
Tjänster som Dokumentinformation tillhandahåller fördefinierade modeller som du kan dra nytta av för olika dokumenttyper. Vissa modeller tränas för specifika dokumenttyper, till exempel skatteformuläret U.S. W-2, medan andra riktar in sig på en bredare genre av dokumenttyper som fakturor.
Verktyg:Fördefinierade modeller för Dokumentinformation, Intelligent dokumentbearbetning i Power Automate, LayoutLMv3
Teknisk insats: Låg
Bearbetningskostnad: Medel/hög
Användningsfall: Strukturerade dokument där en fördefinierad modell finns
Specifika exempel: Fakturor, kvitton, sjukförsäkringskort, W-2-formulär
Anpassad modell
För mycket strukturerade dokument där det inte finns någon fördefinierad modell kan du behöva skapa en anpassad modell. Den här metoden kan vara effektiv för bilder eller dokument som är mycket strukturerade, vilket gör det svårt att använda textparsningstekniker.
Verktyg:Anpassade modeller för Dokumentinformation, Tesseract
Teknisk insats: Hög
Bearbetningskostnad: Medel/hög
Användningsfall: Strukturerade dokument där en fördefinierad modell inte finns
Exempel: Scheman för fordonsreparation och underhåll, akademiska avskrifter, arkivhandlingar, tekniska manualer, driftprocedurer, underhållsriktlinjer
Dokumentstruktur
Dokumenten varierar i hur mycket struktur de har. Vissa dokument, till exempel myndighetsformulär, har en komplex och välkänd struktur, till exempel ett amerikanskt W-2-skatteformulär. I andra änden av spektrumet finns ostrukturerade dokument som friformsanteckningar. Graden av struktur för en dokumenttyp är en bra utgångspunkt för att fastställa en effektiv segmenteringsmetod. Även om det inte finns några specifika regler ger det här avsnittet några riktlinjer att följa.
Strukturerade dokument
Strukturerade dokument, som ibland kallas dokument med fast format, har definierade layouter. Data i dessa dokument finns på fasta platser. Till exempel hittas datumet eller kundens familjenamn på samma plats i varje dokument med samma fasta format. Ett exempel på ett dokument med fast format är skattedokumentet U.S. W-2.
Dokument med fast format kan vara skannade bilder av ursprungliga dokument som är handfyllda eller har komplexa layoutstrukturer. Det här formatet gör dem svåra att bearbeta med hjälp av en grundläggande textparsningsmetod. En typisk metod för att bearbeta komplexa dokumentstrukturer är att använda maskininlärningsmodeller för att extrahera data och använda semantisk betydelse för dessa data när det är möjligt.
Exempel: W-2 formulär, försäkringskort
Vanliga metoder: Fördefinierade modeller, anpassade modeller
Halvstrukturerade dokument
Halvstrukturerade dokument har inte något fast format eller schema, som W-2-formuläret, men de ger konsekvens när det gäller format eller schema. Till exempel läggs inte alla fakturor ut på samma sätt. De har dock vanligtvis ett konsekvent schema. Du kan förvänta dig att en faktura har ett fakturanummer och någon form av faktureringsadress och leveransadress namn och adress, bland annat data. En webbsida kanske inte har schemakonsekvenser, men de har liknande strukturella element eller layoutelement, till exempel brödtext, rubrik, H1 och p som kan lägga till semantisk betydelse i den omgivande texten.
Precis som strukturerade dokument är halvstrukturerade dokument som har komplexa layoutstrukturer svåra att bearbeta med hjälp av textparsning. För dessa dokumenttyper är maskininlärningsmodeller en bra metod. Det finns fördefinierade modeller för vissa domäner som har konsekventa scheman som fakturor, kontrakt eller sjukförsäkringsdokument. Överväg att skapa anpassade modeller för komplexa strukturer där det inte finns någon fördefinierad modell.
Exempel: Fakturor, kvitton, webbsidor, markdown-filer
Vanliga metoder: Modeller för dokumentanalys
Härledd struktur
Vissa dokument har en struktur men skrivs inte i markering. För dessa dokument måste strukturen härledas. Ett bra exempel är följande eu-förordningsdokument.
Eftersom du tydligt kan förstå dokumentets struktur och det inte finns några kända modeller för det kan du fastställa att du kan skriva anpassad kod. Ett dokumentformat som detta kanske inte motiverar arbetet med att skapa en anpassad modell, beroende på antalet olika dokument av den här typen som du arbetar med. Om din samling till exempel innehåller alla EU-förordningar eller amerikanska delstatslagar kan en anpassad modell vara en bra metod. Om du arbetar med ett enda dokument, som EU-förordningen i exemplet, kan anpassad kod vara mer kostnadseffektiv.
Exempel: Lagdokument, skript, tillverkningsspecifikationer
Vanliga metoder: Anpassad kod, anpassade modeller
Ostrukturerade dokument
En bra metod för dokument som har liten eller ingen struktur är meningsbaserad eller fast storlek med överlappande metoder.
Exempel: Användargenererat innehåll som öppen feedback från undersökningar, foruminlägg, recensioner, e-postmeddelanden, personliga anteckningar, forskningsanteckningar
Vanliga metoder: Meningsbaserad eller gränsbaserad med överlappning
Experimenterande
Den här artikeln beskriver de lämpligaste segmenteringsmetoderna för varje dokumenttyp, men i praktiken kan någon av metoderna vara lämplig för alla dokumenttyper. Till exempel kan meningsbaserad parsning vara lämplig för mycket strukturerade dokument, eller så kan en anpassad modell vara lämplig för ostrukturerade dokument. En del av optimeringen av DIN RAG-lösning är att experimentera med olika segmenteringsmetoder. Tänk på hur många resurser du har, den tekniska kompetensen för dina resurser och mängden dokument som du måste bearbeta. För att uppnå en optimal segmenteringsstrategi bör du observera fördelarna och kompromisserna med varje metod som du testar för att se till att du väljer rätt metod för ditt användningsfall.
Nästa steg
Delberikningsfasen
Relaterade resurser
- Att dela upp stora dokument för vektorsökningslösningar i Azure AI Search
- Integrerad datasegmentering och inbäddning i Azure AI-sökning