← Nieuwste papers
💻 computer science

Improving BM25 Code Retrieval Under Fixed Generic Tokenization: Adaptive q-Log Odds as a Drop-In BM25 Fix

Dit artikel stelt een drop-in BM25-verbetering voor genaamd adaptieve q-log odds, die de standaard logaritmische IDF vervangt door een q-logaritme om de prestaties van code-retrieval onder vaste generieke tokenisatie aanzienlijk te verbeteren door het beter scheiden van identifier-uiteinden, terwijl de impact op tekst-retrieval verwaarloosbaar blijft en geen wijzigingen in query-latentie vereist worden.

Oorspronkelijke auteurs: Santosh Kumar Radha, Oktay Goktas

Gepubliceerd 2026-05-19
📖 5 min leestijd🧠 Diepgaand

Oorspronkelijke auteurs: Santosh Kumar Radha, Oktay Goktas

Oorspronkelijk artikel gelicentieerd onder CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/). Dit is een AI-gegenereerde uitleg van het onderstaande artikel. Het is niet geschreven of goedgekeurd door de auteurs. Raadpleeg het oorspronkelijke artikel voor technische nauwkeurigheid. Lees de volledige disclaimer

Het Probleem: De "Verloren in Vertaling"-Zoekopdracht

Stel je voor dat je een rechercheur bent (een coderende AI) die een misdaad probeert op te lossen. Je hebt een enorme bibliotheek met 50.000 bestanden, en je moet het ene specifieke bestand vinden dat de aanwijzing bevat: een functie genaamd handleWebSocketUpgrade.

Je huidige tool is een standaard bibliotheekzoekmachine (genaamd BM25). Deze tool is oorspronkelijk ontworpen om te zoeken naar natuurlijke taal, zoals nieuwsartikelen of boeken. Het werkt goed voor woorden als "de", "lopen" of "gelukkig". Maar code is anders. Code zit vol met unieke, specifieke namen (identifiers) die werken als geheime codes.

Het Probleem:
De standaardzoekmachine behandelt een unieke codenaam (zoals handleWebSocketUpgrade, die slechts in één bestand voorkomt) bijna hetzelfde als een iets minder zeldzame naam (zoals logger, die in 50 bestanden voorkomt).

  • Analogie: Stel je een bibliotheek voor waar de bibliothecaris een "relevantiescore" toekent aan boeken. Als je op zoek bent naar een boek met een zeer specifieke, unieke titel, zou de bibliothecaris moeten schreeuwen: "DIT IS HET!" Maar de huidige bibliothecaris fluistert: "Dit is een goed boek, maar dat andere ook."
  • Het Resultaat: De AI raakt afgeleid. Het leest de verkeerde bestanden, raakt in de war en faalt in het oplossen van de bug. Het artikel stelt dat het falen niet de schuld is van de AI; het is de schuld van de zoekmachine omdat het de unieke "codenamen" niet genoeg waardeert.

De Oorzaak: Een "Bevroren" Woordenboek

De auteurs leggen uit dat in veel bedrijven de zoekmachine wordt gebouwd door een infrastructuurteam met behulp van een "bevroren" woordenboek (tokenizer). Dit woordenboek breekt woorden op op basis van hoe mensen spreken, niet hoe code is geschreven.

  • De Beperking: De mensen die de zoekmachine gebruiken (de AI-ontwikkelaars) kunnen het woordenboek niet veranderen. Ze zitten vast aan de "bevroren" instelling. Ze hebben een oplossing nodig die werkt zonder de hele bibliotheek opnieuw te bouwen.

De Oplossing: De "Volumeknop" (q-Log)

De auteurs stellen een slimme, één-regelige wiskundige aanpassing voor aan het scoresysteem van de zoekmachine. Ze noemen dit Adaptive q-Log Odds.

