Bewerken

Delen via


Voorbereiding

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

De eerste fase van rag-ontwikkeling (Retrieval-Augmented Generation) is de voorbereidingsfase. Tijdens deze fase definieert u eerst het bedrijfsdomein voor uw oplossing. Zodra u het domein hebt gedefinieerd, begint u met het parallelle proces voor het verzamelen van documenten en voorbeeldvragen die relevant zijn voor het domein. De stappen worden parallel uitgevoerd omdat ze zijn gekoppeld. De vragen moeten worden beantwoord door inhoud in de documenten en de documenten moeten relevante vragen beantwoorden. Voer tijdens het verzamelen van de testdocumenten en query's een analyse van uw documenten uit om een beter inzicht te krijgen in de structuur en inhoud.

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

Oplossingsdomein bepalen

De eerste stap in dit proces is het duidelijk definiëren van de bedrijfsvereisten voor de oplossing of de use-case. Deze vereisten helpen bepalen welk soort vragen de oplossing wil aanpakken en welke brongegevens of documenten helpen deze vragen aan te pakken. In latere fasen helpt het oplossingsdomein uw strategie voor het insluiten van modellen te informeren.

Representatieve testdocumenten verzamelen

In deze stap verzamelt u documenten die de beste weergave zijn van de documenten die u in uw productieoplossing gebruikt. De documenten moeten betrekking hebben op de gedefinieerde use-case en de vragen kunnen beantwoorden die zijn verzameld in de parallelle fase van de vraag.

Overwegingen

Houd rekening met deze gebieden bij het evalueren van mogelijke representatieve testdocumenten:

  • Pertinence : de documenten moeten voldoen aan de zakelijke vereisten van de gesprekstoepassing. Als u bijvoorbeeld een chatbot bouwt die klanten helpt bij het uitvoeren van bankbewerkingen, moeten de documenten overeenkomen met die vereiste, zoals documenten die laten zien hoe een bankrekening moet worden geopend of gesloten. De documenten moeten de testvragen kunnen aanpakken die in de parallelle stap worden verzameld. Als de documenten niet over de informatie beschikken die relevant is voor de vragen, kan er geen geldig antwoord worden gegenereerd.
  • Vertegenwoordiger : de documenten moeten representatief zijn voor de verschillende typen documenten die door uw oplossing worden gebruikt. Een autoverzekeringsdocument verschilt bijvoorbeeld van een ziekteverzekering of een verzekeringsdocument. Stel dat voor de use case de oplossing nodig is om alle drie de typen te ondersteunen en dat u slechts twee autoverzekeringsdocumenten hebt, uw oplossing slecht zou presteren voor zowel de gezondheid als de verzekering. U moet ten minste 2 hebben voor elke variatie.
  • Fysieke documentkwaliteit : de documenten moeten een bruikbare vorm hebben. Met gescande afbeeldingen kunt u bijvoorbeeld geen bruikbare informatie extraheren.
  • Kwaliteit van documentinhoud : de documenten moeten een hoge inhoudskwaliteit hebben. Er mogen geen spelfouten of grammaticafouten zijn. Grote taalmodellen presteren niet goed als u ze inhoud van slechte kwaliteit levert.

De succesfactor in deze stap is kwalitatief zeker dat u een goede weergave van testdocumenten voor uw specifieke domein hebt.

Richtlijnen voor het testen van documenten

  • Geef de voorkeur aan echte documenten boven synthetische. Echte documenten moeten een schoonmaakproces doorlopen om persoonsgegevens te verwijderen.
  • U kunt uw documenten uitbreiden met synthetische gegevens om ervoor te zorgen dat u allerlei scenario's verwerkt.
  • Als u synthetische gegevens moet gebruiken, kunt u het beste zo dicht mogelijk bij echte gegevens komen.
  • Zorg ervoor dat de documenten de vragen kunnen beantwoorden die worden verzameld.
  • U moet ten minste twee documenten hebben voor elke documentvariant.
  • U kunt grote taalmodellen of andere hulpprogramma's gebruiken om de kwaliteit van het document te evalueren.

Testquery's verzamelen

