AI-modeller og platforme
Forbedring af Retrieval-Augmented Language Models: Selv-Reasoning og Adaptiv Forstærkning til Konversationsystemer

Af
Aayush Mittal Mittal
Store sprogmodeller har ofte svært ved at levere præcise og aktuelle oplysninger, især i komplekse videnbaserede opgaver. For at overvinde disse udfordringer undersøger forskere metoder til at forbedre disse modeller ved at integrere dem med eksterne datakilder.
To nye tilgange, der er opstået i dette felt, er selv-reasoning-rammer og adaptiv retrieval-forstærket generation til konversationsystemer. I denne artikel dykker vi dybt ned i disse innovative teknikker og udforsker, hvordan de skyder grænserne for, hvad der er muligt med sprogmodeller.
Løftet og Fælderne ved Retrieval-Augmented Language Models
Lad os forstå begrebet Retrieval-Augmented Language Models (RALMs). Det centrale idé bag RALMs er at kombinere den store viden og sprogforståelse fra forudtrænede sprogmodeller med evnen til at få adgang til og inkorporere eksterne, opdaterede oplysninger under inferens.
Her er en simpel illustration af, hvordan en grundlæggende RALM måske fungerer:
- En bruger stiller et spørgsmål: “Hvad var udfaldet af OL 2024?”
- Systemet henter relevante dokumenter fra en ekstern videnbase.
- LLM’en behandler spørgsmålet sammen med de hentede oplysninger.
- Modellen genererer et svar baseret på både dens interne viden og de eksterne data.
Denne tilgang har vist stor løfte i forbedringen af nøjagtigheden og relevansen af LLM-udgangene, især for opgaver, der kræver adgang til aktuelle oplysninger eller domænespecifik viden. Men RALMs er ikke uden udfordringer. To centrale problemer, som forskere har kæmpet med, er:
- Pålidelighed: Hvordan kan vi sikre, at de hentede oplysninger er relevante og nyttige?
- Sporbarhed: Hvordan kan vi gøre modellens resoneringproces mere gennemsigtig og verificerbar?
Seneste forskning har foreslået innovative løsninger til disse udfordringer, som vi vil udforske i dybden.
Selv-Reasoning: Forbedring af RALMs med Eksplicitte Reasoning-Trajecter
Dette er arkitekturen og processen bag retrieval-forstærkede LLM’er, med fokus på en ramme kaldet Selv-Reasoning. Denne tilgang bruger trajecter til at forbedre modellens evne til at resonere over hentede dokumenter.
Når et spørgsmål stilles, hentes relevante dokumenter og behandles gennem en række resoneringstrin. Selv-Reasoning-mekanismen anvender bevis-bevidste og trajectanalyseprocesser til at filtrere og syntetisere oplysninger, før der genereres et endeligt svar. Denne metode forbedrer ikke kun nøjagtigheden af udgangen, men sikrer også, at resoneringen bag svarene er gennemsigtig og sporbar.
I de ovenstående eksempler, som f.eks. bestemmelse af udgivelsesdatoen for filmen “Catch Me If You Can” eller identifikation af kunstnerne, der malede loftet i Firenze-katedralen, filtrerer modellen effektivt gennem de hentede dokumenter for at producere præcise, kontekst-baserede svar.
Dette billede præsenterer en sammenligning af forskellige LLM-varianter, herunder LLaMA2-modeller og andre retrieval-forstærkede modeller over opgaver som NaturalQuestions, PopQA, FEVER og ASQA. Resultaterne er opdelt mellem baselines uden henting og dem, der er forbedret med hentningsfunktioner.
Dette billede præsenterer en situation, hvor en LLM er opgaven at give forslag baseret på brugerforespørgsler, og demonstrerer, hvordan brugen af eksterne kundskaber kan påvirke kvaliteten og relevansen af svarene. Diagrammet understreger to tilgange: en, hvor modellen bruger en stump kundskab, og en, hvor den ikke gør. Sammenligningen viser, hvordan inkorporering af specifikke oplysninger kan tilpasse svarene til at være mere i overensstemmelse med brugerens behov, og giver dybde og nøjagtighed, som ellers kunne mangle i en ren generativ model.
En banebrydende tilgang til at forbedre RALMs er introduktionen af selv-reasoning-rammer. Det centrale idé bag denne metode er at udnytte sprogmodellens egne evner til at generere eksplicitte resoneringstrajecter, som kan bruges til at forbedre kvaliteten og pålideligheden af dens udgang.
Lad os bryde ned de centrale komponenter af en selv-reasoning-ramme:
- Relevans-Bevidst Proces (RAP)
- Bevis-Bevidst Selektiv Proces (EAP)
- Trajectanalyse-Proces (TAP)
Relevans-Bevidst Proces (RAP)
RAP er designet til at tackle en af de grundlæggende udfordringer for RALMs: at bestemme, om de hentede dokumenter er relevante for det givne spørgsmål. Her er, hvordan det fungerer:
- Systemet henter en samling potentielt relevante dokumenter ved hjælp af en hentningsmodel (f.eks. DPR eller Contriever).
- Sprogmodellen instrueres herefter til at bedømme relevansen af disse dokumenter i forhold til spørgsmålet.
- Modellen genererer eksplicit årsager til, hvorfor dokumenterne anses for relevante eller irrelevante.
For eksempel, givet spørgsmålet “Hvornår blev Eiffeltårnet bygget?”, kunne RAP producere en udgang som denne:
Relevant: Sandt
Relevant Årsag: De hentede dokumenter indeholder specifikke oplysninger om Eiffeltårnets byggeår, herunder starten i 1887 og færdiggørelsen i 1889.Denne proces hjælper med at filtrere irrelevante oplysninger tidligt i processen og forbedrer således modellens svar.
Bevis-Bevidst Selektiv Proces (EAP)
EAP tager relevansbedømmelsen et skridt videre ved at instruere modellen til at identificere og citerer specifikke beviser fra de relevante dokumenter. Denne proces ligner, hvordan mennesker ville approcere en forskningstask, ved at vælge nøgleudsagn og forklare deres relevans. Her er, hvad EAP’s udgang kunne se ud som:
Citer indhold: "Bygningen af Eiffeltårnet startede den 28. januar 1887, og blev færdiggjort den 31. marts 1889."
Årsag til at citerer: Denne sætning giver de præcise start- og slutdatoer for Eiffeltårnets bygning, og besvarer direkte spørgsmålet om, hvornår det blev bygget.Ved at citerer kilder og forklare relevansen af hver bevis forbedrer EAP sporbarheden og fortolkningen af modellens udgang.
Trajectanalyse-Proces (TAP)
TAP er den endelige fase af selv-reasoning-rammen, hvor modellen konsoliderer alle resoneringstrajecter genereret i de foregående trin. Den analyserer disse trajecter og producerer en kort sammenfatning samt et endeligt svar. TAP’s udgang kunne se ud som følger:
Analyse: Eiffeltårnet blev bygget mellem 1887 og 1889. Bygningen startede den 28. januar 1887, og blev færdiggjort den 31. marts 1889. Denne information understøttes af multiple pålidelige kilder, der giver konsistente datoer for tårnets byggeperiode.
Svar: Eiffeltårnet blev bygget fra 1887 til 1889.
Denne proces tillader modellen at give både en detaljeret forklaring af sin resonering og et kort svar, der tilgodeser forskellige brugerbehov.
Implementering af Selv-Reasoning i Praksis
For at implementere denne selv-reasoning-ramme har forskere udforsket forskellige tilgange, herunder:
- Prompting af forudtrænede sprogmodeller
- Fine-tuning af sprogmodeller med parameter-effektive teknikker som QLoRA
- Udvikling af specialiserede neurale arkitekturer, såsom multi-head attention-modeller
Hver af disse tilgange har sine egne styrker og svagheder. For eksempel er prompting-tilgangen relativt simpel at implementere, men kan ikke altid producere konsistente resultater. Fine-tuning tilbyder en god balance mellem præstation og effektivitet, mens specialiserede arkitekturer kan give den bedste præstation, men kræver mere computermæssige ressourcer til træning.
Her er et forenklet eksempel på, hvordan du måske implementerer RAP ved hjælp af en prompting-tilgang med en sprogmodel som GPT-3:
import openai
<p>def relevance_aware_process(question, documents):</p>
prompt = f"""</p>
Spørgsmål: {question}</p>
Hentede dokumenter:</p>
{documents}</p>
<p>Opgave: Bestem, om de hentede dokumenter er relevante for at besvare spørgsmålet.</p>
Udgangsformat:</p>
Relevant: [Sandt/Falsk]</p>
Relevant Årsag: [Forklaring]</p>
Din analyse:</p>
"""</p>
response = openai.Completion.create(
engine="text-davinci-002",
prompt=prompt,
max_tokens=150
)</p>
return response.choices[0].text.strip()</p>
# Eksempel på brug
question = "Hvornår blev Eiffeltårnet bygget?"</p>
documents = "Eiffeltårnet er en jernlattetårn på Champ de Mars i Paris, Frankrig. Det er opkaldt efter ingeniøren Gustave Eiffel, hvis firma designede og byggede tårnet. Bygget fra 1887 til 1889 som indgangsboget til Verdensudstillingen i 1889, blev det initialt kritiseret af nogle af Frankrigs førende kunstnere og intellektuelle for sin design, men det er blevet et globalt kulturelt ikon for Frankrig."</p>
result = relevance_aware_process(question, documents)</p>
print(result)</p>
Adaptiv Retrieval-Forstærket Generation til Konversationsystemer
Mens selv-reasoning-rammen fokuserer på at forbedre kvaliteten og fortolkningen af enkeltstående svar, har en anden forskningsretning udforsket, hvordan man kan gøre retrieval-forstærket generation mere adaptiv i konteksten af konversationsystemer. Denne tilgang, kendt som adaptiv retrieval-forstærket generation, sigter mod at bestemme, hvornår eksterne kundskaber skal bruges i en konversation, og hvordan de kan inkorporeres effektivt.
Det centrale indsigt bag denne tilgang er, at ikke hver enkelt vending i en konversation kræver ekstern kundskabsforstærkning. I nogle tilfælde kan det at læne for meget på hentede oplysninger føre til unaturlige eller for omfattende svar. Udfordringen er således at udvikle et system, der kan dynamisk beslutte, hvornår at bruge eksterne kundskaber og hvornår at stole på modellens indre evner.
Komponenter af Adaptiv Retrieval-Forstærket Generation
For at tackle denne udfordring har forskere foreslået en ramme kaldet RAGate, der består af flere centrale komponenter:
- En binær viden-port mekanisme
- En relevans-bevidst proces
- En bevis-bevidst selektiv proces
- En trajectanalyse-proces
Den Binære Viden-Port Mekanisme
Kernen i RAGate-systemet er en binær viden-port, der beslutter, om at bruge eksterne kundskaber til en given konversationsvending. Denne port tager konteksten og muligvis de hentede kundskabsstykker i betragtning for at træffe sin beslutning.
Her er en forenklet illustration af, hvordan den binære viden-port måske fungerer:
def knowledge_gate(context, retrieved_knowledge=None):</p> # Analyser konteksten og de hentede kundskaber # Returner Sandt, hvis eksterne kundskaber skal bruges, Falsk ellers pass</p> def generate_response(context, knowledge=None):</p> if knowledge_gate(context, knowledge):</p> # Brug retrieval-forstærket generation return generate_with_knowledge(context, knowledge) else:</p> # Brug standard sprogmodel-generation return generate_without_knowledge(context)
Denne port-mekanisme giver systemet mulighed for at være mere fleksibelt og kontekst-bevidst i brugen af eksterne kundskaber.
Implementering af RAGate
Dette billede illustrerer RAGate-rammen, et avanceret system designet til at inkorporere eksterne kundskaber i LLM’er for at forbedre svargenerationen. Denne arkitektur viser, hvordan en grundlæggende LLM kan suppleres med kontekst eller kundskab, enten gennem direkte input eller ved at integrere eksterne databaser under generationsprocessen. Denne dobbelte tilgang – brug af både interne modellkapaciteter og eksterne data – giver LLM’en mulighed for at give mere præcise og kontekst-baserede svar. Denne hybride metode brobygger gapet mellem ren beregningskraft og domænespecifik ekspertise.
Dette viser performance-metrice for forskellige modelvarianter under RAGate-rammen, der fokuserer på integration af henting med parameter-effektiv finjustering (PEFT). Resultaterne understreger overlegenheden af kontekst-integrerede modeller, især de, der anvender ner-know og ner-source-embeddings.
RAGate-PEFT- og RAGate-MHA-modellerne demonstrerer betydelige forbedringer i præcision, recall og F1-scores, hvilket understreger fordelene ved at inkorporere både kontekst- og kundskabs-input. Disse finjusteringstrategier giver modellerne mulighed for at udføre bedre på kundskabsintensive opgaver, og giver en mere robust og skalerbar løsning til virkelige anvendelser.
For at implementere RAGate har forskere udforsket flere tilgange, herunder:
- Brug af store sprogmodeller med omhyggeligt udformede prompts
- Fine-tuning af sprogmodeller med parameter-effektive teknikker
- Udvikling af specialiserede neurale arkitekturer, såsom multi-head attention-modeller
Hver af disse tilgange har sine egne styrker og svagheder. For eksempel er prompting-tilgangen relativt simpel at implementere, men kan ikke altid producere konsistente resultater. Fine-tuning tilbyder en god balance mellem præstation og effektivitet, mens specialiserede arkitekturer kan give den bedste præstation, men kræver mere computermæssige ressourcer til træning.
Her er et forenklet eksempel på, hvordan du måske implementerer et RAGate-lignende system ved hjælp af en finjusteret sprogmodel:
import torch
from transformers import AutoTokenizer, AutoModelForSequenceClassification
<p>class RAGate:</p>
def __init__(self, model_name):</p>
self.tokenizer = AutoTokenizer.from_pretrained(model_name)
self.model = AutoModelForSequenceClassification.from_pretrained(model_name)</p>
<p>def should_use_knowledge(self, context, knowledge=None):</p>
inputs = self.tokenizer(context, knowledge or "", return_tensors="pt", truncation=True, max_length=512)
with torch.no_grad():</p>
outputs = self.model(**inputs)
probabilities = torch.softmax(outputs.logits, dim=1)
return probabilities[0][1].item() > 0.5 # Antag binær klassifikation (0: ingen kundskab, 1: brug kundskab)</p>
<p>class ConversationSystem:</p>
def __init__(self, ragate, lm, retriever):</p>
self.ragate = ragate
self.lm = lm
self.retriever = retriever</p>
<p>def generate_response(self, context):</p>
knowledge = self.retriever.retrieve(context)
if self.ragate.should_use_knowledge(context, knowledge):</p>
return self.lm.generate_with_knowledge(context, knowledge)
else:</p>
return self.lm.generate_without_knowledge(context)</p>
<p># Eksempel på brug
ragate = RAGate("path/to/fine-tuned/model")
lm = LanguageModel() # Din foretrukne sprogmodel
retriever = KnowledgeRetriever() # Din viden-hentningssystem</p>
<p>conversation_system = ConversationSystem(ragate, lm, retriever)</p>
<p>context = "Bruger: Hvad er hovedstaden i Frankrig?\nSystem: Hovedstaden i Frankrig er Paris.\nBruger: Fortæl mig mere om dets berømte landemærker."
response = conversation_system.generate_response(context)
print(response)</p>
Dette eksempel demonstrerer, hvordan et RAGate-lignende system kan implementeres i praksis. RAGate-klassen bruger en finjusteret model til at beslutte, om at bruge eksterne kundskaber, mens ConversationSystem-klassen orkestrerer interaktionen mellem porten, sprogmodellen og hentningen.
Udfordringer og Fremtidige Retninger
Selv om selv-reasoning-rammer og adaptiv retrieval-forstærket generation viser stor løfte, er der stadig flere udfordringer, som forskere arbejder på at tackle:
- Computermæssig Effektivitet: Begge tilgange kan være computermæssigt intensive, især når det handler om store mængder hentede oplysninger eller generation af lange resoneringstrajecter. Optimering af disse processer til realtidsapplikationer er et aktivt forskningsområde.
- Robusthed: At sikre, at disse systemer performer konsistent over en bred vifte af emner og spørgsmålstyper, er afgørende. Dette inkluderer håndtering af edge-cases og fjendtlige input, der kunne forvirre relevansbedømmelsen eller port-mekanismen.
- Flersproget og Tværsproget Støtte: At udvide disse tilgange til at fungere effektivt på tværs af multiple sprog og håndtering af tværsproget informationshenting og resonering er en vigtig fremtidig retning.
- Integration med Andre AI-Teknologier: At udforske, hvordan disse tilgange kan kombineres med andre AI-teknologier, såsom multimodale modeller eller forstærkninglæring, kunne føre til endnu mere kraftfulde og fleksible systemer.
Konklusion
Udviklingen af selv-reasoning-rammer og adaptiv retrieval-forstærket generation repræsenterer et betydeligt skridt fremad i feltet for naturlig sprogbehandling. Ved at aktivere sprogmodeller til at resonere eksplicit om de oplysninger, de bruger, og til at tilpasse deres kundskabsforstærkningsstrategier dynamisk, lover disse tilgange at gøre AI-systemer mere pålidelige, fortolkbare og kontekst-bevidste.
Da forskningen i dette område fortsætter med at udvikle sig, kan vi forvente at se disse teknikker forfinet og integreret i en bred vifte af applikationer, fra spørgsmål-svar-systemer og virtuelle assistenter til uddannelsesværktøjer og forskningshjælpemidler. Evnen til at kombinere den store viden, der er kodet i store sprogmodeller, med dynamisk hentede, opdaterede oplysninger har potentialet til at revolutionere, hvordan vi interagerer med AI-systemer og adgang til oplysninger.
Jeg har brugt de sidste fem år på at dykke ned i den fascinerende verden af Machine Learning og Deep Learning. Min passion og ekspertise har ført mig til at bidrage til over 50 forskellige software-ingeniørprojekter, med en særlig fokus på AI/ML. Min fortsatte nysgerrighed har også ført mig mod Natural Language Processing, et felt jeg er ivrig efter at udforske yderligere.
Opdag mere


Hvad er Retrieval-Augmented Generation (RAG)? Sådan svarer AI med ekstern viden


AI’s Hukommelsesproblem: Hvorfor Effektiv Lang Kontekst Ændrer Alt, og Hvad det Kræver at Gøre det Rigtigt


Hvorfor dit biomedicinske RAG gemmer modstridende oplysninger for dig


Den virkelige årsag til, at din RAG-pipeline hallucinerer


2026-prædiktion – Open Source vil ride AI’s bølge ind i dens næste gyldne alder


AI-kontrolleringsdilemmaet: Risici og løsninger




