Dela via


Skapa avancerade hämtningsförhöjda generationssystem

I den här artikeln utforskas retrieval-förstärkt generering (RAG) på djupet. Vi beskriver det arbete och de överväganden som krävs för att utvecklare ska kunna skapa en produktionsklar RAG-lösning.

Om du vill veta mer om två alternativ för att skapa ett "chatta över dina data"-program, ett av de vanligaste användningsfallen för generativ AI i företag, kan du läsa Utöka LLM med RAG eller finjustera.

Följande diagram visar stegen eller faserna i RAG:

diagram som visar ett enkelt RAG-flöde, med rutor som representerar steg eller processer och pilar som ansluter varje ruta.

Den här skildringen kallas naiva RAG-. Det är ett användbart sätt att först förstå de mekanismer, roller och ansvarsområden som krävs för att implementera ett RAG-baserat chattsystem.

Men en verklig implementering har många fler förbearbetnings- och efterbearbetningssteg för att förbereda artiklar, frågor och svar för användning. Följande diagram är en mer realistisk skildring av en RAG, som ibland kallas avancerad RAG-:

diagram som visar det avancerade RAG-flödet av logik som en serie rutor med pilar mellan dem.

Den här artikeln innehåller ett konceptuellt ramverk för att förstå förbearbetnings- och efterbearbetningsfaserna i ett verkligt RAG-baserat chattsystem:

  • Inmatningsfas
  • Slutsatsdragningspipelinefas
  • Utvärderingsfas

Inmatning

Inmatning handlar främst om att lagra organisationens dokument så att de enkelt kan hämtas för att besvara en användares fråga. Utmaningen är att se till att de delar av dokumenten som bäst matchar användarens fråga finns och används under slutsatsdragningen. Matchning utförs främst genom vektoriserade inbäddningar och en cosinélikhetssökning. Matchning underlättas dock genom att förstå innehållets natur (till exempel mönster och formulär) och dataorganisationsstrategin (strukturen för data när de lagras i vektordatabasen).

För inmatning måste utvecklare överväga följande steg:

  • Förbearbetning och extrahering av innehåll
  • Segmenteringsstrategi
  • Segmenteringsorganisation
  • Uppdateringsstrategi

Förbearbetning och extrahering av innehåll

Rent och korrekt innehåll är ett av de bästa sätten att förbättra den övergripande kvaliteten på ett RAG-baserat chattsystem. För att få rent och korrekt innehåll börjar du med att analysera formen och formen på de dokument som ska indexeras. Överensstämmer dokumenten med angivna innehållsmönster som dokumentation? Om inte, vilka typer av frågor kan dokumenten besvara?

Skapa åtminstone ett minimum antal steg i inmatningspipelinen för att:

  • Standardisera textformat
  • Hantera specialtecken
  • Ta bort orelaterat, inaktuellt innehåll
  • Konto för versionsinnehåll
  • Konto för innehållsupplevelse (flikar, bilder, tabeller)
  • Extrahera metadata

En del av den här informationen (till exempel metadata) kan vara användbar om den sparas med dokumentet i vektordatabasen som ska användas under hämtnings- och utvärderingsprocessen i slutsatsdragningspipelinen. Det kan också kombineras med textsegmentet för att påverka segmentets vektorrepresentation.

Segmenteringsstrategi

Som utvecklare måste du bestämma hur du ska dela upp ett större dokument i mindre segment. Segmentering kan förbättra relevansen för det kompletterande innehåll som skickas till LLM för att korrekt besvara användarfrågor. Tänk också på hur du använder segmenten efter hämtningen. Systemdesigners bör undersöka vanliga branschtekniker och experimentera lite. Du kan till och med testa din strategi i en begränsad kapacitet i din organisation.