In deze stap verzamelt u testquery's die u gaat gebruiken om uw segmenten, zoekoplossing en prompt-engineering te evalueren. U doet dit in lockstep met het verzamelen van de representatieve documenten, omdat u niet alleen de query's verzamelt, maar ook hoe de representatieve documenten de query's aanpakken. Als u beide voorbeeldquery's hebt, gecombineerd met 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 uit zowel de stap representatieve testquery's verzamelen als de stap Representatieve testdocumenten verzamelen. De uitvoer is een verzameling met de volgende gegevens:

  • 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 is rechtstreeks vanuit de documenten of het antwoord kan worden herformuleerd vanuit een of meer stukjes context.

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 zijn verzameld. Hier volgt een praktijkbenadering voor het genereren van synthetische vragen uit representatieve documenten:

  1. Segmenteren van de documenten - de documenten opsplitsen in segmenten. Deze segmenteringsstap maakt geen gebruik van de segmenteringsstrategie voor uw algehele oplossing. Het is een eenmalige stap die wordt gebruikt voor het genereren van synthetische query's. Het segmenteren kan handmatig worden uitgevoerd als het aantal documenten redelijk is.

  2. Query's per segment genereren: genereer voor elk segment handmatig query's of met behulp van een groot taalmodel. Wanneer u een groot taalmodel gebruikt, beginnen we meestal met het genereren van twee query's per segment. Het grote taalmodel kan ook worden gebruikt 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, 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:
    
  3. Uitvoer controleren: controleer of de vragen relevant zijn voor de use-case en of de antwoorden de vraag aanpakken. Deze verificatie moet worden uitgevoerd door een mkb-bedrijf.

Niet-adresquery's

Het is belangrijk om query's te verzamelen die niet worden verwerkt in de documenten, samen met query's die zijn geadresseerd. Wanneer u uw oplossing test, met name wanneer u het grote taalmodel test, moet u bepalen hoe de oplossing moet reageren op query's die niet voldoende context hebben om te beantwoorden. Benaderingen voor het reageren op query's die u niet kunt aanpakken, zijn:

  • Reageren dat u niet weet
  • Reagerend dat u niet weet en een koppeling opgeeft waar de gebruiker meer informatie kan vinden

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 vragen van klanten 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 zijn en juist zijn.
  • Het controleren van de hoofdtekst van vragen en antwoorden moet periodiek worden uitgevoerd om ervoor te zorgen dat ze de brondocumenten nauwkeurig blijven weerspiegelen.

Documentanalyse

Het doel van documentanalyse is om de volgende drie dingen te bepalen:

  • Wat in het document dat u wilt negeren of uitsluiten
  • Wat in het document dat u wilt vastleggen in segmenten
  • Hoe u het document wilt segmenteren

Hier volgen enkele veelgestelde vragen die u kunt stellen bij het analyseren van een documenttype waarmee u deze drie besluiten kunt nemen:

  • Bevat het document een inhoudstabel?
  • Bevat het document afbeeldingen?
    • Zijn ze afbeeldingen met hoge resolutie?
    • Wat voor soort gegevens hebt u op afbeeldingen?
    • Zijn er onderschrift s voor de afbeeldingen?
    • Is er tekst in de afbeeldingen ingesloten?
  • Bevat het document grafieken met getallen?
  • Bevat het document tabellen?
    • Zijn de tabellen complex (geneste tabellen) of niet-complex?
    • Zijn er onderschrift s voor de tabellen?
  • Zijn er alinea's met meerdere kolommen of alinea's met meerdere kolommen? U wilt geen inhoud met meerdere kolommen parseren alsof het één kolom was.
  • Hoeveel alinea's zijn er? Hoe lang zijn de alinea's? Zijn de alinea's ongeveer even lang?
  • Welke talen, taalvarianten of dialecten staan in de documenten?
  • Bevat het document Unicode-tekens?
  • Hoe worden getallen opgemaakt? Gebruiken ze komma's of decimalen?
  • Zijn er kop- en voetteksten? Heb je ze nodig?
  • Zijn er copyrights of disclaimers? Heb je ze nodig?
  • Wat in het document is uniform en wat is er niet uniform?
  • Is er een koptekststructuur waar semantische betekenis kan worden geëxtraheerd?
  • Zijn er voetnoten of eindnoten?
  • Zijn er watermerken?
  • Zijn er aantekeningen of opmerkingen (bijvoorbeeld in PDF-bestanden of Word-documenten)
  • Zijn er andere typen ingesloten media, zoals video's of audio?
  • Zijn er wiskundige vergelijkingen/wetenschappelijke notaties in het document?
  • Zijn er opsommingstekens of zinvolle inspringingen?

De antwoorden op deze vragen helpen u bij het identificeren van de documentstructuur, het bepalen van uw segmenteringsbenadering en het identificeren van inhoud die u wilt segmenteren en wat niet.

Volgende stappen