Delen via


Evaluatie van grote taalmodellen van begin tot eind

In deze fase evalueert u uw rag-oplossing (Retrieval-Augmented Generation) door de verwachte gebruikersprompts te bekijken die de opgehaalde grondgegevens voor het taalmodel bevatten. Voordat u deze fase bereikt, moet u de voorgaande fasen voltooien. U moet uw testdocumenten en query's verzamelen, uw testdocumenten segmenteren, de segmenten verrijken, de segmenten insluiten, een zoekindex maken en een zoekstrategie implementeren. Vervolgens moet u elk van deze fasen evalueren en ervoor zorgen dat de resultaten voldoen aan uw verwachtingen. Op dit moment moet u er zeker van zijn dat uw oplossing relevante grondgegevens retourneert voor een gebruikersquery.

Deze grondgegevens vormen de context voor de prompt die u naar het taalmodel verzendt om de query van de gebruiker aan te pakken. Prompt engineering strategieën vallen buiten het bereik van dit artikel. In dit artikel wordt de evaluatie van de ontworpen aanroep naar het taalmodel behandeld vanuit het perspectief van de grondgegevens. In dit artikel worden algemene metrische gegevens voor taalmodelevaluatie en specifieke overeenkomsten en metrische evaluatiegegevens beschreven die u kunt gebruiken in modelevaluatieberekeningen of als zelfstandige metrische gegevens.

In dit artikel wordt niet geprobeerd een uitgebreide lijst met metrische gegevens voor taalmodellen of overeenkomsten en metrische evaluatiegegevens te bieden. Wat belangrijk is voor u om uit dit artikel te halen, is dat er verschillende metrische gegevens zijn die elk verschillende use cases hebben. Alleen u hebt een holistisch begrip van uw workload. U en uw gegevenswetenschappers moeten bepalen wat u wilt meten en welke metrische gegevens geschikt zijn.

Dit artikel maakt deel uit van een reeks. Lees eerst de inleiding .

Metrische gegevens voor taalmodelevaluatie

Er zijn verschillende metrische gegevens die u moet gebruiken om het antwoord van het taalmodel te evalueren, waaronder geaardheid, volledigheid, gebruik, relevantie en juistheid. Omdat het algemene doel van het RAG-patroon is om relevante gegevens te bieden als context voor een taalmodel bij het genereren van een antwoord, moet elk van de bovenstaande metrische gegevens een hoge score geven. Afhankelijk van uw workload moet u echter mogelijk prioriteit geven aan elkaar.

Belangrijk

Antwoorden op taalmodellen zijn niet-deterministisch, wat betekent dat dezelfde prompt voor een taalmodel vaak verschillende resultaten retourneert. Dit concept is belangrijk om te begrijpen wanneer u een taalmodel gebruikt als onderdeel van uw evaluatieproces. Overweeg om een doelbereik te gebruiken in plaats van één doel wanneer u taalmodelgebruik evalueert.

Gegrondheid

Groundedness, soms ook wel getrouwheidgenoemd, meet of de reactie volledig is gebaseerd op de context. Het valideert dat het antwoord geen andere informatie gebruikt dan wat er in de context bestaat. Een meetwaarde met weinig grondheid geeft aan dat het taalmodel mogelijk onjuiste of niet-gevoelige reacties uitvoert.

Geaardheid berekenen

Gebruik de volgende methoden om de onderbouwing van reacties te berekenen:

Gegrondheid evalueren

Een berekening met weinig grondheid geeft aan dat het taalmodel de segmenten niet als relevant ziet. U moet evalueren of u gegevens aan uw verzameling moet toevoegen, uw segmentstrategie of segmentgrootte moet aanpassen of uw prompt moet aanpassen.

Volledigheid

volledigheid meet of het antwoord alle onderdelen van de query beantwoordt. Volledigheid helpt u te begrijpen of de segmenten in de context relevant zijn, rechtstreeks betrekking hebben op de query en een volledig antwoord geven.

Volledigheid berekenen

