Slut-till-slut utvärdering av stor språkmodell
I den här fasen utvärderar du din lösning för Retrieval-Augmented generation (RAG) genom att undersöka de förväntade användarprompter som innehåller hämtade grunddata mot språkmodellen. Innan du når den här fasen bör du slutföra föregående faser. Du måste samla in dina testdokument och frågor, segmentera dina testdokument, utöka segmenten, bädda in segmenten, skapa ett sökindex och implementera en sökstrategi. Sedan bör du utvärdera var och en av dessa faser och se till att resultaten uppfyller dina förväntningar. Nu bör du vara säker på att din lösning returnerar relevanta grunddata för en användarfråga.
Dessa grunddata utgör kontexten för uppmaningen som du skickar till språkmodellen för att hantera användarens fråga. Prompt engineering strategies ligger utanför den här artikelns omfång. I den här artikeln behandlas utvärderingen av det konstruerade anropet till språkmodellen utifrån jordningsdata. Den här artikeln beskriver vanliga mått för utvärdering av språkmodeller och specifika likhets- och utvärderingsmått som du kan använda i modellutvärderingsberäkningar eller som fristående mått.
Den här artikeln försöker inte tillhandahålla en fullständig lista över språkmodellmått eller likhets- och utvärderingsmått. Det som är viktigt för dig att ta med dig från den här artikeln är att det finns olika mått som har sina särskilda användningsfall. Det är bara du som har en holistisk förståelse för din arbetsbelastning. Du och dina dataexperter måste bestämma vad du vill mäta och vilka mått som är lämpliga.
Den här artikeln är en del av en serie. Läs den introduktionen först.
Utvärderingsmått för språkmodeller
Det finns flera mått som du bör använda för att utvärdera språkmodellens svar, inklusive grundlighet, fullständighet, användning, relevans och korrekthet. Eftersom det övergripande målet med RAG-mönstret är att tillhandahålla relevanta data som kontext till en språkmodell när du genererar ett svar bör var och en av ovanstående mått ha höga poäng. Beroende på din arbetsbelastning kan du dock behöva prioritera varandra framför en annan.
Viktig
Språkmodellsvar är icke-terministiska, vilket innebär att samma fråga till en språkmodell ofta returnerar olika resultat. Det här konceptet är viktigt att förstå när du använder en språkmodell som en del av utvärderingsprocessen. Överväg att använda ett målintervall i stället för ett enda mål när du utvärderar språkmodellens användning.
Grundadhet
Förankring, som ibland kallas trovärdighet, bedömer om svaret är helt baserat på sammanhanget. Den verifierar att svaret inte använder annan information än vad som finns i kontexten. Ett mått med låg grundnivå anger att språkmodellen kan mata ut felaktiga eller meningslösa svar.
Beräkna grunderna
Använd följande metoder för att beräkna grunderna för svar:
- Azure AI Content Safety-baserad grundinställning är en anpassad modell som använder slutsatsdragning med naturligt språk för att avgöra om anspråk, eller i det här fallet segment, baseras på kontexten i källdokumentet.
- Stor språkmodellbaserad förankringsgrad använder en språkmodell för att fastställa svarets förankringsgrad.
- Ragas trofasthetsbibliotek.
- MLflow-tillförlitlighetsberäkning.
Utvärdera grunderna
En beräkning med låg grundnivå anger att språkmodellen inte ser segmenten som relevanta. Du bör utvärdera om du behöver lägga till data i samlingen, justera segmenteringsstrategin eller segmentstorleken eller finjustera din fråga.
Fullständighet
Fullständighet mäter om svaret besvarar alla delar av frågan. Fullständighet hjälper dig att förstå om segmenten i kontexten är relevanta, direkt relaterar till frågan och ger ett fullständigt svar.
Beräkna fullständighet
Använd följande metoder för att beräkna svars fullständighet:
- AI-assisterad sökningspoäng genererar.
- En språkmodell kan hjälpa dig att mäta kvaliteten på språkmodellsvaret. Du behöver frågan, kontexten och det genererade svaret för att kunna utföra den här mätningen. Följande steg beskriver processen på hög nivå:
- Använd språkmodellen för att formulera om, sammanfatta eller förenkla frågan. Det här steget identifierar avsikten.
- Be modellen att kontrollera om avsikten eller svaret på avsikten finns i eller kan härledas från de hämtade dokumenten. Svaret kan vara "ja" eller "nej" för varje dokument. Svar som börjar med "ja" anger att de hämtade dokumenten är relevanta för avsikten eller svaret på avsikten.
- Beräkna förhållandet mellan de avsikter som har ett svar som börjar med "ja".
- Kvadratera poängen för att markera felen.
Utvärdera fullständighet
Om fullständigheten är låg börjar du arbeta för att öka den genom att utvärdera inbäddningsmodellen. Jämför vokabulären i ditt innehåll med vokabulären i inbäddningsmodellen. Avgör om du behöver en domänspecifik inbäddningsmodell eller om du ska finjustera en befintlig modell. Nästa steg är att utvärdera segmenteringsstrategin. Om du använder segment med fast storlek bör du överväga att öka segmentstorleken. Du kan också utvärdera om dina testdata har tillräckligt med data för att helt åtgärda frågan.
Användning
Användning mäter i vilken utsträckning svaret består av information från segmenten i kontexten. Målet är att fastställa i vilken utsträckning varje segment är en del av svaret. Låg användning indikerar att dina resultat kanske inte är relevanta för frågan. Du bör utvärdera användningen tillsammans med fullständighet.
Beräkna användning
Använd en språkmodell för att beräkna användningen. Du kan skicka svaret och kontexten som innehåller segmenten till språkmodellen. Du kan be språkmodellen att fastställa antalet segment som innehåller svaret.
Utvärdera användning
Följande tabell innehåller vägledning för hur du utvärderar fullständighet och användning.
Hög användning | Låg användning | |
---|---|---|
Hög fullständighet | Ingen åtgärd krävs. | I det här fallet löser de returnerade data frågan men returnerar även irrelevanta segment. Överväg att minska parametervärdet top-k för att ge mer sannolika eller deterministiska resultat. |
Låg fullständighet | I det här fallet använder språkmodellen de segment som du anger, men de tar inte upp frågan helt. Överväg att vidta följande steg:
|
I det här fallet svarar inte de returnerade data helt och hållet på frågan, och segmenten som du anger används inte helt. Överväg att vidta följande steg:
|
Relevans
Relevans mäter i vilken utsträckning språkmodellens svar är relevant och relaterat till frågan.
Beräkna relevans
Använd följande metoder för att beräkna relevansen av svar:
- AI-assisterad: Relevans i Azure AI Foundry
- Ragas svarar på relevansbiblioteket
- MLflow-relevansberäkning
Notera
Du kan använda Azure AI Foundry-portalen för att utföra beräkningarna eller använda vägledningen i den här artikeln för att beräkna relevansen själv.
Utvärdera relevans
När relevansen är låg utför du följande uppgifter:
- Se till att segmenten som tillhandahålls till språkmodellen är relevanta.
- Avgör om några relevanta, livskraftiga segment inte returneras. Om du upptäcker dessa segment utvärderar du inbäddningsmodellen.
- Om det inte finns några livskraftiga segment kan du se om relevanta data finns. Ifall det gör det, ska du utvärdera din segmenteringsstrategi.
- Om relevanta segment returneras utvärderar du din fråga.
Poängen som utvärderingsmetoder som fullständighet, utgångsdata bör ge resultat som liknar relevanspoängen.
Korrekthet
Korrekthet mäter i vilken grad svaret är korrekt och sakligt.
Beräkna korrekthet
Det finns flera sätt att utvärdera korrekthet, bland annat:
- Language Model – Använd en språkmodell för att beräkna korrekthet. Du kan skicka svaret till språkmodellen, helst en annan språkmodell än den som användes för att generera resultatet. Du kan be språkmodellen att avgöra om svaret är faktabaserat eller inte.
- Extern betrodd källa – Använd en extern betrodd källa för att verifiera svarets korrekthet. Beroende på API:et för din betrodda källa kan du använda den betrodda källan ensam eller med en språkmodell.
Utvärdera korrekthet
När rättheten är låg utför du följande uppgifter:
- Se till att segmenten som tillhandahålls till språkmodellen är faktamässigt korrekta och att det inte finns någon dataförskjutning. Du kan behöva åtgärda eventuella problem i källdokumenten eller innehållet.
- Om segmenten är faktamässigt korrekta, utvärdera ditt prompt.
- Utvärdera om det finns ärvde felaktigheter i modellen som måste övervinnas med ytterligare faktabaserade grunddata eller finjustering.
Likhets- och utvärderingsmått
Det finns hundratals likhets- och utvärderingsmått som du kan använda inom datavetenskap. Vissa algoritmer är specifika för en domän, till exempel tal till text eller översättning från språk till språk. Varje algoritm har en unik strategi för att beräkna dess mått.
Dataexperter avgör vad du vill mäta och vilket mått eller vilken kombination av mått du kan använda för att mäta det. För språköversättning kontrollerar till exempel det tvåspråkiga måttet för utvärderingsunderstudie (BLEU) hur många n-gram som visas i både maskinöversättningen och mänsklig översättning för att mäta likheten baserat på om översättningarna använder samma ord. Cosinuslikhet använder inbäddningar mellan maskinella och mänskliga översättningar för att mäta semantisk likhet. Om ditt mål är att ha hög semantisk likhet och använda liknande ord som den mänskliga översättningen, vill du ha en hög BLEU-poäng med hög cosinuslikhet. Om du bara bryr dig om semantisk likhet, fokusera på cosinlikhet.
Följande lista innehåller ett exempel på vanliga likhets- och utvärderingsmått. Observera att de angivna likhetsmåtten beskrivs som tokenbaserade, sekvensbaserade eller redigeringsbaserade. Dessa beskrivningar illustrerar vilken metod måtten använder för att beräkna likheter. Listan innehåller också tre algoritmer för att utvärdera kvaliteten på textöversättningen från ett språk till ett annat.
- Längsta gemensamma delsträngen är en sekvensbaserad algoritm som hittar den längsta gemensamma delsträngen mellan två strängar. Den längsta gemensamma delsträngsprocenten tar den längsta gemensamma delsträngen och delar den med antalet tecken i den mindre eller större indatasträngen.
- Längsta gemensamma delsekvens (LCS) är en sekvensbaserad algoritm som hittar den längsta delsekvensen mellan två strängar. LCS kräver inte att delsekvenserna är i konsekutiv ordning.
- cosinuslikhet är en tokenbaserad algoritm som beräknar cosinus för vinkeln mellan de två vektorerna.
- Jaro-Winkler avstånd är en redigeringsbaserad algoritm som räknar det minsta antalet steg för att omvandla en sträng till en annan.
- Hamming-avstånd är en redigeringsbaserad algoritm som mäter det minsta antalet ersättningar som krävs för att omvandla en sträng till en annan.
- Jaccard-index är en tokenbaserad algoritm som beräknar likheten genom att dela skärningspunkten mellan två strängar med union av dessa strängar.
- Levenshtein-avstånd är en redigeringsbaserad algoritm som beräknar likheten genom att fastställa det minsta antalet redigeringar med ett tecken som krävs för att omvandla en sträng till en annan.
- BLEU utvärderar kvaliteten på text som är resultatet av maskinöversättning från ett språk till ett annat. BLEU beräknar överlappningen av n-gram mellan en maskinöversättning och en översättning av mänsklig kvalitet för att göra denna utvärdering.
- ROUGE är ett mått som jämför en maskinöversättning av ett språk med en översättning som skapats av människor. Det finns flera ROUGE-varianter som använder överlappningen av n-gram, skip-bigram eller längsta gemensamma delsträng.
- METEOR- utvärderar kvaliteten på text som är resultatet av maskinöversättning genom att titta på exakta matchningar, matchningar efter härstamning, synonymer, parafraser och justering.
Mer information om vanliga likhets- och utvärderingsmått finns i följande resurser:
Använda flera utvärderingsmått tillsammans
Du bör använda måtten för utvärdering av språkmodeller tillsammans för att få en bättre förståelse för hur bra DIN RAG-lösning presterar. Följande är flera exempel på hur du använder flera utvärderingsmått tillsammans.
Grund och korrekthet
Mått för grund och korrekthet hjälper tillsammans till att avgöra om systemet tolkar och använder kontexten korrekt. Om groundedness är hög men korrektheten är låg innebär det att språkmodellen använder kontexten men ger ett felaktigt svar. Det felaktiga svaret kan bero på felaktig användning av kontext eller problem med källdata. Om till exempel groundedness är 0,9 men korrektheten är 0,4, anger det att systemet refererar till rätt källmaterial men drar felaktiga slutsatser. Överväg ett svar som anger "Einstein utvecklade kvantmekanik" baserat på en kontext som separat nämner både Einstein och kvantmekanik. Detta svar är grundat men faktiskt felaktigt.
Den här måttkombinationen är en där det kan vara mycket viktigt att prioritera det ena framför det andra för din specifika arbetsbelastning. Om källdata till exempel innehåller potentiellt falsk information avsiktligt och det kan vara viktigt för systemet att behålla den falska informationen i sina svar. I så fall vill du prioritera ett grundat svar framför ett korrekt svar. I andra fall vill arbetsbelastningen hellre att kontextdata konsulteras, men den slutliga korrektheten är fortfarande prioriteten.
Användning och fullständighet
Användnings- och fullständighetsmått hjälper tillsammans till att utvärdera hämtningssystemets effektivitet. Hög användning (0,9) med låg fullständighet (0,3) indikerar att systemet hämtar korrekt men ofullständig information. Till exempel, när man tillfrågas om andra världskrigets orsaker, kan systemet helt hämta information om invasionen av Polen men missa andra avgörande faktorer. Det här scenariot kan tyda på att det finns segment med relevant information som inte användes som en del av kontexten. För att hantera det här scenariot kan du överväga att returnera fler segment, utvärdera din segmentrankningsstrategi och utvärdera din uppmaning.
Grund och användning och likhet
Grundmått, användning och likhetsmått hjälper tillsammans till att identifiera hur väl systemet upprätthåller sanning när information transformeras. Hög förankring (0,9) och utnyttjande (.9) med låg likhet (0,3) indikerar att systemet använder korrekta förankringsdata, men parafraserar dåligt. För att åtgärda det här scenariot, utvärdera din uppmaning. Ändra uppmaningen och testa resultatet.
Dokumentation, rapportering och aggregering
Du bör dokumentera både de hyperparametrar som du väljer för ett experiment och de resulterande utvärderingsmåtten så att du kan förstå hur hyperparametrar påverkar dina resultat. Du bör dokumentera hyperparametrar och resultat på detaljerade nivåer, till exempel inbäddning eller sökutvärdering, och på makronivå, som att testa hela systemet från slutpunkt till slutpunkt.
Under design och utveckling kanske du kan spåra hyperparametrar och resultat manuellt. Att utföra flera utvärderingar mot hela testdokumentet och testfrågesamlingen kan dock omfatta hundratals utvärderingskörningar och tusentals resultat. Du bör automatisera beständigheten för parametrar och resultat för dina utvärderingar.
När dina hyperparametrar och resultat har sparats bör du överväga att skapa diagram och grafer som hjälper dig att visualisera hur hyperparametrar påverkar måtten. Visualisering hjälper dig att identifiera vilka alternativ som leder till prestandadippar eller toppar.
Det är viktigt att förstå att det inte är en engångsåtgärd att utforma och utvärdera DIN RAG-lösning. Din samling dokument ändras över tid. De frågor som dina kunder ställer förändras över tid och din förståelse för vilka typer av frågor som utvecklas när du lär dig av produktionen. Du bör gå tillbaka till den här processen om och om igen. Att underhålla dokumentation om tidigare utvärderingar är avgörande för framtida design- och utvärderingsarbete.
RAG-experimentacceleratorn
De här artiklarna beskriver alla faser och designval som ingår i utformningen och utvärderingen av en RAG-lösning. Artiklarna fokuserar på vad du bör göra, inte hur du gör det. Ett ingenjörsteam som arbetar med Microsofts främsta kunder utvecklade ett verktyg som kallas RAG Experiment Accelerator. RAG Experiment Accelerator är ett toppmodernt experimentramverk. Den har utformats för att optimera och förbättra utvecklingen av RAG-lösningar. RAG Experiment Accelerator ger forskare och utvecklare möjlighet att effektivt utforska och finjustera de kritiska komponenter som driver RAG-prestanda. Denna innovation resulterar i slutänden i en mer exakt och sammanhängande textgenerering.
RAG Experiment Accelerator använder ett kommandoradsgränssnitt, så att du enkelt kan experimentera med olika inbäddningsmodeller, förfina segmenteringsstrategier och utvärdera olika sökmetoder för att frigöra hela potentialen i ditt RAG-system. Det gör att du kan fokusera på kärnaspekterna av RAG-utveckling med hjälp av en enkel konfiguration för hyperparameterjustering.
Ramverket ger också omfattande stöd för konfiguration av språkmodeller. Det här stödet hjälper dig att hitta den perfekta balansen mellan modellkomplexitet och generationskvalitet. Det här verktyget hjälper dig att effektivisera experimenteringsprocessen, spara tid och avsevärt förbättra prestandan för dina RAG-modeller.
RAG med Vision Application Framework
Mycket av vägledningen i den här artikeln om att arbeta med media i din RAG-lösning kom från ett annat ingenjörsteam som arbetar med Microsofts främsta kunder. Det här teamet skrev ett ramverk som kallas RAG med Vision Application Framework. Det här ramverket tillhandahåller en Python-baserad RAG-pipeline som bearbetar både text- och bildinnehåll från MHTML-dokument.
Ramverket läser in, delar och berikar text och bilder från MHTML-filer. Sedan matas bitarna in i Azure AI Sökning. Ramverket implementerar cachelagring för bildberikning för bearbetning och kostnadseffektivitet. Ramverket omfattar även utvärdering som en del av pipelinen.
Bidragsgivare
Den här artikeln underhålls av Microsoft. Den skrevs ursprungligen av följande deltagare.
- Raouf Aliouat | Programvarutekniker II
- Rob Bagby | Innehållsledare för huvudarkitekturcenter
- Paul Butler | Programvarutekniker
- Prabal Deb | Huvudprogramtekniker
- Soubhi Hadri | Senior Data Scientist
- Ritesh Modi | Huvudtekniker
- Ryan Pfalz | Senior teknisk programchef
- Mahdi Setayesh | Huvudprogramtekniker
- Randy Thurman | Huvudarkitekt för AI Cloud Solution