Redigera

Dela via


Utforma och utveckla en RAG-lösning

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

RAG-mönstret (Retrieval-Augmented Generation) är en branschstandardmetod för att skapa program som använder stora språkmodeller för att resonera över specifika eller proprietära data som inte redan är kända för den stora språkmodellen. Även om arkitekturen är enkel, designar, experimenterar med och utvärderar RAG-lösningar som passar in i den här arkitekturen finns det många komplexa överväganden som drar nytta av ett rigoröst, vetenskapligt tillvägagångssätt.

Den här guiden presenteras som en serie. Varje artikel i serien beskriver en specifik fas i utformningen av RAG-lösningar.

Dessa överväganden som artiklarna i dessa guider beskriver omfattar:

  • Fastställa vilka testdokument och frågor som ska användas under utvärderingen
  • Välja en segmenteringsstrategi
  • Fastställa vad och hur du ska berika segmenten
  • Välja rätt inbäddningsmodell
  • Bestämma hur du konfigurerar sökindexet
  • Fastställa vilka sökningar du vill utföra: vektor, fulltext, hybrid, manuell multipel
  • Utvärdera varje steg

Artiklarna i den här guiden tar upp alla dessa överväganden.

RAG-arkitektur

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

Figur 1. RAG-arkitektur på hög nivå

RAG-programflöde

Följande är 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. Orchestrator kan implementeras med verktyg eller plattformar som Semantic Kernel, Azure Mašinsko učenje 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. Orchestrator-paketen de översta N resultaten från frågan, paket dem som kontext i en prompt, tillsammans med frågan, och skickar prompten till den stora språkmodellen. Orchestrator returnerar svaret till det intelligenta programmet som användaren kan läsa.

RAG-datapipelineflöde

Följande är 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 med följande steg:

    1. Segmentdokument – Dela upp dokumentet i semantiskt relevanta delar som helst har en enda idé eller ett begrepp.
    2. Berika segment – Lägger till metadatafält som skapats från innehållet i segmenten till 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. Bevarar segment – Lagrar segmenten i sökindexet.

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

Det finns en mängd olika implementeringsbeslut som du måste fatta när du utformar din RAG-lösning. Följande bild illustrerar några av dessa beslut.

Diagram som visar arkitekturen på hög nivå för en RAG-lösning, inklusive frågor som uppstår när lösningen utformas.

Figur 2. Frågor som uppstår vid utformning av RAG-lösning

Serien med artiklar i den här guiden tar upp dessa överväganden med mera.

Förberedelsefas

  • Fastställa lösningsdomän – Diskuterar vikten av att tydligt definiera affärskraven för RAG-lösningen
  • Samla in representativa testdokument – Diskuterar överväganden och vägledning om hur du samlar in testdokument för din RAG-lösning som är representativ för din corpus.
  • Samla in testfrågor – Beskriver vilken information du bör samla in tillsammans med dina testfrågor, ger vägledning om hur du genererar syntetiska frågor och frågor som dina dokument inte täcker.

Segmenteringsfas

  • Förstå segmenteringsekonomi – Diskuterar faktorerna att tänka på när du tittar på den totala kostnaden för din segmenteringslösning för din text corpus
  • Utföra dokumentanalys – Innehåller en lista med frågor som du kan ställa när du analyserar en dokumenttyp som hjälper dig att avgöra vad i dokumentet du vill ignorera eller exkludera, vad du vill samla in i segment och hur du vill segmentera
  • Förstå segmenteringsmetoder – Beskriver de olika metoderna för segmentering som meningsbaserad, fast storlek, anpassad, förstoring av stora språkmodeller, dokumentlayoutanalys med hjälp av maskininlärningsmodeller
  • Förstå hur dokumentstruktur påverkar segmentering – Beskriver hur graden av struktur som ett dokument har påverkar ditt val för en segmenteringsmetod

Segmentberikningsfas

  • Rensa segment – Diskuterar olika rengöringsmetoder som du kan implementera för att stödja närhetsmatchningar genom att eliminera potentiella skillnader som inte är material för textens semantik
  • Utöka segment – Beskriver några vanliga metadatafält som du bör överväga att utöka segmentdata med hjälp av viss vägledning om deras potentiella användning i sökning och verktyg eller tekniker som ofta används för att generera metadatainnehållet

Inbäddningsfas

  • Förstå vikten av inbäddningsmodellen – Beskriver hur en inbäddningsmodell kan ha en betydande effekt på relevansen för dina vektorsökresultat
  • Välja en inbäddningsmodell – Ger vägledning om hur du väljer en inbäddningsmodell
  • Utvärdera inbäddningsmodeller – Diskuterar två sätt att utvärdera en inbäddningsmodell: visualisera inbäddningar och beräkna inbäddningsavstånd

Informationshämtningsfas

  • Skapa sökindex – Beskriver några viktiga beslut som du måste fatta för konfigurationen för vektorsökning som gäller för vektorfält
  • Förstå sökalternativ – Ger en översikt över de typer av sökningar som du kan överväga, till exempel vektor, fulltext, hybrid och manuell multipel. Ger vägledning om att dela upp en fråga i underfrågor, filtrera frågor
  • Utvärdera sökningar – Ger vägledning om hur du utvärderar din söklösning

Utvärderingsfasen för stor språkmodell från slutpunkt till slutpunkt

  • Förstå mått för utvärdering av stora språkmodeller – Ger översikt över flera mått som du kan använda för att utvärdera de stora språkmodellernas svar, inklusive grund, fullständighet, användning och relevans
  • Förstå likhets- och utvärderingsmått – Innehåller en liten lista över likhets- och utvärderingsmått som du kan använda när du utvärderar din RAG-lösning
  • Förstå vikten av dokumentation, rapportering och aggregering – Diskuterar vikten av att dokumentera hyperparametrar tillsammans med utvärderingsresultat, aggregera resultat från flera frågor och visualisera resultaten
  • RAG-experimentacceleratorn – ger en länk till Rag Experiment Accelerator, som är ett verktyg som är utformat för att hjälpa team att snabbt hitta de bästa strategierna för RAG-implementering genom att köra flera experiment, spara och utvärdera resultaten

Strukturerad metod

På grund av antalet steg och variabler är det viktigt att utforma DIN RAG-lösning genom en strukturerad utvärderingsprocess. Utvärdera resultatet av varje steg och anpassa, med tanke på dina krav. Du bör utvärdera varje steg separat för optimering, men slutresultatet är vad som kommer att upplevas av dina användare. Var noga med att förstå alla steg i den här processen innan du fastställer dina egna godkännandekriterier för varje enskilt steg.

Deltagare

Nästa steg