Svar
Ett RAG-system blir aldrig bättre än det som hämtas. Dela upp efter struktur, hänvisa till källan för varje påstående, avstå när underlaget är tunt, filtrera på behörighet innan modellen ser något och håll en regressionssvit för förankring.
I korthet
- Hämtningen avgör svarens kvalitet. Justera uppdelning och sökning på era egna dokument innan ni putsar på instruktionen.
- Varje svar hänvisar till de stycken det bygger på, och systemet säger att det inte vet när hämtningen är svag.
- Filtrera på användarens behörigheter innan modellen ser ett dokument, och skydda förankringen med en regressionssvit som körs vid varje ändring.
Hämtningen är produkten
När ett RAG-svar blir fel är modellen sällan det första som ska åtgärdas. Dåliga svar börjar ofta med fel stycken, eller med rätt stycke kapat på mitten. Finns underlaget inte i kontexten kan ingen instruktion trolla fram det.
Mät därför hämtningen för sig. Notera för ett antal verkliga frågor vilka dokument som borde komma tillbaka, och kontrollera att de gör det. Problem i hämtningen syns där innan de syns i svaren, och de är mycket billigare att felsöka.
Dela upp efter struktur, sök på ord och betydelse
Dela dokumenten längs deras struktur: rubriker, avsnitt, listpunkter och tabellrader. Fönster med fast storlek skiljer definitioner från begreppen de definierar. Spara titel och avsnittssökväg med varje bit, så att ett stycke går att förstå och hänvisa till på egen hand.
Kombinera nyckelordssökning med vektorsökning. Exakta träffar spelar roll för produktnamn, felkoder och paragrafnummer, och inbäddningar kan missa dem. Semantisk sökning fångar omformuleringar som nyckelorden missar. En omrankning av de sammanslagna toppträffarna är oftast värd att prova innan ni byter till en större modell.
Spara källa, version och åtkomstregler med varje bit. Ni kommer att behöva alla tre.
Hänvisa till källan för varje påstående
Be modellen svara enbart utifrån de stycken den har fått och märka varje påstående med stycket det kommer från. Kontrollera sedan märkningen i kod. Varje hänvisning måste peka på ett stycke som faktiskt hämtades, och ett svar utan hänvisningar visas inte som ett svar.
Källhänvisningar gör två saker. Användaren kan kontrollera ett svar med ett klick, och ni kan spåra ett felaktigt svar tillbaka till stycket, biten och dokumentet som orsakade det.
Avstå när hämtningen är svag
En modell med dåligt underlag skriver ändå något som låter bra. Avgör före genereringen om underlaget räcker: en lägsta relevanspoäng, ett minsta antal stödjande stycken, eller att nyckelords- och vektorsökningen pekar åt samma håll. Under gränsen säger systemet att dokumenten inte täcker frågan och visar vad som hittades.
const hits = await search(query, { user, topK: 8 })
const strong = hits.filter((h) => h.score >= MIN_SCORE)
if (strong.length < MIN_HITS) {
return { answer: null, reason: "not enough evidence" }
}
const draft = await generate(query, strong)
const ids = new Set(strong.map((h) => h.id))
const grounded = draft.citations.length > 0 &&
draft.citations.every((id) => ids.has(id))
return grounded ? draft : { answer: null, reason: "ungrounded" }Gränsen är ett produktbeslut. Sätt den med regressionssviten, inte på känn, och skriv ner varför när den ändras.
Hämta bara det användaren får läsa
Behörighetskontrollen hör hemma i hämtningen, inte i instruktionen. Filtrera på användarens behörigheter i själva sökfrågan, så att dokument som användaren inte får öppna aldrig når modellen. Att be modellen bortse från skyddad text fungerar inte. Väl i kontexten kan texten läcka ut i svaret.
Synka behörigheterna från källsystemen tillsammans med innehållet, och behandla en inaktuell behörighet som ett fel. När åtkomsten till ett dokument dras in ska indexet följa med i samma synk, inte vid nästa fullständiga omindexering. Testa med två användare som ska få olika svar på samma fråga.
Skydda förankringen med en regressionssvit
Bygg en uppsättning verkliga frågor med de dokument som borde hämtas och de fakta som ett korrekt svar innehåller. Ta med frågor som dokumenten inte kan besvara, där rätt resultat är att avstå, och frågor där två användare ska få olika svar.
Kör sviten vid varje ändring av uppdelningen, inbäddningsmodellen, instruktionen eller modellen. Poängsätt hämtning, giltiga hänvisningar, avståenden och faktisk överensstämmelse var för sig, så att ett fel pekar ut ett lager. En ny inbäddningsmodell som höjer ett mått och sänker ett annat är en avvägning att besluta om, inte en uppgradering.
Lägg in varje förankringsfel från produktion i sviten, så att det inte kan komma tillbaka obemärkt.
Där det möter ett uppdrag
Att ta en RAG-assistent från prototyp till produktion, med behörighetsstyrd hämtning, källhänvisningar och en regressionssvit för förankring, är vad en AI-produktionssprint omfattar. När assistenten väl är i drift håller AI-drift som tjänst index, behörigheter och utvärderingar igång när dokument, modeller och instruktioner ändras.
Vanliga frågor
Hur stora ska bitarna vara? Stora nog att stå på egen hand och små nog att hänvisa till exakt. Följ dokumentets struktur snarare än en fast storlek, och låt regressionssviten avgöra.
Ska modellen eller koden avgöra när systemet avstår? Båda. Koden kontrollerar hämtningens styrka och hänvisningarnas giltighet innan något visas, och instruktionen säger åt modellen att tala om när styckena inte besvarar frågan.
Kan vi filtrera bort skyddade dokument efter genereringen? Nej. Filtrera innan sökresultaten når modellen, eftersom allt i kontexten kan hamna i svaret.