Gebruik de volgende methoden om de volledigheid van antwoorden te berekenen:

  • door AI ondersteunde score voor het ophalen van.
  • Een taalmodel kan u helpen bij het meten van de kwaliteit van het antwoord van het taalmodel. U hebt de vraag, context en gegenereerd antwoord nodig om deze meting uit te voeren. De volgende stappen geven een overzicht van het proces op hoog niveau:
    1. Gebruik het taalmodel om de vraag opnieuw te formuleren, samen te vatten of te vereenvoudigen. Deze stap identificeert de intentie.
    2. Vraag het model om te controleren of de intentie of het antwoord op de intentie is gevonden in of kan worden afgeleid van de opgehaalde documenten. Het antwoord kan 'ja' of 'nee' zijn voor elk document. Antwoorden die beginnen met 'ja', geven aan dat de opgehaalde documenten relevant zijn voor de intentie of het antwoord op de intentie.
    3. Bereken de verhouding van de intenties met een antwoord dat begint met 'ja'.
    4. De score kwadrateren om de fouten te markeren.

Volledigheid evalueren

Als de volledigheid laag is, begin dan met werken om deze te verhogen door uw embedmodel te evalueren. Vergelijk de woordenlijst in uw inhoud met de woordenschat in uw insluitingsmodel. Bepaal of u een domeinspecifiek insluitingsmodel nodig hebt of of u een bestaand model moet verfijnen. De volgende stap is het evalueren van uw segmenteringsstrategie. Als u segmentering met vaste grootte gebruikt, kunt u overwegen om de segmentgrootte te vergroten. U kunt ook evalueren of uw testgegevens voldoende gegevens hebben om de vraag volledig aan te pakken.

Gebruik

Gebruik meet de mate van waarin het antwoord opgebouwd is uit informatie uit de stukken in de context. Het doel is om te bepalen in hoeverre elk segment deel uitmaakt van het antwoord. Laag gebruik geeft aan dat uw resultaten mogelijk niet relevant zijn voor de query. U moet het gebruik naast volledigheid evalueren.

Gebruik berekenen

Gebruik een taalmodel om het gebruik te berekenen. U kunt het antwoord en de context met de segmenten doorgeven aan het taalmodel. U kunt het taalmodel vragen om het aantal segmenten te bepalen dat het antwoord met zich meebrengt.

Gebruik evalueren

De volgende tabel bevat richtlijnen voor het evalueren van volledigheid en gebruik.

Hoog gebruik Laag gebruik
hoge volledigheid Geen actie nodig. In dit geval worden met de geretourneerde gegevens de vraag beantwoord, maar worden ook irrelevante segmenten geretourneerd. Overweeg om de top-k-parameterwaarde te verminderen om meer waarschijnlijke of deterministische resultaten te opleveren.
weinig volledigheid In dit geval gebruikt het taalmodel de segmenten die u opgeeft, maar ze zijn niet volledig op de vraag gericht. Overweeg de volgende stappen uit te voeren:
  • Controleer uw segmenteringsstrategie om de context binnen de segmenten te vergroten.
  • Verhoog het aantal segmenten door de parameterwaarde top-k te verhogen.
  • Evalueer of u segmenten hebt die niet zijn geretourneerd die de volledigheid kunnen verhogen. Zo ja, onderzoek dan waarom ze niet zijn geretourneerd.
  • Volg de richtlijnen in de volledigheid sectie .
In dit geval beantwoorden de geretourneerde gegevens de vraag niet volledig en worden de segmenten die u opgeeft niet volledig gebruikt. Overweeg de volgende stappen uit te voeren:
  • Controleer uw segmenteringsstrategie om de context binnen de segmenten te vergroten. Als u segmentering met vaste grootte gebruikt, kunt u overwegen de segmentgrootten te vergroten.
  • Verfijn uw prompts om de antwoorden te verbeteren.

Relevantie

Relevantie- meet de mate waarin het antwoord van het taalmodel relevant is en gerelateerd is aan de query.

Relevantie berekenen

Gebruik de volgende methoden om de relevantie van antwoorden te berekenen:

Notitie

U kunt de Azure AI Foundry-portal gebruiken om de berekeningen uit te voeren of de richtlijnen in dit artikel te gebruiken om de relevantie zelf te berekenen.

Relevantie evalueren

Als de relevantie laag is, voert u de volgende taken uit:

  1. Zorg ervoor dat de segmenten die aan het taalmodel zijn verstrekt, relevant zijn.
    • Bepaal of relevante, levensvatbare segmenten niet worden geretourneerd. Als u deze segmenten ontdekt, evalueert u het insluitmodel.
    • Als er geen haalbare segmenten zijn, kijkt u of er relevante gegevens bestaan. Als dit het geval is, evalueert u uw segmenteringsstrategie.
  2. Als relevante onderdelen zijn geretourneerd, evalueert u uw prompt.

