En agent är bara så bra som sitt minne
En stor modell med dålig hämtning presterar sämre än en liten modell med träffsäker kontext. Det kritiska ledet är inte vilken LLM du väljer — det är hur din agent hittar rätt information innan den börjar svara.
är en pipeline i fyra steg. Först delas dokumenten upp i bitar () som sedan omvandlas till vektorer av en och lagras i en som eller . Det är förberedelsesteget — sker en gång.
När agenten sedan får en fråga händer: frågan omvandlas till en vektor → databasen returnerar de närmaste vektorerna ( bitar) → dessa bitar skickas med i modellens kontext → modellen svarar baserat på faktisk information, inte bara träningsdata.
Vektordatabasen hanterar lagring och sökning. är R:et i . Kvaliteten på det steget avgör allt som kommer efter.
Embedding-modellens kvalitet syns bara om biten innehåller rätt sak. För stora bitar späder ut signalen — du hämtar in tre sidor för att få ett stycke. För små bitar tappar du kontext och koherens.
En tumregel: 400–800 tokens per bit med 10–20% överlapp. Överlappet säkerställer att meningar vid gränser inte försvinner. Lägg till metadata (sökväg, rubrik, tidsstämpel) på varje bit — det gör det möjligt att filtrera och rangordna om efter hämtning.
Rekursiv textdelning
Delar vid stycken → meningar → ord tills målstorleken uppnås. Bevarar semantisk koherens. Standardvalet i LangChain och LlamaIndex.
Semantisk delning
Delar vid embedding-avstånd, inte teckenantal. Ny bit när meningen "byter ämne". Bättre precision men kräver en embedding-körning redan vid indexering.
Kodspecifik delning
Dela vid funktionsgränser, inte radantal. En funktion = en bit. Annars riskerar du att hämta halva funktioner utan signatur eller returtyp.
Recall mäter hur stor andel av de relevanta dokumenten din hämtning faktiskt returnerar. En agent med 50% recall missar varannan relevant bit — och hallucinerar resten.
Ingen hämtning
Agenten svarar enbart från träningsdata. Fungerar bra för allmän kunskap — misslyckas konsekvent för intern, domänspecifik eller färsk information. Hallucinationer är inte ett modellproblem, det är ett minnesproblem.
Nyckelordssökning
BM25 eller fulltextsökning. Hittar exakta ordträffar men missar omformuleringar. "Agentminne" hittar inte "agent memory". Fungerar som utan synonymer. Snabb och enkel men precision faller snabbt på varierande formuleringar.
Semantisk sökning
Embedding-modellen konverterar fråga och textbitar till vektorer i samma rum. Liknande mening = nära koordinat. "Agentoptimering" hittar "förbättra AI-agenter" och vice versa — på svenska, engelska eller tyska. Multilingual-e5-large ger 1024-dimensionell representation med inbyggt stöd för 100+ språk.
En agent som pratar direkt med en vektordatabas utan inbyggd embedding gör nyckelordssökning. Agenten skickar en textsträng, databasen matchar mot lagrade strängar via . Recall ~50–60%.
En agent som pratar med ett som internt kör och får: agenten skickar en naturlig fråga på vilket språk som helst → bäddar in frågan på serversidan → returnerar semantiskt relevanta bitar → recall ~85–90%.
Agenten vet ingenting om vektorer. Den anropar bara search("agentminne") och får rätt svar. Komplexiteten är inkapslad i -lagret.
Utan embedding i MCP
Vektordatabas med direkt textsökning. Snabbt att sätta upp. Fungerar bra om du söker på exakta termer — API-metodnamn, filnamn, specifika ID:n. Faller ihop när formuleringar varierar.
Med embedding i MCP
fastembed och multilingual-e5-large inbyggt i MCP-processen. Agenten exponeras bara för en naturlig söktjänst. Allt embedding och vektorhantering sker på serversidan.
Hybridsökning
Nyckelordssökning och semantisk sökning parallellt — resultaten slås ihop med RRF (Reciprocal Rank Fusion). Fångar både exakta termer och semantiska omformuleringar. Motiverat för produktionssystem med höga precisionskrav.
Top-k styr hur många bitar som skickas med i modellens kontext. k=3 ger precision men kan missa relevant information. k=20 ger täckning men späder ut kontexten — modellen börjar ignorera information i mitten av ett långt promptfönster (lost in the middle-problemet).
En praktisk strategi: hämta k=15–20 med semantisk sökning, kör sedan en re-ranker som sorterar om och behåller de 4–6 mest relevanta. Re-ranking är billigt (en liten klassificeringsmodell) och ger märkbar precision-ökning utan att öka modellens tokenanvändning.
- Bitstorlek: 400–800 tokens, 15% överlapp
- Top-k retrieval: 15–20 kandidater
- Re-rank ned till 4–6 bitar
- Metadata-filter innan hämtning om möjligt (minskar sökutrymmet)
- Embedding-modell: om du har svenska i stacken
- Kontrollera recall regelbundet — indexet degraderar när data ändras
Väljer du lokal LLM via Ollama väljer du implicit om du har semantisk sökning eller inte. Jämförelse av embedding-modeller och LLM-alternativ. Gå till Språkmodeller →
RAG är ett minnes-tool. Hur agenten bestämmer när den ska använda det — och hur du bygger resten av agentens verktygskedja. Gå till Agenter →