De eerste fase van rag-ontwikkeling (Retrieval-Augmented Generation) is de voorbereidingsfase. Tijdens deze fase definieert u het bedrijfsdomein voor uw oplossing. Nadat u het domein hebt gedefinieerd, verzamelt u documenten, voert u documentanalyse uit en verzamelt u voorbeeldvragen die relevant zijn voor het domein. U voert deze stappen parallel uit omdat ze zijn verbonden. Met documentanalyse kunt u bijvoorbeeld bepalen welke testdocumenten en testquery's u moet verzamelen. De vragen die u stelt, moeten worden beantwoord door inhoud in de documenten en de documenten moeten de relevante vragen beantwoorden.
Dit artikel maakt deel uit van een serie. Lees de inleiding.
Het oplossingsdomein bepalen
De eerste stap in dit proces is het duidelijk definiëren van de bedrijfsvereisten voor de oplossing of use-case. Met deze vereisten kunt u bepalen wat voor soort vragen de oplossing moet beantwoorden en welke brongegevens of documenten u helpen bij het beantwoorden van deze vragen. In latere fasen helpt het oplossingsdomein uw strategie voor het insluiten van modellen te informeren.
Documentanalyse
Het doel van documentanalyse is om voldoende informatie over uw documentverzameling te verzamelen om u te helpen begrijpen:
De verschillende classificaties van documenten. U hebt bijvoorbeeld productspecificaties, kwartaalrapporten, autoverzekeringscontracten of zorgverzekeringscontracten.
De verschillende typen documenten. U hebt bijvoorbeeld PDF-bestanden, Markdown-bestanden, HTML-bestanden of DOCX-bestanden.
De beveiligingsbeperkingen. U kunt bijvoorbeeld verificatie en autorisatie vereisen voor toegang tot de documenten, afhankelijk van of ze openbaar toegankelijk zijn.
De structuur van de documenten. De lengte van documenten kan bijvoorbeeld variëren. Of ze kunnen onderwerpeinden, contextafhankelijke afbeeldingen of tabelgegevens bevatten.
In de volgende secties wordt beschreven hoe u met deze informatie uw strategieën voor laden en segmenteren kunt kiezen.
Classificatie van documenten
U moet inzicht hebben in de verschillende classificaties van documenten om u te helpen bepalen hoeveel testdocumenten u nodig hebt. Dit deel van de analyse moet u vertellen over de classificaties op hoog niveau, zoals verzekeringen of financiën. Het moet u ook vertellen over subclassificaties, zoals ziekteverzekeringsdocumenten of autoverzekeringsdocumenten. U wilt ook weten of de subclassificaties verschillende structuren of inhoud hebben.
Het doel is om alle verschillende documentvarianten te begrijpen die u hebt. Vervolgens kunt u het aantal en de uitsplitsing van testdocumenten bepalen die u nodig hebt. U wilt een specifieke documentclassificatie in uw experimenten niet over of onder vertegenwoordigen.
Documenttypen
Als u de verschillende bestandsindelingen in uw verzameling begrijpt, kunt u het aantal en de uitsplitsing van testdocumenten bepalen. Als u bijvoorbeeld PDF- en Open XML-documenttypen hebt voor kwartaalrapporten, hebt u testdocumenten nodig voor elk van deze documenttypen. Als u uw documenttypen begrijpt, krijgt u ook inzicht in uw technische vereisten voor het laden en segmenteren van uw documenten. Deze technische vereisten omvatten specifieke bibliotheken die deze bestandsindelingen kunnen verwerken.
Beveiligingsbeperkingen
Inzicht in beveiligingsbeperkingen is essentieel voor het bepalen van uw strategieën voor laden en segmenteren. U moet bijvoorbeeld bepalen of voor sommige of alle documenten verificatie, autorisatie of netwerkzichtbaarheid is vereist. Als de documenten zich binnen een beveiligde perimeter bevinden, moet u ervoor zorgen dat uw code er toegang toe heeft of een proces implementeert om de documenten veilig te repliceren naar een toegankelijke locatie voor uw verwerkingscode.
Documenten verwijzen soms naar multimedia zoals afbeeldingen of audio die belangrijk zijn voor de context van het document. Deze media kunnen ook worden onderworpen aan vergelijkbare besturingselementen voor toegang als het document zelf. Als voor die media verificatie of netwerklijn van detectie is vereist, moet u ervoor zorgen dat uw code toegang heeft tot de media of dat u een proces hebt dat toegang heeft en de inhoud kan repliceren.
Als uw workload vereist dat verschillende gebruikers alleen toegang hebben tot afzonderlijke documenten of documentsegmenten, moet u weten hoe u deze toegangsmachtigingen in uw segmenteringsoplossing kunt behouden.
Documentstructuur
U moet de structuur van het document begrijpen, inclusief de indeling en de inhoudstypen in het document. Als u de structuur en inhoud van uw documenten begrijpt, kunt u de volgende vaststellingen maken:
Of het document vooraf moet worden verwerkt om ruis op te schonen, media te extraheren, inhoud opnieuw op te maken of items te voorzien van aantekeningen om te negeren
Of u inhoud in het document wilt negeren of uitsluiten
Welke onderdelen van het document u wilt vastleggen
Hoe u het document wilt segmenteren
Hoe u afbeeldingen, tabellen, grafieken en andere ingesloten media wilt verwerken
In de volgende secties vindt u gecategoriseerde vragen die u kunt gebruiken om een aantal van deze vaststellingen te maken.
Bepalen welke items u kunt negeren
Sommige structurele elementen voegen mogelijk geen betekenis toe aan het document en kunnen veilig worden genegeerd bij het segmenteren. In sommige situaties kunnen deze elementen waardevolle context toevoegen en de relevantie van query's aan uw index verbeteren, maar niet allemaal. Stel de volgende vragen over algemene documentfuncties om te zien of ze relevantie toevoegen of moeten worden genegeerd.
Bevat het document een inhoudsopgave?
Zijn er kop- of voetteksten?
Zijn er copyrights of disclaimers?
Zijn er voetnoten of eindnoten?
Zijn er watermerken?
Zijn er aantekeningen of opmerkingen?
Een strategie voor voorverwerking en segmentering bepalen
Met de volgende vragen over de structuur van het document kunt u bepalen of u het document vooraf moet verwerken om het gemakkelijker te verwerken. Ze helpen u ook bij het kiezen van een segmenteringsstrategie.
Zijn er multicolumngegevens of alinea's met meerdere kolommen? U wilt inhoud met meerdere kolommen niet op dezelfde manier parseren als inhoud met één kolom.
Hoe is het document gestructureerd? HTML-bestanden maken bijvoorbeeld soms gebruik van tabellen die moeten worden onderscheiden van ingesloten tabelgegevens.
Hoeveel alinea's zijn er? Hoe lang zijn de alinea's? Zijn de alinea's even lang?
Welke talen, taalvarianten of dialecten staan in de documenten?
Bevat het document Unicode-tekens?
Hoe worden getallen opgemaakt? Bevatten ze komma's of decimalen? Zijn ze consistent?
Welke delen van het document zijn uniform en welke onderdelen zijn niet uniform?
Is er een koptekststructuur waar semantische betekenis kan worden geëxtraheerd?
Zijn er opsommingstekens of zinvolle inspringingen?
Uw vereisten voor afbeeldingsverwerking bepalen
Als u de afbeeldingen in uw document begrijpt, kunt u een strategie voor afbeeldingsverwerking kiezen. U moet weten wat voor soort afbeeldingen u hebt, of ze voldoende resolutie hebben om te verwerken en of de afbeelding alle vereiste informatie bevat. De volgende vragen helpen u inzicht te hebben in de vereisten voor de verwerking van afbeeldingen.
Bevat het document afbeeldingen?
Welke resolutie zijn de afbeeldingen?
Is er tekst in de afbeeldingen ingesloten?
Zijn er abstracte afbeeldingen die geen waarde toevoegen? Pictogrammen kunnen bijvoorbeeld geen semantische waarde toevoegen. Het toevoegen van een beschrijving voor pictogrammen kan schadelijk zijn voor uw oplossing, omdat het pictogram meestal niet relevant is voor de inhoud van het document.
Wat is de relatie tussen de afbeeldingen en de omringende tekst? Bepaal of de afbeeldingen zelfstandige inhoud hebben of of er context is rond de afbeelding die u moet gebruiken wanneer u deze doorgeeft aan een taalmodel. Bijschriften zijn een voorbeeld van omringende tekst met waardevolle context die niet is opgenomen in de afbeelding.
Is er tekst met opmaak, zoals toegankelijkheidsbeschrijvingen van de afbeeldingen?
De vereisten voor tabel, grafiek en andere mediaverwerking bepalen
Als u begrijpt welke informatie wordt ingekapseld in tabellen, grafieken en andere media, kunt u bepalen hoe u deze wilt verwerken. De volgende vragen helpen u inzicht te hebben in de vereisten voor tabel, grafiek en andere mediaverwerking.
Bevat het document grafieken met getallen?
Bevat het document tabellen?
Zijn de tabellen complex, zoals geneste tabellen of niet-complex?
Zijn er bijschriften voor de tabellen?
Hoe lang zijn de tabellen? Voor lange tabellen zijn mogelijk herhalende kopteksten in segmenten vereist.
Zijn er andere typen ingesloten media, zoals video's of audio?
Zijn er wiskundige vergelijkingen of wetenschappelijke notaties in het document?
Representatieve testdocumenten verzamelen
In deze stap verzamelt u documenten die het beste de documenten vertegenwoordigen die u in uw oplossing gebruikt. De documenten moeten betrekking hebben op de gedefinieerde use-case en de vragen beantwoorden die u hebt verzameld in de parallelle fase voor het verzamelen van vragen.
Overwegingen
Houd rekening met de volgende gebieden wanneer u potentiële representatieve testdocumenten evalueert:
Status: De documenten moeten voldoen aan de zakelijke vereisten van de gesprekstoepassing. Als u bijvoorbeeld een chatbot bouwt waarmee klanten bankbewerkingen kunnen uitvoeren, moeten de documenten voldoen aan die vereiste. De documenten moeten bijvoorbeeld laten zien hoe u een bankrekening opent of sluit. De documenten moeten de testvragen kunnen aanpakken die u in de parallelle stap verzamelt. Als de documenten geen informatie hebben die relevant is voor de vragen, kan uw oplossing geen geldig antwoord opleveren.
Weergave: De documenten moeten de verschillende typen documenten vertegenwoordigen die door uw oplossing worden gebruikt. Een autoverzekeringsdocument bevat bijvoorbeeld andere informatie dan een gezondheids- of verzekeringsdocument. Stel dat voor de use-case de oplossing is vereist om alle drie deze verzekeringstypen te ondersteunen, maar dat u alleen autoverzekeringsdocumenten hebt. Uw oplossing kan slecht presteren voor gezondheids- en verzekeringsactiviteiten. U moet ten minste twee documenten voor elke variatie hebben.
fysieke documentkwaliteit: De documenten moeten in bruikbare vorm zijn. Met gescande afbeeldingen kunt u bijvoorbeeld geen bruikbare informatie extraheren.
inhoudskwaliteit van documenten: De documenten moeten inhoud van hoge kwaliteit hebben. Ze mogen geen spelfouten of grammaticafouten bevatten. Taalmodellen presteren niet goed als u ze inhoud van slechte kwaliteit levert.
Als u testdocumenten wilt verzamelen, moet u kwalitatief vertrouwen dat de testdocumenten uw specifieke domein volledig en nauwkeurig vertegenwoordigen.
Richtlijnen voor het testen van documenten
Kies echte documenten boven synthetische documenten. Echte documenten moeten een schoonmaakproces doorlopen om persoonsgegevens te verwijderen.
Overweeg uw documenten selectief te uitbreiden met synthetische gegevens. Dit proces helpt u ervoor te zorgen dat uw documenten betrekking hebben op allerlei soorten scenario's, waaronder voorspelde toekomstige scenario's. Als u synthetische gegevens moet gebruiken, kunt u het beste zo veel mogelijk op echte gegevens lijken.
Zorg ervoor dat de documenten de vragen kunnen beantwoorden die u verzamelt.
U hebt ten minste twee documenten voor elke documentvariant.
Gebruik taalmodellen of andere hulpprogramma's om u te helpen de kwaliteit van de documenten te evalueren.
Testquery's verzamelen
In deze stap verzamelt u testquery's die u gebruikt om uw segmenten, uw zoekoplossing en de prompt-engineering te evalueren. Doe deze stap terwijl u de representatieve documenten verzamelt. U moet de query's verzamelen en bepalen hoe de representatieve documenten deze query's tegelijkertijd aanpakken. Door zowel de voorbeeldquery's als de onderdelen van de voorbeelddocumenten die deze query's aanpakken, kunt u elke fase van de RAG-oplossing evalueren terwijl u experimenteert met verschillende strategieën en benaderingen.
Testquery-uitvoer verzamelen
De uitvoer van deze fase bevat inhoud van de representatieve testquery's verzamelen stap en de representatieve testdocumenten verzamelen stap. De uitvoer is een verzameling die de volgende gegevens bevat:
Query: De vraag, die de potentiële prompt van een legitieme gebruiker vertegenwoordigt.
Context: een verzameling van alle werkelijke tekst in de documenten die de query aanpakken. Voor elke bit van context moet u de pagina en de werkelijke tekst opnemen.
Antwoord: Een geldig antwoord op de query. Het antwoord kan inhoud zijn die rechtstreeks uit de documenten afkomstig is of die kan worden herformuleerd vanuit een of meer contextonderdelen.
Synthetische query's maken
Het is vaak lastig voor de deskundigen van het onderwerp (KMO's) voor een bepaald domein om een uitgebreide lijst met vragen voor de use-case samen te stellen. Een oplossing voor deze uitdaging is het genereren van synthetische vragen uit de representatieve testdocumenten die u verzamelt. In de volgende stappen wordt een praktijkbenadering beschreven voor het genereren van synthetische vragen uit representatieve documenten:
Segmenter de documenten. De documenten opsplitsen in segmenten. Gebruik de segmenteringsstrategie niet voor uw algehele oplossing. Gebruik deze eenmalige stap die u gebruikt om synthetische query's te genereren. U kunt het segmenteren handmatig uitvoeren als het aantal documenten redelijk is.
Genereer query's voor elk segment. Genereer voor elk segment handmatig query's of met behulp van een taalmodel. Wanneer u een taalmodel gebruikt, begint u meestal met het genereren van twee query's voor elk segment. U kunt ook het taalmodel gebruiken om het antwoord te maken. In het volgende voorbeeld ziet u een prompt waarmee vragen en antwoorden voor een segment worden gegenereerd.
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, and directly quote the text from the provided context. Provide the array output in strict JSON format as shown in the output format. Ensure that the generated JSON is completely structurally correct, including proper nesting, comma placement, and quotation marks. There shouldn't be a comma after the last element in the array. Output format: [ { "question": "Question 1", "answer": "Answer 1" }, { "question": "Question 2", "answer": "Answer 2" } ] CONTEXT:
Controleer de uitvoer. Controleer of de vragen relevant zijn voor de use-case en of de antwoorden de vraag aanpakken. Een SME moet deze verificatie uitvoeren.
Niet-adresquery's
Het is belangrijk om query's te verzamelen die de documenten niet adresseren en de query's die ze uitvoeren. Wanneer u uw oplossing test en vooral wanneer u het taalmodel test, moet u bepalen hoe de oplossing moet reageren op query's die niet voldoende context hebben om te beantwoorden. De oplossing kan het volgende doen om te reageren op query's die niet door de oplossing kunnen worden opgelost:
Staat dat het antwoord niet weet.
Geef aan dat het antwoord niet weet en geef een koppeling op waar de gebruiker meer informatie kan vinden.
Testquery's verzamelen voor ingesloten media
Net als bij tekst moet u een diverse set vragen verzamelen die betrekking hebben op het gebruik van de ingesloten media om zeer relevante antwoorden te genereren. Als u afbeeldingen hebt met grafieken, tabellen of schermafbeeldingen, moet u ervoor zorgen dat u vragen hebt die betrekking hebben op alle gebruiksvoorbeelden. Als u in het gedeelte afbeeldingen van de documentanalysestap dat de tekst voor of na de afbeelding is vereist om enkele vragen te beantwoorden, moet u ervoor zorgen dat u deze vragen in uw testquery's hebt.
Richtlijnen voor testquery's verzamelen
Bepaal of er een systeem is dat echte klantvragen bevat die u kunt gebruiken. Als u bijvoorbeeld een chatbot bouwt om klantvragen te beantwoorden, kunt u mogelijk klantvragen gebruiken vanuit uw helpdesk, veelgestelde vragen of ticketsysteem.
De klant of het MKB voor de use-case moet fungeren als een kwaliteitspoort om te bepalen of de verzamelde documenten, de bijbehorende testquery's en de antwoorden op de query's uit de documenten uitgebreid, representatief en correct zijn.
Bekijk regelmatig de hoofdtekst van vragen en antwoorden om ervoor te zorgen dat ze de brondocumenten nauwkeurig blijven weergeven.