Utvecklare måste tänka på:

  • Storleksoptimering av segment: Bestäm den idealiska segmentstorleken och hur du anger ett segment. Efter avsnitt? Efter stycke? Efter mening?
  • Överlappande och glidande fönstersegment: Avgör om innehållet ska delas upp i diskreta segment eller överlappar segmenten? Du kan till och med göra båda, i en skjutfönsterdesign.
  • Small2Big: När segmentering görs på en detaljerad nivå som en enda mening, är innehållet organiserat så att det är lätt att hitta de närliggande meningarna eller stycket som innehåller meningen? Om du hämtar den här informationen och skickar den till LLM kan det ge den mer kontext för att besvara användarfrågor. Mer information finns i nästa avsnitt.

Segmenteringsorganisation

I ett RAG-system är strategiskt ordnande av data i vektordatabasen en nyckel till effektiv hämtning av relevant information för att utöka genereringsprocessen. Här är de typer av indexerings- och hämtningsstrategier som du kan överväga:

  • hierarkiska index: Den här metoden omfattar att skapa flera lager med index. Ett toppnivåindex (ett sammanfattningsindex) begränsar snabbt sökutrymmet till en delmängd av potentiellt relevanta segment. Ett index på andra nivån (ett segmentindex) ger mer detaljerade pekare till faktiska data. Den här metoden kan avsevärt påskynda hämtningsprocessen eftersom den minskar antalet poster som ska genomsökas i det detaljerade indexet genom att först filtrera igenom sammanfattningsindexet.
  • Specialiserade index: Beroende på typen av data och relationerna mellan segment kan du använda specialiserade index som grafbaserade databaser eller relationsdatabaser:
    • Grafbaserade index är användbara när segmenten har sammankopplad information eller relationer som kan förbättra hämtningen, till exempel källhänvisningsnätverk eller kunskapsdiagram.
    • Relationsdatabaser kan vara effektiva om segmenten är strukturerade i tabellformat. Använd SQL-frågor för att filtrera och hämta data baserat på specifika attribut eller relationer.
  • Hybridindex: En hybridmetod kombinerar flera indexeringsmetoder för att tillämpa sina styrkor på din övergripande strategi. Du kan till exempel använda ett hierarkiskt index för inledande filtrering och ett grafbaserat index för att dynamiskt utforska relationer mellan segment under hämtningen.

Justeringsoptimering

Om du vill förbättra relevansen och noggrannheten för de hämtade segmenten justerar du dem nära de fråge- eller frågetyper som de svarar på. En strategi är att generera och infoga en hypotetisk fråga för varje segment som representerar den fråga som segmentet passar bäst för att besvara. Detta hjälper på flera sätt:

  • Förbättrad matchning: Under hämtningen kan systemet jämföra den inkommande frågan med dessa hypotetiska frågor för att hitta den bästa matchningen för att förbättra relevansen för segment som hämtas.
  • Träningsdata för maskininlärningsmodeller: Dessa parningar av frågor och segment kan vara träningsdata för att förbättra maskininlärningsmodellerna som är de underliggande komponenterna i RAG-systemet. RAG-systemet lär sig vilka typer av frågor som bäst besvaras av varje segment.
  • Direktfrågehantering: Om en riktig användarfråga matchar en hypotetisk fråga kan systemet snabbt hämta och använda motsvarande segment och påskynda svarstiden.

Varje dels hypotetiska fråga fungerar som en etikett som vägleder sökalgoritmen, så den är mer fokuserad och sammanhangsmedveten. Den här typen av optimering är användbar när segmenten täcker en mängd olika informationsämnen eller typer.

Uppdatera strategier

