Dela via


Utforma och utveckla en RAG-lösning

Mönstret Retrieval-Augmented Generation (RAG) är en branschstandardmetod för att skapa program som använder språkmodeller för att bearbeta specifika eller proprietära data som modellen inte redan känner till. Arkitekturen är enkel, men att designa, experimentera med och utvärdera RAG-lösningar som passar in i den här arkitekturen omfattar många komplexa överväganden som drar nytta av en rigorös, vetenskaplig metod.

Den här artikeln är introduktionen till en serie. Varje artikel i serien beskriver en specifik fas i RAG-lösningsdesignen.

De andra artiklarna i den här serien beskriver följande överväganden:

  • Så här avgör du vilka testdokument och frågor som ska användas under utvärderingen
  • Så här väljer du en segmenteringsstrategi
  • Så här bestämmer du vilka segment du ska berika och hur du berikar dem
  • Så här väljer du rätt inbäddningsmodell
  • Så här konfigurerar du sökindexet
  • Hur du avgör vilka sökningar du bör utföra, till exempel vektor-, fulltext-, hybrid- och manuella flersökningar
  • Utvärdera varje steg

RAG-arkitektur

diagram som visar arkitekturen på hög nivå för en RAG-lösning, inklusive begärandeflödet och datapipelinen.

RAG-programflöde

Följande arbetsflöde beskriver ett flöde på hög nivå för ett RAG-program.

  1. Användaren utfärdar en fråga i ett intelligent programanvändargränssnitt.
  2. Det intelligenta programmet gör ett API-anrop till en orkestrerare. Du kan implementera orkestratorn med verktyg eller plattformar som Semantic Kernel, Azure Machine Learning prompt flow eller LangChain.
  3. Orchestrator avgör vilken sökning som ska utföras på Azure AI Search och utfärdar frågan.
  4. Orchestratorn paketerar de översta N resultaten från sökfrågan. Den paketar de främsta resultaten och frågan som kontext i en prompt och skickar uppmaningen till språkmodellen. Orchestrator returnerar svaret till den intelligenta applikationen för användaren att läsa.

RAG-datapipelineflöde

Följande arbetsflöde beskriver ett flöde på hög nivå för en datapipeline som tillhandahåller grunddata för ett RAG-program.

  1. Dokument skickas eller hämtas till en datapipeline.
  2. Datapipelinen bearbetar varje dokument individuellt genom att utföra följande steg:
    1. Segmentdokument: Delar upp dokumentet i semantiskt relevanta delar som helst har en enda idé eller ett begrepp.
    2. Berika segment: Lägger till metadatafält som pipelinen skapar baserat på innehållet i segmenten. Datapipelinen kategoriserar metadata i diskreta fält, till exempel rubrik, sammanfattning och nyckelord.
    3. Bädda in segment: Använder en inbäddningsmodell för att vektorisera segmentet och andra metadatafält som används för vektorsökningar.
    4. Spara segment: Lagrar segmenten i sökindexet.

ÖVERVÄGANDEN FÖR RAG-design och utvärdering

Du måste fatta olika implementeringsbeslut när du utformar din RAG-lösning. Följande diagram illustrerar några av de frågor som du bör ställa när du fattar dessa beslut.

diagram som visar arkitekturen på hög nivå för en RAG-lösning, inklusive de frågor som du bör ställa när du utformar lösningen.

