Chrome-teamet hanterar kodningsagenters sökfrågor med en ordtabell i stället för ett neuralt nätverk
Skillen Modern Web Guidance hämtar guider för webbutveckling lokalt åt kodningsagenter. Guidernas inbäddningar beräknas i förväg i molnet, och agentens korta sökfråga omvandlas till en vektor med en ordtabell utan neuralt nätverk.
Paul Irish på Google berättade den 12 november på bloggen Chrome for Developers hur Chrome-teamet byggde om sökmotorn i skillen Modern Web Guidance tre gånger på ett halvår. Skillen är en samling guider med öppen källkod, och den stabila versionen släpptes samma vecka. Den vägleder kodningsagenter till att använda webbplattformens nya funktioner i stället för gamla nödlösningar.
Samlingen innehåller över 200 guider om HTML, CSS och webbläsarnas API:er. Till en början ser agenten bara skillens beskrivning på cirka 205 token. Vid en frontenduppgift söker den efter guider med ett CLI-verktyg och får tio träffar på cirka 530 token. Därefter läser den in hela den guide den väljer, cirka 800 token. Enligt Irish slösar MCP-verktyg antingen med token, eller så anropar agenten dem inte tillförlitligt. Därför valde teamet CLI.
Den gamla modellen kände inte till nya API:er
Installerad tog den första versionen upp 507 megabyte, och den krävde en C++-kompilering som ofta misslyckades i molnets sandlådor. Den andra versionen körde inbäddningsmodellen all-MiniLM-L6-v2 i JavaScript. En inbäddningsmodell omvandlar text till en vektor av tal, och texter med liknande betydelse får vektorer som ligger nära varandra.
I produktion slog sökningen fel. MiniLM, som tränades ungefär 2018–2020, delade upp nya API-namn, till exempel fetchpriority, i meningslösa delar. Dessutom avvisade likhetströskeln 0,38 relevanta resultat. Sökningen ”confirm destructive action” gav en tom lista, och agenten använde anropet window.confirm() i stället för elementet dialog.
Teamet byggde ett nytt benchmark av agenternas verkliga sökningar. Telemetrin, som kan stängas av med inställningen DISABLE_TELEMETRY=1, sparar bara agentens sökfras på 2–5 ord. Vid sidan av den semantiska sökningen lade teamet till BM25-sökning, som jämför nyckelord, och höjde antalet resultat till tio. Träffandelen, alltså hur ofta den förväntade guiden finns bland de bästa resultaten, steg från 80,6 procent till 94,7 procent.
Guidernas inbäddningar i molnet, sökfrågorna från en ordtabell
I den tredje versionen beräknas guidernas inbäddningar i samband med releasen med Googles modell gemini-embedding-001, eftersom guiderna inte ändras mellan releaserna. Sökfrågorna omvandlas till vektorer i samma vektorrum utan neuralt nätverk. Teamet beräknade inbäddningar för 29 165 ord med Gemini och finjusterade ordvektorerna med 33 000 verkliga sökningar. Vid körning summeras ordens viktade vektorer i en loop på sju rader.
Metoden är avsedd för korta sökfrågor, och enligt telemetrin var 86,7 procent av sökningarna 2–5 ord långa. När teamet försökte bädda in hela guider med ordtabellen förlorade inbäddningarna sin särskiljningsförmåga. Då liknade guiden om dialog sökningen ”best pizza in new york” mer än sökningen ”dialog”.
Tabellen visar teamets egna mätningar av den andra och den tredje versionen.
| Mått | Version 2 | Version 3 |
|---|---|---|
| npm-paket (.tgz) | 23,4 MB | 7,1 MB |
| Kallstart för sökning | 770 ms | 185 ms |
| Inbäddning av sökfråga, varmstart | ca 227 ms | 30 µs |
| Högsta minnesanvändning | 346 MB | 145 MB |
| Träffandel, telemetrisökningar | 94,7 % | 95,4 % |
Källa: bloggen Chrome for Developers, teamets egna mätningar. Träffandelen för version 2 avser justerad hybridsökning.
Jämfört med den justerade andra versionen förbättrades träffandelen med bara 0,7 procentenheter, så förändringen syns främst i storlek och hastighet. När sökfrågorna bäddades in i molnet med Gemini-API:t var träffandelen 96,9 procent.
Skillen, dess sökmotor och benchmarket är öppen källkod. Sökverktyget körs lokalt utan API-nyckel.
Läs mer: Hur en agent fungerar · Agentkarta