De scores die evaluatiemethoden zoals volledigheid uitvoer moeten resultaten opleveren die vergelijkbaar zijn met de relevantiescore.

Correctheid

juistheid meet de mate waarin het antwoord nauwkeurig en feitelijk is.

De juistheid berekenen

Er zijn verschillende manieren om de juistheid te evalueren, waaronder:

  • Taalmodel: gebruik een taalmodel om de juistheid te berekenen. U kunt het antwoord doorgeven aan het taalmodel, idealiter een ander taalmodel dan het model dat wordt gebruikt om het resultaat te genereren. U kunt het taalmodel vragen om te bepalen of het antwoord feitelijk is of niet.
  • externe vertrouwde bron: gebruik een externe vertrouwde bron om de juistheid van het antwoord te valideren. Afhankelijk van de API van uw vertrouwde bron kunt u de vertrouwde bron alleen of met een taalmodel gebruiken.

Juistheid evalueren

Als de juistheid laag is, voert u de volgende taken uit:

  1. Zorg ervoor dat de segmenten die aan het taalmodel zijn verstrekt, feitelijk correct zijn en dat er geen gegevensvooroordelen zijn. Mogelijk moet u eventuele problemen in de brondocumenten of inhoud corrigeren.
  2. Als de segmenten feitelijk juist zijn, evalueert u uw prompt.
  3. Evalueer of er onnauwkeurigheden in het model zijn die moeten worden opgelost met aanvullende feitelijke grondgegevens of het verfijnen van gegevens.

Overeenkomsten en metrische evaluatiegegevens

Er zijn honderden overeenkomsten en evaluatiegegevens die u in data science kunt gebruiken. Sommige algoritmen zijn specifiek voor een domein, zoals spraak-naar-tekst- of taal-naar-taalomzetting. Elk algoritme heeft een unieke strategie voor het berekenen van de metrische gegevens.

Gegevenswetenschappers bepalen wat u wilt meten en welke metrische gegevens of combinatie van metrische gegevens u kunt gebruiken om deze te meten. Voor taalvertaling controleert de BLEU-metriek bijvoorbeeld hoeveel n-grams voorkomen in zowel de machinevertaling als de menselijke vertaling, om overeenkomsten te meten op basis van of de vertalingen dezelfde woorden gebruiken. Cosinus-gelijkenis maakt gebruik van insluitingen tussen de machine en menselijke vertalingen om de semantische gelijkenis te meten. Als u een hoge semantische gelijkenis wilt hebben en vergelijkbare woorden wilt gebruiken als de menselijke vertaling, wilt u een hoge BLEU-score met een hoge cosinus-gelijkenis. Als u alleen om semantische similariteit geeft, focus op cosinus-similariteit.

De volgende lijst bevat een voorbeeld van veelvoorkomende overeenkomsten en metrische evaluatiegegevens. U ziet dat de vermelde overeenkomsten metrische gegevens worden beschreven als op token gebaseerd, op volgorde gebaseerd of op bewerking gebaseerd. Deze beschrijvingen illustreren welke benadering de metrische gegevens gebruiken om overeenkomsten te berekenen. De lijst bevat ook drie algoritmen om de kwaliteit van tekstomzetting van de ene taal naar de andere te evalueren.

  • langste algemene subtekenreeks is een algoritme op basis van een reeks waarmee de langste algemene subtekenreeks tussen twee tekenreeksen wordt gevonden. Het langste algemene subtekenreekspercentage neemt de langste algemene subtekenreeks en deelt deze door het aantal tekens van de kleinere of grotere invoertekenreeks.
  • Langste algemene deelreeks (LCS) is een algoritme op basis van een reeks dat de langste deelreeks tussen twee tekenreeksen vindt. LCS vereist niet dat de subsequences in opeenvolgende volgorde staan.
  • cosinus-gelijkenis is een algoritme op basis van tokens waarmee de cosinus van de hoek tussen de twee vectoren wordt berekend.
  • Jaro-Winkler afstand is een algoritme op basis van bewerkingen waarmee het minimale aantal stappen wordt geteld om de ene tekenreeks te transformeren in een andere.
  • Hamming-afstand is een algoritme op basis van bewerkingen waarmee het minimale aantal vervangingen wordt gemeten dat nodig is om de ene tekenreeks naar een andere te transformeren.
  • Jaccard-index is een algoritme op basis van tokens waarmee overeenkomsten worden berekend door het snijpunt van twee tekenreeksen te delen door de samenvoeging van deze tekenreeksen.
  • Levenshtein-afstand is een algoritme op basis van bewerkingen waarmee overeenkomsten worden berekend door het minimale aantal bewerkingen van één teken te bepalen dat nodig is om de ene tekenreeks om te zetten in een andere tekenreeks.
  • BLEU de kwaliteit van tekst evalueert die het resultaat is van automatische vertaling van de ene taal naar de andere. BLEU berekent de overlapping van n-grammen tussen een machinevertaling en een vertaling van menselijke kwaliteit om deze evaluatie te maken.
  • ROUGE is een metrische waarde waarmee een automatische vertaling van de ene taal wordt vergeleken met een door mensen gemaakte vertaling. Er zijn verschillende ROUGE-varianten die gebruikmaken van de overlapping van n-grammen, skip-bigrams of langste gemeenschappelijke deelreeks.
  • METEOR- evalueert de kwaliteit van tekst die het resultaat is van automatische vertaling door exacte overeenkomsten, overeenkomsten na stemming, synoniemen, parafrasering en uitlijning te bekijken.

