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:
- Azure AI Content Safety-gebaseerde onderbouwing is een aangepast model dat gebruikmaakt van inferentie in natuurlijke taal om te bepalen of claims, of in dit geval delen, zijn gebaseerd op context in het brondocument.
- Op grote taalmodellen gebaseerde verankering gebruikt een taalmodel om de mate van verankering van de reactie te bepalen.
- Ragas getrouwheidsbibliotheek.
- MLflow-getrouwheidsberekening.
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:
- Gebruik het taalmodel om de vraag opnieuw te formuleren, samen te vatten of te vereenvoudigen. Deze stap identificeert de intentie.
- 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.
- Bereken de verhouding van de intenties met een antwoord dat begint met 'ja'.
- 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.
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:
- AI-ondersteund: Relevantie in Azure AI Foundry
- Ragas-antwoordbibliotheek voor relevantie
- MLflow-relevantieberekeningen
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:
- 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.
- 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:
- 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.
- Als de segmenten feitelijk juist zijn, evalueert u uw prompt.
- 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.
- Raouf Aliouat | Software Engineer II
- Rob Bagby | Hoofd Inhoudsleider Architectuurcentrum
- Paul Butler | Software Engineer
- Prabal Deb | Hoofdsoftware-ingenieur
- Soubhi Hadri - | Senior Data Scientist
- Ritesh Modi | Hoofdtechnicus
- Ryan Pfalz- | Senior Technical Program Manager
- Mahdi Setayesh | Hoofd Software Ingenieur
- Randy Thurman | Hoofd AI Cloud Oplossingsarchitect