Den första fasen av utveckling och experimentering av hämtningsförhöjd generation (RAG) är förberedelsefasen. Under den här fasen definierar du först affärsdomänen för din lösning. När du har definierat domänen påbörjar du den parallella processen med att utföra dokumentanalys, samla in dokument och samla in exempelfrågor som är relevanta för domänen. Stegen utförs parallellt eftersom de är kopplade till varandra. Dokumentanalysen hjälper dig att avgöra vilka testdokument och testfrågor du ska samla in. De är ytterligare sammankopplade eftersom frågorna måste besvaras med innehåll i dokumenten och dokumenten måste besvara relevanta frågor.
Fastställa lösningsdomän
Det första steget i den här processen är att tydligt definiera affärskraven för lösningen eller användningsfallet. Dessa krav hjälper dig att avgöra vilken typ av frågor lösningen avser att ta itu med och vilka källdata eller dokument som hjälper dig att lösa dessa frågor. I senare skeden hjälper lösningsdomänen till att informera din inbäddningsmodellstrategi.
Dokumentanalys
Målet med dokumentanalys är att samla in tillräckligt med information om dokument corpus för att hjälpa dig att förstå:
- De olika klassificeringarna av dokument – Till exempel har du produktspecifikationer, kvartalsrapporter, bilförsäkringsavtal, sjukförsäkringsavtal och så vidare.
- De olika dokumenttyperna – Till exempel har du PDF-filer, Markdown-filer, HTML-filer, DOCX-filer och så vidare.
- Säkerhetsbegränsningarna – till exempel om dokumenten är offentligt tillgängliga eller inte, eller om de kräver autentisering och auktorisering för att få åtkomst till dem
- Strukturen för dokumenten – till exempel längden på dokument, avsnittsbrytningar och om de har sammanhangsmässigt relevanta bilder eller tabelldata
I följande avsnitt beskrivs hur den här informationen hjälper dig att informera dina strategier för inläsning och segmentering.
Klassificering av dokument
Du måste förstå de olika klassificeringarna av dokument som hjälper dig att fastställa antalet testdokument som du behöver. Den här delen av analysen bör inte bara tala om för dig de övergripande klassificeringarna som försäkring eller ekonomi, utan även underklassificeringar, till exempel sjukförsäkring kontra bilförsäkringsdokument. Du vill också förstå om underklassificeringarna har olika strukturer eller innehåll.
Målet är att förstå alla olika dokumentvarianter som du har. Den här förståelsen hjälper dig att fastställa antalet och uppdelningen av testdokument som du behöver. Du vill inte över- eller underrepresentera en specifik dokumentklassificering i experimenteringen.
Dokumenttyper
Genom att förstå de olika filformaten i din corpus kan du fastställa antalet och uppdelningen av testdokument. Om du till exempel har PDF- och Office Open XML-dokumenttyper för kvartalsrapporter behöver du testdokument för varje dokumenttyp. Att förstå dina dokumenttyper hjälper dig också att förstå dina tekniska krav för inläsning och segmentering av dokument, till exempel specifika bibliotek som lämpar sig för bearbetning av dessa filformat.
Säkerhetsbegränsningar
Att förstå säkerhetsbegränsningar är avgörande för att fastställa dina inläsnings- och segmenteringsstrategier. Du måste till exempel identifiera om vissa eller alla dokument kräver autentisering, auktorisering eller nätverkssynlighet. Om dokumenten finns inom en säker perimeter kontrollerar du att koden kan komma åt dem eller implementerar en process för att på ett säkert sätt replikera dokumenten till en tillgänglig plats för din bearbetningskod.
Tänk på att dokument ibland refererar till multimedia, till exempel bilder eller ljud som är viktiga för dokumentets kontext. Det mediet kan också omfattas av liknande åtkomstkontroller som själva dokumentet. Om mediet kräver autentisering eller nätverkslinje måste du antingen kontrollera att koden kan komma åt mediet eller att du har en tidigare process som har åtkomst som kan replikera innehållet.
Om din arbetsbelastning kräver att olika användare bara har åtkomst till distinkta dokument- eller dokumentsegment ska du se till att du förstår hur du kommer att behålla dessa åtkomstbehörigheter i segmenteringslösningen.
Dokumentstruktur
Du måste förstå dokumentets struktur, inklusive hur det beskrivs och vilka typer av innehåll som finns i dokumentet. Genom att förstå strukturen och innehållet i dina dokument kan du göra följande:
- Om dokumentet kräver förbearbetning för att rensa brus, extrahera media, formatera om eller kommentera objekt att ignorera
- Vad i dokumentet du vill ignorera eller exkludera
- Vad i dokumentet du vill samla in
- Så här vill du dela upp dokumentet
- Hur du vill hantera bilder, tabeller, diagram och andra inbäddade medier
Följande är några kategoriserade frågor som du kan använda för att göra några av dessa beslut.
Frågor om vanliga objekt som du kan ignorera
Vissa strukturella element kanske inte lägger till mening i dokumentet och kan ignoreras vid segmentering. I vissa situationer kan dessa element lägga till värdefull kontext och hjälp i relevansfrågor till ditt index, men inte alla. Följande är några frågor om vanliga dokumentfunktioner som du behöver utvärdera för att se om de lägger till relevans eller bör ignoreras.
- Innehåller dokumentet en innehållsförteckning?
- Finns det sidhuvuden och sidfötter?
- Finns det upphovsrätt eller ansvarsfriskrivningar?
- Finns det fotnoter eller slutkommentarer?
- Finns det vattenstämplar?
- Finns det anteckningar eller kommentarer?
Frågor som hjälper till med förbearbetning och segmenteringsstrategi
Följande frågor om dokumentets struktur ger dig insikter som hjälper dig att förstå om du behöver förbearbeta dokumentet för att göra det enklare att bearbeta och hjälpa till att informera din segmenteringsstrategi.
- Finns det flerkolumnsdata eller stycken med flera kolumner? Du vill inte parsa innehåll med flera kolumner som om det vore en enda kolumn.
- Hur är dokumentet strukturerat? HTML-filer använder till exempel ibland tabeller för sin layout som måste skiljas från inbäddade tabelldata.
- Hur många stycken finns det? Hur länge är styckena? Är styckena ungefär lika långa?
- Vilka språk, språkvarianter eller dialekter finns i dokumenten?
- Innehåller dokumentet Unicode-tecken?
- Hur formateras tal? Använder de kommatecken eller decimaler? Är de konsekventa?
- Vad i dokumentet är enhetligt och vad är inte enhetligt?
- Finns det en rubrikstruktur där semantisk betydelse kan extraheras?
- Finns det punkter eller meningsfulla indrag?
Frågor om bilder
Att förstå bilderna i dokumentet hjälper dig att fastställa din strategi för bildbearbetning. Du måste förstå information som vilken typ av bilder du har, om de har tillräcklig upplösning för att bearbeta och om bilden innehåller all nödvändig information. Följande frågor hjälper dig att förstå dina krav på bildbearbetning.
- Innehåller dokumentet bilder?
- Vilken upplösning är bilderna?
- Finns det text inbäddad i bilderna?
- Finns det abstrakta bilder som inte lägger till värde? Ikoner kanske till exempel inte lägger till något semantiskt värde. Att lägga till en beskrivning för bilder kan faktiskt vara skadligt, eftersom det visuella ikonobjektet i allmänhet har lite att göra med dokumentinnehållet.
- Vad är relationen mellan bilden och den omgivande texten? Avgör om bilderna har fristående innehåll eller om det finns kontext runt bilden som du bör använda när du skickar den till en stor språkmodell för att hämta textrepresentationen. Bildtexter är ett exempel på omgivande text som kan ha värdefull kontext som inte ingår i bilden.
- Finns det rtF-representation av bilderna, till exempel hjälpmedelsbeskrivningar?
Frågor om tabeller, diagram och annat innehållsrikt innehåll
Att förstå vilken information som är inkapslad i tabeller, diagram och andra medier hjälper dig att förstå vad och hur du vill bearbeta den. Följande frågor hjälper dig att förstå dina tabeller, diagram och andra krav på mediebearbetning.
- Har dokumentet diagram med siffror?
- Innehåller dokumentet tabeller?
- Är tabellerna komplexa (kapslade tabeller) eller icke-komplexa?
- Finns det undertexter för tabellerna?
- Vilka är tabellernas längd? Långa tabeller kan kräva upprepade rubriker i segment.
- Finns det andra typer av inbäddade medier som videor eller ljud?
- Finns det några matematiska ekvationer/vetenskapliga notationer i dokumentet?
Samla in representativa testdokument
I det här steget samlar du in dokument som är den bästa representationen av de dokument som du använder i produktionslösningen. Dokumenten måste hantera det definierade användningsfallet och kunna besvara de frågor som samlats in i frågan om att samla in parallella faser.
Att tänka på
Tänk på dessa områden när du utvärderar potentiella representativa testdokument:
- Relevant – Dokumenten måste uppfylla affärskraven för konversationsprogrammet. Om du till exempel skapar en chattrobot med uppgift att hjälpa kunder att utföra bankåtgärder bör dokumenten matcha det kravet, till exempel dokument som visar hur du öppnar eller stänger ett bankkonto. Dokumenten måste kunna hantera de testfrågor som samlas in i det parallella steget. Om dokumenten inte har den information som är relevant för frågorna kan den inte ge ett giltigt svar.
- Representant – Dokumenten ska vara representativa för de olika typer av dokument som din lösning använder. Till exempel skiljer sig ett bilförsäkringsdokument från ett sjukförsäkrings- eller livförsäkringsdokument. Anta att användningsfallet kräver lösningen för att stödja alla tre typerna, och du hade bara två bilförsäkringsdokument. Din lösning skulle fungera dåligt för både hälso- och livförsäkring. Du bör ha minst 2 för varje variant.
- Fysisk dokumentkvalitet – Dokumenten måste vara i användbar form. Skannade bilder kanske till exempel inte tillåter att du extraherar användbar information.
- Dokumentinnehållskvalitet – Dokumenten måste ha hög innehållskvalitet. Det får inte finnas felstavningar eller grammatiska fel. Stora språkmodeller fungerar inte bra om du ger dem innehåll av dålig kvalitet.
Framgångsfaktorn i det här steget är att vara kvalitativt säker på att du har en bra representation av testdokument för din specifika domän.
Vägledning för testdokument
- Föredrar riktiga dokument framför syntetiska. Verkliga dokument måste genomgå en rensningsprocess för att ta bort personligt identifierbar information (PII).
- För att säkerställa att du hanterar alla typer av scenarier, inklusive förutsagda framtida scenarier, bör du överväga att selektivt utöka dina dokument med syntetiska data.
- Om du måste använda syntetiska data gör du ditt bästa för att göra det så nära verkliga data som möjligt.
- Kontrollera att dokumenten kan hantera de frågor som samlas in.
- Du bör ha minst två dokument för varje dokumentvariant.
- Du kan använda stora språkmodeller eller andra verktyg för att utvärdera dokumentkvaliteten.
Samla in testfrågor
I det här steget samlar du in testfrågor som du använder för att utvärdera segment, söklösning och din teknik för frågor. Du gör detta i låssteg med att samla in representativa dokument, eftersom du inte bara samlar in frågorna, du samlar också in hur de representativa dokumenten hanterar frågorna. Med båda exempelfrågorna, i kombination med de delar av exempeldokumenten som hanterar dessa frågor, kan du utvärdera varje steg i RAG-lösningen när du experimenterar med olika strategier och metoder.
Samla in testfrågeutdata
Utdata från den här fasen innehåller innehåll från både steget Samla in representativa testfrågor och steget Samla in representativa testdokument . Utdata är en samling som innehåller följande data:
- Fråga – Frågan som representerar en legitim användares potentiella fråga.
- Kontext – En samling med all faktisk text i dokumenten som adresserar frågan. För varje kontext bör du inkludera sidan och den faktiska texten.
- Svar – ett giltigt svar på frågan. Svaret är innehåll direkt från dokumenten eller så kan det omformuleras från en eller flera kontexter.
Skapa syntetiska frågor
Det är ofta svårt för ämnesexperterna (små och medelstora företag) för en viss domän att sammanställa en omfattande lista med frågor för användningsfallet. En lösning på den här utmaningen är att generera syntetiska frågor från de representativa testdokument som samlats in. Följande är en verklig metod för att generera syntetiska frågor från representativa dokument:
Segmentera dokumenten – Dela upp dokumenten i segment. Det här segmenteringssteget använder inte segmenteringsstrategin för din övergripande lösning. Det är ett engångssteg som du använder för att generera syntetiska frågor. Segmenteringen kan göras manuellt om antalet dokument är rimligt.
Generera frågor per segment – För varje segment genererar du frågor manuellt eller med hjälp av en stor språkmodell. När du använder en stor språkmodell börjar vi vanligtvis med att generera två frågor per segment. Den stora språkmodellen kan också användas för att skapa svaret. I följande exempel visas en uppmaning som genererar frågor och svar för ett segment.
Please read the following CONTEXT and generate two question and answer json objects in an array based on the CONTEXT provided. The questions should require deep reading comprehension, logical inference, deduction, and connecting ideas across the text. Avoid simplistic retrieval or pattern matching questions. Instead, focus on questions that test the ability to reason about the text in complex ways, draw subtle conclusions, and combine multiple pieces of information to arrive at an answer. Ensure that the questions are relevant, specific, and cover the key points of the CONTEXT. Provide concise answers to each question, directly quoting the text from provided context. Provide the array output in strict JSON format as shown in output format. Ensure that the generated JSON is 100 percent structurally correct, with proper nesting, comma placement, and quotation marks. There should not be any comma after last element in the array. Output format: [ { "question": "Question 1", "answer": "Answer 1" }, { "question": "Question 2", "answer": "Answer 2" } ] CONTEXT:
Verifiera utdata – Kontrollera att frågorna är relevanta för användningsfallet och att svaren löser frågan. Den här verifieringen bör utföras av ett litet eller medelstora företag.
Oadresserade frågor
Det är viktigt att samla in frågor som dokumenten inte adresserar, tillsammans med frågor som adresseras. När du testar din lösning, särskilt när du testar den stora språkmodellen, måste du bestämma hur lösningen ska svara på frågor som den inte har tillräcklig kontext för att besvara. Metoder för att svara på frågor som du inte kan hantera är:
- Svarar som du inte vet
- Svara som du inte vet och ange en länk där användaren kan hitta mer information
Samla in testfrågor för inbäddade medier
Precis som med text bör du samla in en mängd olika frågor som innebär att använda det inbäddade mediet för att generera mycket relevanta svar. Om du har bilder med grafer, tabeller, skärmbilder kontrollerar du att du har frågor som täcker alla användningsfall. Om du i bilddelen av dokumentanalysavsnittet har fastställt att texten före eller efter bilden krävs för att besvara några frågor kontrollerar du att du har dessa frågor i testfrågorna.
Samla in vägledning för testfrågor
- Ta reda på om det finns ett system som innehåller verkliga kundfrågor som du kan använda. Om du till exempel skapar en chattrobot för att besvara kundfrågor kanske du kan använda kundfrågor från supportavdelningen, vanliga frågor och svar eller biljettsystem.
- Kunden eller SME för användningsfallet bör fungera som en kvalitetsgrind för att avgöra om de insamlade dokumenten, de associerade testfrågorna och svaren på frågorna från dokumenten är omfattande, representativa och korrekta.
- Att granska brödtexten med frågor och svar bör göras regelbundet för att säkerställa att de fortsätter att återspegla källdokumenten korrekt.