Om din organisation indexerar dokument som uppdateras ofta är det viktigt att du underhåller en uppdaterad corpus för att säkerställa att retriever-komponenten kan komma åt den senaste informationen. Komponenten retriever är logiken i systemet som kör frågan mot vektordatabasen och sedan returnerar resultat. Här följer några strategier för att uppdatera vektordatabasen i dessa typer av system:

  • stegvisa uppdateringar:

    • Regelbundna intervall: Schemalägg uppdateringar med jämna mellanrum (till exempel varje dag eller varje vecka) beroende på hur ofta dokumentet ändras. Den här metoden säkerställer att databasen uppdateras regelbundet enligt ett känt schema.
    • Utlösarbaserade uppdateringar: Implementera ett system där en uppdatering utlöser omindexering. Ändringar eller tillägg av ett dokument initierar till exempel automatiskt omindexering i de berörda avsnitten.
  • Partiella uppdateringar:

    • Selektiv omindexering: Uppdatera endast de ändrade corpus-delarna i stället för att indexera om en hel databas. Den här metoden kan vara effektivare än fullständig omindexering, särskilt för stora datamängder.
    • Deltakodning: Lagra endast skillnaderna mellan befintliga dokument och deras uppdaterade versioner. Den här metoden minskar databearbetningsbelastningen genom att undvika behovet av att bearbeta oförändrade data.
  • Versionshantering:

    • Ögonblicksbilder: Underhålla dokument corpus-versioner vid olika tidpunkter. Den här tekniken tillhandahåller en säkerhetskopieringsmekanism som gör att systemet kan återgå till eller referera till tidigare versioner.
    • Dokumentversionskontroll: Använd ett versionskontrollsystem för att systematiskt spåra dokumentändringar för att upprätthålla ändringshistoriken och förenkla uppdateringsprocessen.
  • realtidsuppdateringar:

    • Stream-bearbetning: När informationens aktualitet är kritisk använder du dataströmbearbetningsteknologier för vektordatabasuppdateringar i realtid när ändringar görs i dokumentet.
    • Live querying: I stället för att enbart förlita sig på förindexerade vektorer använder du en realtidsdatafrågemetod för up-to-date-svar, vilket möjligen kombinerar livedata med cachelagrade resultat för effektivitet.
  • optimeringstekniker:

    • Batch-bearbetning: Batchbearbetning ackumulerar ändringar som används mindre ofta för att optimera resurser och minska kostnaderna.

    • Hybrid-metoder: Kombinera olika strategier:

      • Använd inkrementella uppdateringar för mindre ändringar.
      • Använd fullständig omindexering för större uppdateringar.
      • Dokumentera strukturella ändringar som görs i corpus.

Att välja rätt uppdateringsstrategi eller rätt kombination beror på specifika krav, inklusive:

  • Dokument corpus-storlek
  • Uppdateringsfrekvens
  • Databehov i realtid
  • Resurstillgänglighet

Utvärdera dessa faktorer baserat på behoven för det specifika programmet. Varje metod har kompromisser i komplexitet, kostnad och uppdateringssvarstid.

Slutsatsdragningspipeline

Dina artiklar är segmenterade, vektoriserade och lagrade i en vektordatabas. Nu kan du fokusera på att lösa slutförandeutmaningar.

För att få de mest exakta och effektiva slutförandena måste du ta hänsyn till många faktorer:

  • Skrivs användarens fråga på ett sätt för att få de resultat som användaren letar efter?
  • Bryter användarens fråga mot någon av organisationens principer?
  • Hur skriver du om användarens fråga för att förbättra chanserna att hitta de närmaste matchningarna i vektordatabasen?
  • Hur utvärderar du frågeresultat för att säkerställa att artikelsegmenten överensstämmer med frågan?
  • Hur utvärderar och ändrar du frågeresultat innan du skickar dem till LLM för att säkerställa att den mest relevanta informationen ingår i slutförandet?
  • Hur utvärderar du LLM:s svar för att säkerställa att LLM:s slutförande svarar på användarens ursprungliga fråga?
  • Hur ser du till att LLM:s svar följer organisationens principer?

Hela slutsatsdragningspipelinen körs i realtid. Det finns inte ett rätt sätt att utforma dina förbearbetnings- och efterbearbetningssteg. Du kommer förmodligen att välja en kombination av programmeringslogik och andra LLM-anrop. En av de viktigaste övervägandena är kompromissen mellan att skapa en så exakt och kompatibel pipeline som möjligt och den kostnad och svarstid som krävs för att få det att hända.

Nu ska vi identifiera specifika strategier i varje steg i slutsatsdragningspipelinen.

Förbearbetningssteg för frågor

Förbearbetning av frågor sker omedelbart efter att användaren har skickat sin fråga:

diagram som upprepar de avancerade RAG-stegen, med betoning på de rutor som är märkta med frågebearbetningssteg.

