Semble möjliggör effektiv kodsökning för AI-agenter med 98% färre tokens än grep
När en AI-agent som Claude Code letar efter kod i ett stort projekt och inte hittar det den söker, faller den ofta tillbaka på `grep`. Sen läser den hela filer. Sen startar den underagenter. Resultatet blir att tusentals tokens går åt, ofta utan att rätt kodrad ens dyker upp. Det är problemet som Semble löser, och siffrorna är värda att titta närmare på: 98% färre tokens jämfört med grep+read, samtidigt som träffkvaliteten ligger på 99% av en mycket större transformer-modell.
För dig som följer utvecklingen kring AI-assistenter för programmering är det här intressant av en enkel anledning. Tokens kostar pengar. Och kontextfönstret tar slut.
Vad Semble egentligen gör
Semble är ett open source-verktyg byggt för att ge kodningsagenter ett bättre sätt att hitta relevant kod. I stället för att skanna filsystemet rad för rad med `grep` och sen mata in stora mängder text i språkmodellen, bygger Semble ett semantiskt index över kodbasen och returnerar bara de bitar som faktiskt är relevanta.
Tekniken kombinerar tre saker:
- Statiska embeddings från en liten modell (potion-code-16M) som körs direkt på CPU
- BM25, en klassisk algoritm för textsökning som väger ord efter hur ovanliga de är
- Reciprocal Rank Fusion som slår ihop resultaten från båda metoderna, med extra omrankning baserad på kod-specifika signaler
Det låter krångligt, men poängen är enkel. Vanliga embedding-modeller behöver ett grafikkort och tar tid att köra. Semble klarar sig utan både GPU och API-nycklar.
Varför token-kostnaden är ett verkligt problem
Den som använt Claude Code, Cursor eller liknande agenter på ett större projekt har märkt det. Agenten letar. Den läser. Den letar igen. Snabbt har den dragit 50 000 tokens bara för att hitta en funktion som ligger tre mappar bort.
På månadsbasis blir det dyrt. På företagsnivå blir det väldigt dyrt.
Vill du läsa mer om hur AI-assistenterna fungerar i praktiken har vi skrivit om GitHub Copilot och hur AI gör kodning billigare. Semble pekar mot en specifik del av den ekvationen: själva sökningen i kodbasen, som idag är onödigt slösaktig.
Siffrorna från benchmarken
Utvecklarna bakom Semble har testat verktyget mot ett eget benchmark med cirka 1 250 fråge/dokument-par över 63 repon och 19 språk. Resultaten:
| Aspekt | Semble vs grep+read |
|---|---|
| Tokenanvändning | 98% lägre |
| Hastighet | ~200x snabbare än 137M-transformer |
| Träffkvalitet | 99% av en stor transformer-modell |
| Hårdvara | CPU räcker |
Jämförelsen görs mot CodeRankEmbed, en betydligt större kodtränad modell på 137 miljoner parametrar. Att en modell på 16 miljoner parametrar når 99% av den prestandan, samtidigt som den körs hundratals gånger snabbare, är ovanligt.
Att ta siffrorna med en nypa salt är klokt. Det är utvecklarnas eget benchmark. Men idén är solid och resultatet stämmer med vad andra statiska embedding-modeller visat: för retrieval-uppgifter behöver du inte den största modellen.
Vad betyder ”statiska embeddings”?
En vanlig embedding-modell läser hela texten varje gång och beräknar en vektor utifrån sammanhanget. Det är dyrt. En statisk embedding-modell tränas så att varje ord eller token får en förbestämd vektor som inte ändras vid körning. Då räcker det med en uppslagning plus lite efterbearbetning.
Skillnaden i hastighet märks direkt. Skillnaden i kvalitet är mindre än man tror, åtminstone för kodsökning där exakta ord och symbolnamn väger tungt.
Installation och hur du kommer igång
Semble finns på pypi.org och installeras enklast med pip eller uv. För svenska utvecklare som redan har en Python-miljö igång handlar det om en enda kommandorad.
Verktyget indexerar din kodbas lokalt. Inga API-nycklar. Ingen data som skickas till en extern tjänst. Det är värt att lyfta fram i en tid när många AI-verktyg kräver att du laddar upp din kod till någon annans server.
För utvecklare som vill följa projektets utveckling och teststatus finns kodbasen kontinuerligt testad via app.codecov.io.
Vem har nytta av det här?
Semble är inte tänkt att ersätta din IDE:s sökruta. Det är byggt för agenter. Men det öppnar för några konkreta användningsfall:
Om du bygger egna AI-agenter som ska navigera kodbaser blir Semble en naturlig komponent. Det är öppen källkod, körs lokalt och är snabbt nog för att integreras i en interaktiv loop.
Om du använder Claude Code eller liknande verktyg professionellt och märker att tokenkostnaden skenar, kan ett MCP-baserat verktyg framför Semble vara en utväg.
Om du är nyfiken på hur retrieval för kod fungerar är det ett pedagogiskt projekt. Koden är begränsad nog att läsa igenom på en eftermiddag, och kombinationen BM25 + embeddings + RRF är ett standardmönster som dyker upp överallt i moderna sökmotorer.
Att skriva sina egna agenter har blivit förvånansvärt enkelt det senaste året. Vi gick igenom det i artikeln om en kodningsagent på 400 rader shell, Semble är pusselbiten som hanterar ”hur hittar agenten rätt fil att titta i”.
Den större trenden handlar om små modeller och smart användning
Det är lätt att tänka att AI-utveckling bara handlar om större modeller. Mer parametrar, fler GPU:er, högre kostnad. Semble pekar åt andra hållet. En 16-miljoners-parametrar-modell som körs på en vanlig laptop och slår betydligt större modeller på den specifika uppgift den är byggd för.
Det är samma utveckling vi sett på andra håll inom AI. Specialiserade små modeller som löser ett avgränsat problem bättre än de stora generalisterna. För svenska utvecklare som vill experimentera utan att bränna molnbudget är det goda nyheter.
Om generativ AI som koncept är nytt för dig har vi en bredare genomgång i Generativ AI: vad det är och varför så många pratar om det. Där hittar du grunderna som gör att resten av AI-världen blir lättare att navigera.
Det jag tar med mig från Semble är inte själva verktyget, utan principen. Token-effektivitet kommer bli en av de viktigaste mätstickorna för AI-verktyg de närmaste åren. Inte för att tokens är dyra i sig, utan för att kontextfönstret är en ändlig resurs. Den som slösar fyller det med skräp. Den som är effektiv lämnar plats åt det som faktiskt löser problemet.
Källor
- CodeRankEmbed huggingface.co
- pypi.org
- docs.astral.sh
