Omskrivning af forespørgsler og reranking
Udforsk teknikker til at optimere brugerforespørgsler og omrangere hentede dokumenter, så de bliver mere relevante for LLM'en.
Omskrivning af forespørgsler og reranking er en gratis LLM-applikationer i produktion (RAG + vektordatabase + caching)-lektion på CoddyKit. Dette er lektion 1 af 4. Du kan læse hele lektionen gratis nedenfor — og derefter øve dig praktisk i browseren med en indbygget kodeeditor og en AI-vejleder, der er tilgængelig døgnet rundt. Den er en del af læringsforløbet i LLM-applikationer i produktion (RAG + vektordatabase + caching), og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. LLM-applikationer i produktion (RAG + vektordatabase + caching)-kurset indeholder 4 lektioner i alt.
Optimering af forespørgsler til RAG
Velkommen til avancerede RAG-teknikker! I denne lektion undersøger vi to effektive metoder, der kan gøre dit Retrieval Augmented Generation-system (RAG) endnu smartere: omskrivning af forespørgsler og omrangering.
Disse teknikker hjælper med at sikre, at din LLM får så relevante oplysninger som muligt, hvilket fører til bedre og mere nøjagtige svar.
Hvorfor rå forespørgsler ikke er gode nok
Når en bruger stiller et spørgsmål, er den oprindelige forespørgsel måske ikke perfekt til søgning i din vidensbase. Den kan være:
- For kort eller vag: Den mangler specifikke nøgleord.
- Tvetydig: Den kan have flere mulige betydninger.
- Mangler synonymer: Den bruger ikke de præcise termer, der findes i dine dokumenter.
Det kan få din søgekomponent til at hente mindre relevante dokumenter.
Forstå omskrivning af forespørgsler
Omskrivning af forespørgsler er processen med at ændre brugerens oprindelige forespørgsel før den sendes til din dokumentsøgekomponent.
Målet er at omdanne forespørgslen til et mere effektivt søgeudtryk, der med større sandsynlighed matcher relevante dokumenter i din vektordatabase.
Teknikker til omskrivning af forespørgsler
Omskrivning af forespørgsler kan omfatte flere strategier:
- Udvidelse af forespørgsler: Tilføjelse af synonymer eller relaterede termer for at udvide søgningen.
- Omformulering af forespørgsler: Ændring af forespørgslens struktur eller formulering for at forbedre tydeligheden.
- Dekomponering af forespørgsler: Opdeling af en kompleks forespørgsel med flere dele i enklere, individuelle underforespørgsler.
Ofte bruges en anden LLM til at udføre disse omskrivningsopgaver.
Kode: Enkel omskrivning af forespørgsel
Her er et konceptuelt Python-eksempel på, hvordan en enkel forespørgselsudvidelse kan fungere. I et virkeligt system ville en LLM stå for det meste af arbejdet.
class QueryRewriter:
def rewrite(self, query):
# Simulate an LLM or a rule-based system
if "LLM performance" in query:
return query + " large language model efficiency optimization"
if "vector db" in query:
return query + " vector database semantic search"
return query
rewriter = QueryRewriter()
user_query_1 = "improve LLM performance"
rewritten_1 = rewriter.rewrite(user_query_1)
print(f"Original 1: {user_query_1}")
print(f"Rewritten 1: {rewritten_1}\n")
user_query_2 = "how to use vector db"
rewritten_2 = rewriter.rewrite(user_query_2)
print(f"Original 2: {user_query_2}")
print(f"Rewritten 2: {rewritten_2}")Hvorfor vi har brug for omrangering
Selv efter en god indledende søgning (måske med en omskrevet forespørgsel!) er de øverste 'N' dokumenter, som din retriever returnerer, måske ikke sorteret helt korrekt efter relevans.
Retrieverens opgave er ofte at finde potentielle match. Omrangering finjusterer denne rækkefølge, så de absolut bedste dokumenter placeres øverst.
Omrangeringsprocessen
Omrangering fungerer sådan:
- Din indledende retriever henter et større sæt kandidatdokumenter (f.eks. de 50 øverste).
- En specialiseret omrangeringsmodel tager derefter hvert af disse kandidatdokumenter sammen med den oprindelige brugerforespørgsel og beregner en mere præcis relevansscore.
- Dokumenterne sorteres derefter igen ud fra de nye, mere nøjagtige scorer.
Det sikrer, at de mest relevante dokumenter sendes videre til LLM'en.
Specialiserede omrangeringsmodeller
I modsætning til en retriever, der ofte bruger embeddings til tilnærmet lighed, bruger omrangeringsmodeller typisk mere avancerede modeller, ofte kaldet cross-encodere.
- Cross-encodere tager både forespørgslen OG et dokument som input.
- De tager direkte højde for samspillet mellem ordene i forespørgslen og dokumentet.
- Det giver en langt mere nuanceret forståelse af relevans, men kræver mere beregningskraft. Derfor anvendes modellen kun på et mindre udvalg af dokumenter.
Kode: Simulering af omrangering
Dette eksempel viser, hvordan en omrangeringsmodel kan beregne nye scorer for og omarrangere en oprindeligt hentet liste over dokumenter ud fra deres relevans for forespørgslen.
class Reranker:
def rerank(self, query, documents):
# Simulate a cross-encoder model scoring documents
scores = {}
for doc in documents:
if "vector database" in doc.lower() and "fast" in query.lower():
scores[doc] = 0.95 # Highly relevant
elif "llm" in doc.lower() and "improve" in query.lower():
scores[doc] = 0.85
elif "database" in doc.lower():
scores[doc] = 0.7
else:
scores[doc] = 0.3 # Less relevant
# Sort documents by score in descending order
sorted_docs = sorted(documents, key=lambda d: scores.get(d, 0), reverse=True)
return sorted_docs
reranker = Reranker()
user_query = "How to build a fast vector database?"
initial_docs = [
"Introduction to LLMs",
"Building a scalable vector database",
"Optimizing LLM inference",
"Fast data ingestion for databases"
]
reranked_docs = reranker.rerank(user_query, initial_docs)
print(f"Original documents: {initial_docs}\n")
print("Reranked documents (most relevant first):")
for doc in reranked_docs:
print(f"- {doc}")Kombinationens styrke
Den virkelige styrke kommer af at kombinere begge teknikker:
- Først opretter omskrivning af forespørgsler en bedre søgeforespørgsel.
- Derefter bruger din retriever denne forbedrede forespørgsel til at hente et bredere og mere relevant sæt dokumenter.
- Til sidst finjusterer omrangering rækkefølgen af disse dokumenter, så LLM'en modtager den absolut bedste kontekst til at generere et svar.
Denne tilgang med flere trin forbedrer kvaliteten og nøjagtigheden af dit RAG-system markant.
Test din forståelse
Nu er det tid til at teste, hvad du har lært om optimering af RAG gennem omskrivning af forespørgsler og omrangering.
Opsamling og næste trin
Godt arbejde! I denne lektion har du lært om omskrivning af forespørgsler og omrangering.
- Omskrivning af forespørgsler ændrer brugerens input for at skabe en mere effektiv søgeforespørgsel.
- Omrangering ændrer rækkefølgen af oprindeligt hentede dokumenter ved hjælp af en mere præcis model, så de mest relevante dokumenter kommer frem.
Tilsammen forbedrer disse teknikker kvaliteten og nøjagtigheden af dine RAG-applikationer markant. Nu skal vi se på endnu mere avancerede RAG-arkitekturer!
Lær LLM-applikationer i produktion (RAG + vektordatabase + caching) med en AI-underviser — gratis
Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.
- Kurser
- 12
- Lektioner
- 48
Ofte stillede spørgsmål
Er lektionen “Omskrivning af forespørgsler og reranking” gratis?
Ja — hele teksten til “Omskrivning af forespørgsler og reranking” kan læses gratis her på nettet. Hvis du vil øve dig interaktivt med en indbygget kodeeditor og en AI-vejleder døgnet rundt og få adgang til resten af LLM-applikationer i produktion (RAG + vektordatabase + caching)-kurset, skal du opgradere til CoddyKit PRO. LLM-applikationer i produktion (RAG + vektordatabase + caching)-kurset indeholder 4 lektioner i alt.
Hvad lærer jeg i “Omskrivning af forespørgsler og reranking”?
Udforsk teknikker til at optimere brugerforespørgsler og omrangere hentede dokumenter, så de bliver mere relevante for LLM'en. Du øver dig i LLM-applikationer i produktion (RAG + vektordatabase + caching) med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.
Skal jeg have erfaring for at begynde på LLM-applikationer i produktion (RAG + vektordatabase + caching)?
Der kræves ingen tidligere erfaring. LLM-applikationer i produktion (RAG + vektordatabase + caching) på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 1 af 4.
Hvor lang tid tager lektionen “Omskrivning af forespørgsler og reranking”?
De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.
Kan jeg skrive og køre kode i denne LLM-applikationer i produktion (RAG + vektordatabase + caching)-lektion?
Ja. Alle LLM-applikationer i produktion (RAG + vektordatabase + caching)-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.
Alle lektioner i dette kursus
- Omskrivning af forespørgsler og reranking
- RAG-mønstre i flere trin og med agenter
- Håndtering af komplekse dokumentstrukturer
- Self-querying og kildehenvisninger