Målet med de här stegen är att se till att användaren ställer frågor som ligger inom systemets omfång och att förbereda användarens fråga för att öka sannolikheten för att den hittar bästa möjliga artikelsegment med hjälp av cosinélikheten eller sökningen "närmaste granne".

Principkontroll: Det här steget omfattar logik som identifierar, tar bort, flaggar eller avvisar visst innehåll. Några exempel är att ta bort personuppgifter, ta bort svordomar och identifiera "jailbreak"-försök. Jailbreaking- avser användarförsök att kringgå eller manipulera modellens inbyggda riktlinjer för säkerhet, etiska eller operativa åtgärder.

Query rewriting: Det här steget kan vara allt från att utveckla akronymer och ta bort slang till att formulera om frågan på ett mer abstrakt sätt för att extrahera övergripande begrepp och principer (återkopplingsfråga).

En variant av steg-tillbaka-frågor är Hypotetical Document Embeddings (HyDE). HyDE använder LLM för att besvara användarens fråga, skapar en inbäddning för svaret (den hypotetiska dokumentinbäddningen) och använder sedan inbäddningen för att köra en sökning mot vektordatabasen.

Underfrågor

Bearbetningssteget för underfrågor baseras på den ursprungliga frågan. Om den ursprungliga frågan är lång och komplex kan det vara användbart att programmatiskt dela upp den i flera mindre frågor och sedan kombinera alla svar.

Till exempel kan en fråga om vetenskapliga upptäckter inom fysik vara: "Vem gjorde mer betydande bidrag till modern fysik, Albert Einstein eller Niels Bohr?"

Genom att dela upp komplexa frågor i underfrågor blir de mer hanterbara:

  • Subquery 1: "Vilka är de viktigaste bidragen från Albert Einstein till modern fysik?"
  • Subquery 2: "Vilka är de viktigaste bidragen från Niels Bohr till modern fysik?"

Resultaten av dessa underfrågor beskriver de viktigaste teorierna och upptäckterna av varje fysiker. Till exempel:

  • För Einstein kan bidrag inkludera relativitetsteorin, den fotoelektriska effekten och E=mc^2.
  • För Bohr kan bidrag inkludera Bohrs modell av väteatomen, Bohrs arbete med kvantmekanik och Bohrs komplementaritetsprincip.

När dessa bidrag beskrivs kan de utvärderas för att fastställa fler underfrågor. Till exempel:

  • Subquery 3: "Hur har Einsteins teorier påverkat utvecklingen av modern fysik?"
  • Subquery 4: "Hur har Bohrs teorier påverkat utvecklingen av modern fysik?"

Dessa underfrågor utforskar varje forskares inflytande på fysiken, till exempel:

  • Hur Einsteins teorier ledde till framsteg inom kosmologi och kvantteori
  • Hur Bohrs arbete bidrog till att förstå atomstruktur och kvantmekanik

Att kombinera resultaten av dessa underfrågor kan hjälpa språkmodellen att bilda ett mer omfattande svar om vem som gjorde mer betydande bidrag till modern fysik baserat på deras teoretiska framsteg. Den här metoden förenklar den ursprungliga komplexa frågan genom att komma åt mer specifika, svarsbara komponenter och sedan syntetisera dessa resultat till ett sammanhängande svar.

Frågerouter

Din organisation kan välja att dela upp sitt innehåll i flera vektorlager eller i hela hämtningssystem. I det scenariot kan du använda en frågerouter. En frågerouter väljer den lämpligaste databasen eller indexet för att ge de bästa svaren på en specifik fråga.

En frågerouter fungerar vanligtvis vid en tidpunkt när användaren har formulerat frågan, men innan den skickar frågan till hämtningssystem.