Zie de volgende bronnen voor meer informatie over algemene overeenkomsten en metrische evaluatiegegevens:

Meerdere evaluatiemaatstaven samen gebruiken

U moet de metrische gegevens voor taalmodelevaluatie gebruiken om een beter inzicht te krijgen in hoe goed uw RAG-oplossing presteert. Hier volgen enkele voorbeelden van het gebruik van meerdere metrische evaluatiegegevens.

Geaardheid en juistheid

Metrische gegevens over geaardheid en juistheid helpen bepalen of het systeem de context nauwkeurig interpreteert en gebruikt. Als de verankering hoog is, maar de juistheid laag, betekent dit dat het taalmodel de context gebruikt, maar een onjuist antwoord geeft. Het onjuiste antwoord kan worden veroorzaakt door onjuist gebruik van context of problemen met de brongegevens. Als de verankering bijvoorbeeld 0,9 is, maar het juistheidsniveau 0,4 is, geeft dit aan dat het systeem naar het juiste bronmateriaal verwijst, maar verkeerde conclusies trekt. Denk aan een antwoord met de mededeling 'Einstein ontwikkelde de kwantummechanica', gebaseerd op een context waarin zowel Einstein als de kwantummechanica afzonderlijk worden vermeld. Dit antwoord is geaard, maar feitelijk onjuist.

Deze combinatie van metrische gegevens is een combinatie waarbij het prioriteren van de ene voor de andere zeer belangrijk kan zijn voor uw specifieke workload. Als de brongegevens mogelijk onwaar-informatie bevatten, kan het bijvoorbeeld essentieel zijn voor het systeem om die valse informatie in de antwoorden te bewaren. In dat geval wilt u prioriteit geven aan een geaard antwoord boven een correct antwoord. In andere gevallen zou uw workload liever contextgegevens moeten raadplegen, maar uiteindelijk is de juistheid nog steeds de prioriteit.

Gebruik en volledigheid

Metrische gegevens over gebruik en volledigheid helpen bij het evalueren van de effectiviteit van het ophaalsysteem. Hoog gebruik (0,9) met een lage volledigheid (0,3) geeft aan dat het systeem nauwkeurige maar onvolledige informatie ophaalt. Wanneer het systeem bijvoorbeeld wordt gevraagd over de oorzaken van de Tweede Wereldoorlog, kan het systeem perfect informatie ophalen over de invasie van Polen, maar andere cruciale factoren missen. In dit scenario kan worden aangegeven dat er segmenten zijn met relevante informatie die niet als onderdeel van de context is gebruikt. U kunt dit scenario oplossen door meer segmenten te retourneren, uw segmentclassificatiestrategie te evalueren en uw prompt te evalueren.

Gegrondheid, benutting en gelijkenis

Metrische gegevens over geaardheid, gebruik en overeenkomsten helpen bij het identificeren hoe goed het systeem de waarheid behoudt tijdens het transformeren van informatie. Hoge grondheid (0,9) en gebruik (.9) met een lage gelijkenis (0,3) geeft aan dat het systeem nauwkeurige grondgegevens gebruikt, maar slecht wordt geparafraseerd. Pak dit scenario aan door uw prompt te evalueren. Wijzig de prompt en test de resultaten.

Documentatie, rapportage en aggregatie