Följande lista innehåller en kort beskrivning av vad du bör göra under varje fas i RAG-lösningsutvecklingen.

  • Under förberedelsefasenbör du:

    • Fastställa lösningsdomänen. Definiera tydligt affärskraven för RAG-lösningen.
    • Samla in representativa testdokument. Samla in testdokument för din RAG-lösning som är representativ för din dokumentsamling.
    • Samla in testfrågor. Samla in information och testa frågor och generera syntetiska frågor och frågor som dina dokument inte täcker.
  • Under segmenteringsfasenbör du:

    • Förstå segmentering av ekonomi. Förstå vilka faktorer du bör tänka på när du utvärderar den totala kostnaden för segmenteringslösningen för textsamlingen.
    • Utför dokumentanalys. Ställ följande frågor som hjälper dig att fatta beslut när du analyserar en dokumenttyp:
      • Vilket innehåll i dokumentet vill du ignorera eller exkludera?
      • Vilket innehåll vill du samla in i segment?
      • Hur vill du dela upp innehållet?
    • Förstå segmenteringsmetoder. Förstå de olika metoderna för segmentering, inklusive meningsbaserade, fasta och anpassade metoder eller med hjälp av språkmodellförstoring, dokumentlayoutanalys och maskininlärningsmodeller.
    • Förstå hur dokumentstrukturen påverkar segmentering. Välj en segmenteringsmetod baserat på den grad av struktur som dokumentet har.
  • Under segmentberikningsfasenbör du:

    • Rensa bitar. Implementera rengöringsmetoder för att eliminera skillnader som inte påverkar textens innebörd. Den här metoden stöder närhetsmatchningar.
    • Utöka bitar. Överväg att utöka segmentdata med vanliga metadatafält och förstå deras potentiella användning i sökningen. Lär dig mer om vanliga verktyg eller tekniker för att generera metadatainnehåll.
  • Under inbäddningsfasen bör du:

    • Förstå vikten av inbäddningsmodellen. En inbäddningsmodell kan avsevärt påverka relevansen för dina vektorsökresultat.
    • Välj rätt inbäddningsmodell för ditt användningsfall.
    • Utvärdera inbäddningsmodeller. Utvärdera inbäddningsmodeller genom att visualisera inbäddningar och beräkna inbäddningsavstånd.
  • Under informationshämtningsfasen för bör du:

    • Skapa ett sökindex. Tillämpa lämpliga vektorsökningskonfigurationer på dina vektorfält.
    • Förstå sökalternativ. Överväg de olika typerna av sökningar, inklusive vektor, fulltext, hybrid och manuella flera sökningar. Lär dig mer om hur du delar upp en fråga i underfrågor och filtrerar frågor.
    • Utvärdera sökningar. Använd metoder för hämtningsutvärdering för att utvärdera din söklösning.
  • Under utvärderingsfasen för språkmodellen i ett helhetsperspektiv, bör du:

    • Förstå mått för utvärdering av språkmodeller. Det finns flera mått, inklusive grund, fullständighet, användning och relevans, som du kan använda för att utvärdera språkmodellens svar.
    • Förstå likhets- och utvärderingsmått. Du kan använda likhets- och utvärderingsmått för att utvärdera din RAG-lösning.
    • Förstå vikten av dokumentation, rapportering och aggregering. Dokumentera hyperparametrar och utvärderingsresultat. Aggregera resultatet från flera frågor och visualisera resultatet.
    • Använd RAG-experimentacceleratorn. Du kan använda github-lagringsplatsen RAG Experiment Accelerator för att hjälpa ditt team att hitta de bästa strategierna för RAG-implementering genom att köra flera experiment, bevara och utvärdera resultaten.

Strukturerad metod

På grund av antalet steg och variabler är det viktigt att du följer en strukturerad utvärderingsprocess för din RAG-lösning. Utvärdera resultatet av varje steg och gör ändringar baserat på dina krav. Du bör utvärdera varje steg separat för optimering, men kom ihåg att slutresultatet är vad dina kunder upplever. Se till att du förstår alla steg i den här processen innan du fastställer dina egna godkännandekriterier för varje steg.

Bidragsgivare

Den här artikeln underhålls av Microsoft. Texten skrevs ursprungligen av följande deltagare.

Huvudförfattare:

Om du vill se icke-offentliga LinkedIn-profiler loggar du in på LinkedIn.

Nästa steg