Beyond "What to Retrieve": Uncertainty in Retrieval-Augmented Code Generation
Dit artikel introduceert OpenCoder, een onzekerheidsbewust framework dat bronspecifieke onzekerheid schat en benut om heterogene retrieval-bewijslast te filteren en te rangschikken, waardoor de correctheid van repository-niveau codegeneratie wordt verbeterd, terwijl het aantoont dat de voordelen afhankelijk zijn van de specifieke LLM-backend en de interacties tussen de bewijslast.
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
Stel je voor dat je een complexe LEGO-kasteel probeert te bouwen, maar je hebt slechts één instructieboekje gekregen dat alleen de voordeur behandelt. Je kent de deur, maar het kasteel heeft ramen, een dak en een geheime ondergrondse tunnel nodig. Dit is de dagelijkse strijd voor Kunstmatige Intelligentie (AI) wanneer het probeert computercode te schrijven voor echte projecten. Hoewel AI ongelooflijk goed is geworden in het schrijven van kleine, geïsoleerde stukjes code, raakt het vaak de weg kwijt wanneer het wordt gevraagd om iets te bouwen dat past in een enorme, bestaande software-"buurt". Om dit op te lossen, gebruiken onderzoekers een techniek genaamd Retrieval-Augmented Generation (RAG). Denk aan RAG als het geven van een superkrachtige zoekmachine aan de AI: voordat de AI een enkele regel code schrijft, zoekt hij naar vergelijkbare projecten, controleert hij de regels van de buurt (de specifieke conventies van het project) en vindt hij de juiste hulpmiddelen (API's) om te gebruiken.
Er zit echter een addertje onder het gras. Alleen omdat de zoekmachine veel informatie vindt, betekent dat niet dat die informatie nuttig is. Soms vindt de AI een stuk code dat er vergelijkbaar uitziet, maar dat eigenlijk het project breekt; andere keren vindt hij een hulpmiddel dat niet past bij de specifieke taak. De informatie is aanwezig, maar is ruisachtig, tegenstrijdig of gewoon simpelweg fout. De grote vraag die onderzoekers zich hebben gesteld is: Hoe leren we de AI niet alleen om de juiste informatie te vinden, maar ook om te weten hoeveel hij die moet vertrouwen? Als de AI het verschil niet kan zien tussen een behulpzame aanwijzing en een misleidende rode haring, zal hij een kasteel bouwen dat instort zodra je de deur probeert te openen.
Hier komt een nieuw onderzoek van onderzoekers van de Beihang Universiteit in beeld. Zij introduceren een systeem genaamd OpenCoder, dat fungeert als een sceptische, uiterst georganiseerde projectmanager voor de AI. In plaats van blindelings elke stuk informatie te vertrouwen die de zoekmachine vindt, wijst OpenCoder een "twijfelscore" toe aan elke enkele aanwijzing. Het vraagt zich af: "Hoe onzeker zijn we dat deze API de juiste is?" of "Hoe waarschijnlijk is het dat deze vergelijkbare code botst met ons project?". Door onzekerheid niet als een bug, maar als een nuttig signaal te behandteren, filtert OpenCoder de ruis weg, rangschikt de aanwijzingen op basis van hoe betrouwbaar ze lijken, en weet zelfs wanneer het moet stoppen en zijn eigen fouten moet herstellen.
De onderzoekers testten dit systeem door de AI te vragen code te schrijven voor 32 verschillende realtime taken. Ze ontdekten dat wanneer ze een krachtig AI-model genaamd GPT gebruikten, OpenCoder het succespercentage van de uiteindelijke code aanzienlijk verhoogde van 56,25% (met standaard zoekmethoden) naar 78,13%. Echter, de onderzoekers ontdekten een cruciale nuance: deze verbetering kwam overeen met de prestaties van een controlegroep die standaard zoeken gebruikte maar een "verifieer-en-herstel"-stap toevoegde. Dit suggereert dat hoewel de onzekerheidsfiltering van OpenCoder hielp, de enorme sprong in succes grotendeels werd gedreven door het vermogen van het systeem om fouten te verifiëren en te herstellen, in plaats van alleen door het filteren alleen. De "secret sauce" was niet alleen het vinden van meer informatie; het was het vermogen van het systeem om te zeggen: "Dit specifieke stuk bewijs ziet er wankel uit, dus laten we het negeren," en "Dit andere stuk ziet er solide uit, dus laten we het gebruiken," allemaal terwijl er een vangnet was om fouten op te vangen.
Het verhaal is echter geen simpel "AI wint voor altijd". De onderzoekers merkten zorgvuldig op dat dit succes sterk afhangt van welk AI-brein het werk doet. Toen ze GPT vervingen door een ander model genaamd Gemini, waren de resultaten veel minder duidelijk. De verbeteringen waren niet statistisch significant, wat suggereert dat de "onzekerheidsradar" van OpenCoder anders werkt afhankelijk van de persoonlijkheid van de AI. Bovendien liep het systeem tegen een muur aan wanneer het project te weinig informatie miste. In deze gevallen van onvolledig bewijs presteerde een standaard systeem met verificatie en herstel er daadwerkelijk beter dan OpenCoder. Dit geeft aan dat wanneer de zoekmachine de noodzakelijke hulpmiddelen niet kan vinden om überhaupt te beginnen, de filtermechanismen van OpenCoder soms de weinige beschikbare fragmenten bewijs kunnen onderdrukken, in plaats van de uiteindelijke beslissing te verbeteren.
De studie ontdekte ook iets verrassends over hoe verschillende soorten informatie samenwerken. Je zou denken dat het hebben van "vergelijkbare code", "projectcontext" en "API-kennis" altijd beter is dan het hebben van slechts één van de drie. Maar de onderzoekers vonden dat er geen universele regel is. Soms maakte het toevoegen van "vergelijkbare code" de AI juist in de war, tenzij het gepaard ging met de juiste "projectcontext". Het is alsof je een kaart, een kompas en een GPS hebt: als je alleen de GPS hebt, kun je verdwalen; als je de kaart en het kompas hebt maar geen GPS, kun je prima uit de voeten; maar als je alle drie hebt en ze spreken elkaar tegen, kun je in cirkels gaan lopen. De waarde van elke aanwijzing hangt volledig af van welke andere aanwijzingen aanwezig zijn.
Om dit te laten werken, voert OpenCoder een vijfstappen-dans uit. Ten eerste bouwt het een bibliotheek van alle regels en hulpmiddelen van het project. Ten tweede breekt het de gebruikersaanvraag af in kleine stappen. Derde gaat het op jacht naar aanwijzingen, maar deze keer scoort het ze op basis van hoe "onzeker" ze aanvoelen. Ten slotte genereert het de code, maar houdt het nauwlettend oog op de "onzekerheidsscore" om het gebruik van wankele aanwijzingen te vermijden. En vijf, en misschien wel het belangrijkste, fungeert het als zijn eigen kwaliteitscontroleur. Het draait de code door een reeks tests. Als de code faalt, geeft het niet zomaar op; het identificeert de fout en probeert de code te herstellen op basis van die validatiefeedback.
Uiteindelijk suggereert het artikel dat de toekomst van AI-codering niet alleen gaat over het slimmer maken van de AI of het geven van meer data aan de AI. Het gaat erom de AI te leren bescheiden en kritisch te zijn. Door onzekerheid te behandelen als een instrument om beslissingen te sturen — het filteren van slechte data, het verifiëren van de output en het herstellen van fouten tijdens het proces — kunnen systemen zoals OpenCoder betrouwbaardere software bouwen. Maar zoals de onderzoekers waarschuwen, is dit geen toverstaf die in elke situatie werkt. Het werkt het best wanneer de AI over voldoende goede informatie beschikt en wanneer het specifieke AI-model is afgestemd om de "twijfelscores" correct te begrijpen. Voor nu is OpenCoder een krachtige stap voorwaarts, die bewijst dat weten wat je niet weet soms het belangrijkste deel is van het oplossen van de puzzel.
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.