Här är ett förenklat arbetsflöde för en frågerouter:

  1. Frågeanalys: LLM eller en annan komponent analyserar den inkommande frågan för att förstå dess innehåll, kontext och vilken typ av information som sannolikt behövs.
  2. Indexval: Baserat på analysen väljer frågeroutern ett eller flera index från potentiellt flera tillgängliga index. Varje index kan optimeras för olika typer av data eller frågor. Vissa index kan till exempel vara mer lämpade för faktafrågor. Andra index kan vara utmärkta när det gäller att tillhandahålla åsikter eller subjektivt innehåll.
  3. Query dispatch: Frågan skickas till det valda indexet.
  4. Resultatsammansättning: Svar från de valda indexen hämtas och eventuellt aggregeras eller bearbetas ytterligare för att bilda ett omfattande svar.
  5. Answer generation: Det sista steget innebär att generera ett sammanhängande svar baserat på den hämtade informationen, eventuellt integrera eller syntetisera innehåll från flera källor.

Din organisation kan använda flera hämtningsmotorer eller index för följande användningsfall:

  • Specialisering av datatyp: Vissa index kan specialisera sig på nyhetsartiklar, andra i akademiska artiklar och ännu andra i allmänt webbinnehåll eller specifika databaser som för medicinsk eller juridisk information.
  • optimering av frågetyp: Vissa index kan vara optimerade för snabba faktiska sökningar (till exempel datum eller händelser). Andra kan vara bättre att använda för komplexa resonemangsuppgifter eller för frågor som kräver djup domänkunskap.
  • Algoritmiska skillnader: Olika hämtningsalgoritmer kan användas i olika motorer, till exempel vektorbaserade likhetssökningar, traditionella nyckelordsbaserade sökningar eller mer avancerade semantiska förståelsemodeller.

Föreställ dig ett RAG-baserat system som används i en medicinsk rådgivningskontext. Systemet har åtkomst till flera index:

  • Ett medicinskt forskningsdokumentindex optimerat för detaljerade och tekniska förklaringar
  • Ett index för kliniska fallstudier som ger verkliga exempel på symtom och behandlingar
  • Ett allmänt hälsoinformationsindex för grundläggande frågor och information om folkhälsan

Om en användare ställer en teknisk fråga om de biokemiska effekterna av ett nytt läkemedel kan frågeroutern prioritera indexet för medicinsk forskning på grund av dess djup och tekniska fokus. För en fråga om typiska symtom på en vanlig sjukdom kan dock det allmänna hälsoindexet väljas för sitt breda och lättförstålliga innehåll.

Steg för bearbetning efter hämtning

Bearbetning efter hämtning sker när komponenten retriever hämtar relevanta innehållssegment från vektordatabasen:

diagram som upprepar de avancerade RAG-stegen, med betoning på rutan märkt steg för bearbetning efter informationshämtning.

När kandidatinnehållssegment har hämtats är nästa steg att verifiera artikelsegmentets användbarhet när man förstärker LLM-uppmaningen innan du förbereder uppmaningen som ska visas för LLM.

Här följer några viktiga aspekter att tänka på:

  • Om du inkluderar för mycket tilläggsinformation kan det leda till att du ignorerar den viktigaste informationen.
  • Att inkludera irrelevant information kan påverka svaret negativt.

Ett annat övervägande är nålen i en höstack problem, en term som refererar till en känd egenhet hos vissa LLM där innehållet i början och slutet av en fråga har större vikt till LLM än innehållet i mitten.

Tänk slutligen på LLM:s maximala längd på kontextfönstret och antalet token som krävs för att slutföra utomordentligt långa uppmaningar (särskilt för frågor i stor skala).

För att hantera dessa problem kan en pipeline för bearbetning efter hämtning innehålla följande steg:

  • Filtreringsresultat: I det här steget kontrollerar du att artikelsegmenten som returneras av vektordatabasen är relevanta för frågan. Om de inte är det ignoreras resultatet när LLM-prompten formuleras.
  • Rangordna om: Rangordna artikelsegmenten som hämtas från vektorlagret för att säkerställa att relevant information ligger nära kanterna (början och slutet) av prompten.
  • Promptkomprimering: Använd en liten, billig modell för att komprimera och sammanfatta flera artikelbitar i en enda komprimerad prompt innan du skickar promten till LLM.

Bearbetningssteg efter slutförande

Bearbetning efter slutförande sker efter att användarens fråga och alla innehållssegment har skickats till LLM:

diagram som upprepar de avancerade RAG-stegen, med betoning på rutan märkta bearbetningssteg efter slutförande.

Noggrannhetsverifiering sker efter att LLM:s fråga har slutförts. En pipeline för bearbetning efter slutförande kan innehålla följande steg:

  • Faktakontroll: Avsikten är att identifiera specifika anspråk som görs i artikeln som presenteras som fakta och sedan kontrollera dessa fakta för noggrannhet. Om faktakontrollsteget misslyckas kan det vara lämpligt att fråga om LLM i hopp om att få ett bättre svar eller returnera ett felmeddelande till användaren.
  • Principkontroll: Den sista försvarslinjen för att säkerställa att svaren inte innehåller skadligt innehåll, vare sig för användaren eller för organisationen.

Utvärdering

Att utvärdera resultatet av ett icke-förutbestämt system är inte lika enkelt som att köra enhetstester eller integrationstester som de flesta utvecklare känner till. Du måste ta hänsyn till flera faktorer:

  • Är användarna nöjda med de resultat de får?
  • Får användarna korrekta svar på sina frågor?
  • Hur samlar du in användarfeedback? Har du några principer som begränsar vilka data du kan samla in om användardata?
  • För diagnos av otillfredsställande svar, har du insyn i allt arbete som gick till att besvara frågan? Har du en logg över varje steg i slutsatsdragningspipelinen för indata och utdata så att du kan utföra rotorsaksanalys?
  • Hur kan du göra ändringar i systemet utan regression eller försämring av resultat?

Samla in och agera på feedback från användare

Som du beskrev tidigare kan du behöva samarbeta med organisationens sekretessteam för att utforma mekanismer för feedbackinsamling, telemetri och loggning för kriminalteknik och rotorsaksanalys av en frågesession.

Nästa steg är att utveckla en utvärderingspipeline. En utvärderingspipeline hjälper till med komplexiteten och den tidsintensiva karaktären av att analysera ordagrant feedback och de bakomliggande orsakerna till svaren från ett AI-system. Den här analysen är avgörande eftersom den handlar om att undersöka varje svar för att förstå hur AI-frågan producerade resultaten, kontrollera lämpligheten i de innehållssegment som används i dokumentationen och de strategier som används för att dela upp dessa dokument.

Det handlar också om att överväga eventuella extra förbearbetnings- eller efterbearbetningssteg som kan förbättra resultaten. Den här detaljerade undersökningen avslöjar ofta innehållsluckor, särskilt när det inte finns någon lämplig dokumentation för svar på en användares fråga.

Det är viktigt att skapa en utvärderingspipeline för att hantera omfattningen av dessa uppgifter på ett effektivt sätt. En effektiv pipeline använder anpassade verktyg för att utvärdera mått som approximerar kvaliteten på svaren från AI. Det här systemet effektiviserar processen för att avgöra varför ett specifikt svar gavs på en användares fråga, vilka dokument som användes för att generera det svaret och effektiviteten i den slutsatsdragningspipeline som bearbetar frågorna.

Gyllene datauppsättning

En strategi för att utvärdera resultatet av ett icke-förutbestämt system som ett RAG-chattsystem är att använda en gyllene datamängd. En gyllene datauppsättning är en kuraterad uppsättning frågor och godkända svar, metadata (t.ex. ämne och typ av fråga), referenser till källdokument som kan fungera som grundsanning för svar och till och med variationer (olika fraser för att fånga mångfalden av hur användare kan ställa samma frågor).

En gyllene datauppsättning representerar "bästa scenariot". Utvecklare kan utvärdera systemet för att se hur bra det presterar och sedan utföra regressionstester när de implementerar nya funktioner eller uppdateringar.

Bedöma skada

Skademodellering är en metod som syftar till att förutse potentiella skador, upptäcka brister i en produkt som kan utgöra risker för individer och utveckla proaktiva strategier för att minska sådana risker.

Ett verktyg som är utformat för att bedöma teknikens inverkan, särskilt AI-system, skulle innehålla flera viktiga komponenter baserat på principerna för skademodellering enligt beskrivningen i de resurser som tillhandahålls.