U moet zowel de hyperparameters die u kiest voor een experiment als de resulterende metrische evaluatiegegevens documenteren, zodat u kunt begrijpen hoe de hyperparameters van invloed zijn op uw resultaten. U moet hyperparameters en resultaten documenteren op gedetailleerde niveaus, zoals insluiten of zoeken, en op macroniveau, zoals het testen van het hele systeem end-to-end.

Tijdens het ontwerpen en ontwikkelen kunt u de hyperparameters en resultaten mogelijk handmatig bijhouden. Het uitvoeren van meerdere evaluaties op basis van uw hele testdocument en het verzamelen van testquery's kan echter betrekking hebben op honderden evaluatieuitvoeringen en duizenden resultaten. U moet de persistentie van parameters en resultaten voor uw evaluaties automatiseren.

Nadat uw hyperparameters en resultaten zijn behouden, moet u overwegen grafieken en grafieken te maken om u te helpen visualiseren hoe de hyperparameters van invloed zijn op de metrische gegevens. Met visualisatie kunt u bepalen welke keuzes leiden tot dips of pieken in prestaties.

Het is belangrijk om te begrijpen dat het ontwerpen en evalueren van uw RAG-oplossing geen eenmalige bewerking is. Uw verzameling documenten wordt na verloop van tijd gewijzigd. De vragen die uw klanten in de loop van de tijd stellen, veranderen, en uw begrip van de soorten vragen evolueert naarmate u leert van productie-ervaringen. U moet dit proces opnieuw en opnieuw doorlopen. Het onderhouden van documentatie over eerdere evaluaties is essentieel voor toekomstige ontwerp- en evaluatie-inspanningen.

De RAG-experimentele versneller

In deze artikelen wordt u begeleid bij alle fasen en ontwerpkeuzes die betrokken zijn bij het ontwerpen en evalueren van een RAG-oplossing. De artikelen richten zich op wat u moet doen, niet hoe u dit moet doen. Een technisch team dat met Microsoft-topklanten werkt, heeft een hulpprogramma ontwikkeld dat de RAG Experiment Acceleratorwordt genoemd. De RAG Experiment Accelerator is een geavanceerd experimentatieframework. Het is ontworpen om de ontwikkeling van RAG-oplossingen te optimaliseren en te verbeteren. De RAG Experiment Accelerator stelt onderzoekers en ontwikkelaars in staat om efficiënt de kritieke onderdelen te verkennen en af te stemmen die de RAG-prestaties stimuleren. Deze innovatie resulteert uiteindelijk in nauwkeurigere en coherentere tekstgeneratie.

De RAG Experiment Accelerator maakt gebruik van een opdrachtregelinterface, zodat u eenvoudig kunt experimenteren met verschillende insluitingsmodellen, segmenteringsstrategieën kunt verfijnen en verschillende zoekmethoden kunt evalueren om het volledige potentieel van uw RAG-systeem te ontgrendelen. Hiermee kunt u zich richten op de belangrijkste aspecten van RAG-ontwikkeling met behulp van een eenvoudige configuratie voor het afstemmen van hyperparameters.

Het framework biedt ook uitgebreide ondersteuning voor de configuratie van taalmodellen. Deze ondersteuning helpt u de perfecte balans te vinden tussen de complexiteit van het model en de kwaliteit van de generatie. Met dit hulpprogramma kunt u het experimenteerproces stroomlijnen, tijd besparen en de prestaties van uw RAG-modellen aanzienlijk verbeteren.

RAG met Vision Application Framework

Veel van de richtlijnen in dit artikel over het werken met media in uw RAG-oplossing zijn afkomstig van een ander technisch team dat werkt met Microsoft-topklanten. Dit team schreef een framework met de naam RAG met Vision Application Framework. Dit framework biedt een op Python gebaseerde RAG-pijplijn die zowel tekstuele als afbeeldingsinhoud van MHTML-documenten verwerkt.

Het framework laadt, segmenteert en verrijkt tekst en afbeeldingen uit MHTML-bestanden. Vervolgens worden de segmenten opgenomen in Azure AI Search. Het framework implementeert caching voor afbeeldingsverrijking voor verwerking en kostenefficiëntie. Het framework bevat ook evaluatie als onderdeel van de pijplijn.

Bijdragers

Dit artikel wordt onderhouden door Microsoft. Het is oorspronkelijk geschreven door de volgende inzenders.

Volgende stappen