De Analogie:
Stel je het scoresysteem van de zoekmachine voor als een volumeknop voor verschillende soorten woorden.

  • Veelvoorkomende woorden (zoals "functie" of "return") staan laag omdat ze overal voorkomen.
  • Zeldzame woorden (de unieke codenamen) moeten hoog worden gezet.
  • Het Probleem: De standaard volumeknop (het logaritme) is kapot. Het zet het volume van zeldzame woorden wel omhoog, maar niet genoeg. Het behandelt een woord dat één keer voorkomt en een woord dat 50 keer voorkomt als bijna hetzelfde volume.

De Oplossing:
De auteurs vervangen de standaard volumeknop door een nieuwe die q-log heet.

  • Deze nieuwe knop heeft een speciale instelling (parameter q) die werkt als een "super-versterker" voor de zeldzaamste woorden.
  • Als je q = 1 zet, werkt het precies zoals de oude, kapotte knop (standaard BM25).
  • Als je q < 1 zet (zoals 0,05), schreeuwt het "DIT IS HET!" voor woorden die slechts één keer voorkomen. Het versterkt het verschil tussen een unieke identifier en een gemeenschappelijke met duizenden keren.

Hoe Het in de Praktijk Werkt

Het artikel testte dit op een enorme verzameling Go-code (182.000 bestanden).

  • Voorheen: De zoekmachine vond het juiste bestand slechts 25% van de tijd in de top 10 resultaten.
  • Na: Met de nieuwe "volumeknop" op de juiste instelling, vond het het juiste bestand 48% van de tijd.
  • De Magie: Dit is een verbetering van 89% in nauwkeurigheid. De AI kan nu bijna twee keer zo vaak het juiste bestand vinden, simpelweg door het volume van de unieke codenamen omhoog te draaien.

Het "Slimme" Deel: Auto-Tuning

Je zou kunnen vragen: "Hoe weten we welke instelling (q) we moeten gebruiken?"
De auteurs hebben een eenvoudige formule gemaakt die naar de bibliotheek zelf kijkt om de instelling automatisch te bepalen.

  • De Regel: Ze tellen hoeveel "unieke" woorden (hapaxes) er in de bibliotheek bestaan.
  • De Logica:
    • Als de bibliotheek vol zit met unieke codenamen (zoals bij Go), zet de formule de volumeknop op "Super Versterken" (q = 0,05).
    • Als de bibliotheek voornamelijk uit gemeenschappelijke woorden bestaat (zoals Python of gewone tekst), zet de formule de knop terug op "Normaal" (q = 1).
  • Waarom dit belangrijk is: Dit betekent dat de oplossing automatisch werkt. Het breekt tekstzoekopdrachten niet (waar unieke woorden minder belangrijk zijn) en het vereist geen menselijke experts om het voor elk nieuw project af te stemmen.

De Haken en Ogen: Tokenizers

Het artikel ontdekte ook een limiet. Als je het woordenboek (tokenizer) wel kunt veranderen om code beter te begrijpen (door handleWebSocketUpgrade op te splitsen in handle, web, socket, upgrade), dan werkt de standaardzoekmachine prima en is deze speciale "volumeknop" niet nodig.

  • De Conclusie: Deze oplossing is specifiek voor situaties waarin je het woordenboek niet kunt veranderen. Het is de "beste mogelijke oplossing" voor een afgesloten systeem.

Samenvatting

  1. Het Probleem: Standaardzoekmachines negeren unieke codenamen, waardoor AI-coderingsagenten falen.
  2. De Oplossing: Een wiskundige aanpassing die de belangrijkheid van woorden die slechts één keer voorkomen enorm versterkt.
  3. Het Resultaat: Een enorme sprong in het vinden van de juiste codebestanden (van ~25% naar ~48% succespercentage in de topresultaten).
  4. Het Voordeel: Het werkt automatisch, vereist geen wijzigingen aan de bestaande zoekinfrastructuur en is gratis te berekenen.

Kortom, het artikel leert ons hoe we het volume van de "geheime codes" in een bibliotheek omhoog kunnen draaien, zodat de rechercheur (de AI) ze duidelijk hoort en het juiste bestand vindt.

Verdrinkt u in papers in uw vakgebied?

Ontvang dagelijkse digests van de nieuwste papers die bij uw onderzoekswoorden passen — met technische samenvattingen, in uw taal.

Probeer Digest →