Viktiga funktioner i ett verktyg för utvärdering av skador kan vara:

  • Intressentidentifiering: Verktyget kan hjälpa användare att identifiera och kategorisera olika intressenter som påverkas av tekniken, inklusive direkta användare, indirekt berörda parter och andra enheter, till exempel framtida generationer eller icke-mänskliga faktorer, till exempel miljöproblem.

  • Skadekategorier och beskrivningar: Verktyget kan innehålla en omfattande lista över potentiella skador, till exempel integritetsförlust, känslomässigt lidande eller ekonomiskt utnyttjande. Verktyget kan vägleda användaren genom olika scenarier, illustrera hur tekniken kan orsaka dessa skador och hjälpa till att utvärdera både avsedda och oavsiktliga konsekvenser.

  • Bedömning av allvarlighetsgrad och sannolikhet: Verktyget kan hjälpa användarna att bedöma allvarlighetsgraden och sannolikheten för varje identifierad skada. Användaren kan prioritera problem som ska åtgärdas först. Exempel är kvalitativa utvärderingar som stöds av data där de är tillgängliga.

  • Riskreduceringsstrategier: Verktyget kan föreslå potentiella åtgärdsstrategier när det har identifierat och utvärderat skador. Exempel är ändringar i systemdesignen, tillägg av skyddsåtgärder och alternativa tekniska lösningar som minimerar identifierade risker.

  • Feedbackmekanismer: Verktyget bör innehålla mekanismer för att samla in feedback från intressenter så att skadeutvärderingsprocessen är dynamisk och svarar mot ny information och nya perspektiv.

  • Dokumentation och rapportering: För transparens och ansvarsskyldighet kan verktyget underlätta detaljerade rapporter som dokumenterar skadebedömningsprocessen, resultaten och potentiella riskreduceringsåtgärder som vidtas.

Dessa funktioner kan hjälpa dig att identifiera och minimera risker, men de hjälper dig också att utforma mer etiska och ansvarsfulla AI-system genom att överväga ett brett spektrum av effekter från början.

Mer information finns i följande artiklar:

Testa och verifiera skyddsåtgärderna

Den här artikeln beskriver flera processer som syftar till att minska risken för att ett RAG-baserat chattsystem utnyttjas eller komprometteras. Red-teaming spelar en avgörande roll för att säkerställa att motåtgärderna är effektiva. Red-teaming innebär att simulera åtgärder från en potentiell angripare för att upptäcka potentiella svagheter eller sårbarheter i programmet. Detta tillvägagångssätt är särskilt viktigt för att ta itu med den betydande risken för jailbreaking.

Utvecklare måste noggrant utvärdera RAG-baserade chattsystemskydd i olika riktlinjescenarier för att effektivt testa och verifiera dem. Den här metoden garanterar inte bara robusthet, utan hjälper dig också att finjustera systemets svar för att strikt följa definierade etiska standarder och operativa procedurer.

Slutliga överväganden för programdesign

Här är en kort lista över saker att tänka på och andra lärdomar från den här artikeln som kan påverka dina beslut om programdesign:

  • Bekräfta den icke-terministiska karaktären hos generativ AI i din design. Planera för variabilitet i utdata och konfigurera mekanismer för att säkerställa konsekvens och relevans i svar.
  • Utvärdera fördelarna med förbearbetning av användarfrågor mot den potentiella ökningen av svarstider och kostnader. Om du förenklar eller ändrar prompter innan de skickas kan svarskvaliteten förbättras, men det kan ge svarscykeln komplexitet och tid.
  • För att förbättra prestandan undersöker du strategier för parallellisering av LLM-begäranden. Den här metoden kan minska svarstiden, men kräver noggrann hantering för att undvika ökad komplexitet och potentiella kostnadskonsekvenser.

Om du vill börja experimentera med att skapa en generativ AI-lösning omedelbart rekommenderar vi att du tar en titt på Kom igång med chatt med hjälp av ditt eget dataexempel för Python. Självstudien är också tillgänglig för .NET, Javaoch JavaScript.