Chromen tiimi käsittelee koodausagenttien hakukyselyt sanataulukolla neuroverkon sijaan
Modern Web Guidance -skill hakee koodausagentille web-kehityksen ohjeita paikallisesti. Ohjeiden upotukset lasketaan valmiiksi pilvessä, ja agentin lyhyt hakukysely muunnetaan vektoriksi sanataulukon avulla ilman neuroverkkoa.
Googlen Paul Irish kertoi Chrome for Developers -blogissa 12. marraskuuta, miten Chrome-tiimi rakensi Modern Web Guidance -skillin hakukoneen kolmesti uudelleen puolessa vuodessa. Skill on avoimen lähdekoodin ohjekokoelma, jonka vakaa versio julkaistiin samalla viikolla. Se opastaa koodausagentteja käyttämään web-alustan uusia ominaisuuksia vanhojen kiertoteiden sijaan.
Kokoelmassa on yli 200 ohjetta HTML:stä, CSS:stä ja selainten ohjelmointirajapinnoista. Agentti näkee aluksi vain skillin noin 205 tokenin kuvauksen. Frontend-tehtävässä se hakee ohjeita CLI-työkalulla ja saa kymmenen osumaa, jotka vievät noin 530 tokenia. Sen jälkeen se lataa valitsemansa ohjeen kokonaan, noin 800 tokenia. Irishin mukaan MCP-työkalut joko tuhlaavat tokeneita tai agentti ei kutsu niitä luotettavasti, joten tiimi valitsi CLI:n.
Vanha malli ei tuntenut uusia rajapintoja
Ensimmäinen versio vei asennettuna 507 megatavua ja vaati C++-käännöksen, joka epäonnistui usein pilven hiekkalaatikoissa. Toinen versio ajoi all-MiniLM-L6-v2-upotusmallia JavaScriptillä. Upotusmalli muuttaa tekstin lukuvektoriksi, ja merkitykseltään samankaltaiset tekstit saavat lähekkäiset vektorit.
Tuotannossa haku petti. Noin vuosina 2018–2020 koulutettu MiniLM pilkkoi merkityksettömiin osiin uudet rajapintanimet, kuten fetchpriorityn. Lisäksi samankaltaisuuden alaraja 0,38 hylkäsi osuvia tuloksia. Haku ”confirm destructive action” palautti tyhjän listan, ja agentti käytti window.confirm()-kutsua dialog-elementin sijaan.
Tiimi rakensi uuden vertailutestin agenttien todellisista hauista. Telemetria, jonka voi kytkeä pois asetuksella DISABLE_TELEMETRY=1, tallentaa vain agentin 2–5 sanan hakulausekkeen. Tiimi lisäsi semanttisen haun rinnalle avainsanoja vertaavan BM25-haun ja nosti tulosmäärän kymmeneen. Osumaosuus eli se, kuinka usein odotettu ohje on parhaiden tulosten joukossa, nousi 80,6 prosentista 94,7 prosenttiin.
Ohjeiden upotukset pilvessä, kyselyt sanataulukosta
Kolmannessa versiossa ohjeiden upotukset lasketaan julkaisun yhteydessä Googlen gemini-embedding-001-mallilla, koska ohjeet eivät muutu julkaisujen välillä. Kyselyt muunnetaan samaan vektoriavaruuteen ilman neuroverkkoa. Tiimi laski Geminillä upotukset 29 165 sanalle ja hienosääti sanavektorit 33 000 todellisella haulla. Ajon aikana sanojen painotetut vektorit lasketaan yhteen seitsemän rivin silmukassa.
Menetelmä on tarkoitettu lyhyille kyselyille, ja telemetrian mukaan 86,7 prosenttia hauista oli 2–5 sanan mittaisia. Kun tiimi kokeili sanataulukkoa kokonaisten ohjeiden upottamiseen, upotukset menettivät erottelukykynsä. Silloin dialog-ohje oli samankaltaisempi haun ”best pizza in new york” kuin haun ”dialog” kanssa.
Taulukossa ovat tiimin omat mittaukset toisesta ja kolmannesta versiosta.
| Mittari | Versio 2 | Versio 3 |
|---|---|---|
| npm-paketti (.tgz) | 23,4 Mt | 7,1 Mt |
| Haun kylmäkäynnistys | 770 ms | 185 ms |
| Kyselyn upotus, lämmin käynnistys | n. 227 ms | 30 µs |
| Muistin huippukäyttö | 346 Mt | 145 Mt |
| Osumaosuus, telemetriahaut | 94,7 % | 95,4 % |
Lähde: Chrome for Developers -blogi, tiimin omat mittaukset. Version 2 osumaosuus viritetyllä hybridihaulla.
Osumaosuus parani viritetystä toisesta versiosta vain 0,7 prosenttiyksikköä, joten muutos näkyy lähinnä koossa ja nopeudessa. Kun kyselyt upotettiin pilvessä Gemini-rajapinnalla, osumaosuus oli 96,9 prosenttia.
Skill, sen hakukone ja vertailutesti ovat avointa lähdekoodia. Hakutyökalu toimii paikallisesti ilman API-avainta.
Lue lisää: Miten agentti toimii · Agenttikartta