Tabellene som ikke eksisterte
Automatisk oversatt fra italiensk · les originalen
Kapittel 2 — Tabellene som ikke eksisterte
En tekniker fra en mekanisk bedrift i Nord-Italia fortalte det til oss over en espresso, med den roen som kjennetegner folk fra Veneto og som varsler om en katastrofe: "Chatboten vår visste alt om motoren. Bortsett fra dataene om motoren." Deretter forklarte han. Deres interne AI-assistent kunne beskrive produktserier, bruksområder, merkevarehistorie og konkurransefordeler. En fryd, narrativt sett. Men da en kunde spurte om det nominelle dreiemomentet for modellen CMP50L — altså den tekniske dataen folk slår opp i katalogen, tallet som avgjør kjøpet av en motor — svarte chatboten vagt, noen ganger plausibelt, andre ganger ikke. Fem måneders utvikling, en stadig mer forvirret driftsdirektør, og ingen som kunne forklare hvorfor.
Diagnosen kom ved en tilfeldighet, nesten av kjedsomhet, ved å inspisere databasen manuelt etter et nytt møte uten konklusjon. PDF-katalogen inneholdt 342 tekniske tabeller. I databasen hadde null kommet inn. Ikke en håndfull: null. Ingen. Koden som hentet ut tabellene fra PDF-ene lagret data i felt kalt columns og data, mens koden som deretter indekserte dem forventet felt kalt headers og rows. En "synonym" som ikke ble respektert. En intern konvensjon som hadde blitt brutt i en glemt refaktorering. Resultatet, i fem stille måneder: hele den numeriske intelligensen i katalogen — par, potenser, diametre, vekter, bestillingskoder, forsyningsspenninger — hadde rent ut av springen uten å bli helt i glasset. Trehundre og førti to tabeller, tapt én etter én i stille liturgi.
Dette er typen feil som ikke roper. Den utløser ingen unntak, får ingenting til å krasje, og dukker ikke opp i noen logger. Enkelt sagt, en del av verden slutter å eksistere for systemet ditt, og ingen legger merke til det før en bruker – vanligvis en sint bruker – stiller nok insisterende spørsmål for å avsløre avgrunnen. Og det er et symbol på et mye større problem enn feltnavn: generiske RAG-rammeverk er optimalisert for løpende tekst – artikler, nettsider, avsnitt av fortellinger – og behandler tabeller som annenrangs borgere, når de behandler dem i det hele tatt. Men italienske bedokumenter *er* ofte tabeller. Tekniske kataloger, prislisten, produktspesifikasjoner, sikkerhetsdatablad, ordrebekreftelser: den verdifulle delen, for de som konsulterer disse dokumentene, er den tabellariske. Den som ryker først og som ingen legger merke til.
Leksjonen er ikke "vær forsiktig med feltnavn". Den er mer komplisert: i et seriøst RAG (Retrieval-Augmented Generation) trenger enhver type innhold – tabeller, bilder, alfanumeriske koder, avsnittstitler, fotnoter – en dedikert behandling, designet, testet. Og funksjonstesten er ikke "chatbotten svarer på trivielle spørsmål" – selv ødelagte systemer svarer på dem, fordi det er nok flytende data til å konstruere noe plausibelt. Den ekte testen er "chatbotten svarer på spørsmål som tvinger den til å berøre hvert eneste stykke av pipelinen". Spesifikke, numeriske, verifiserbare spørsmål. Spørsmål der det finnes ett riktig svar, og du vet umiddelbart hvis systemet tar feil.
Hvis du ikke gjør denne testen, vet du ikke om din RAG fungerer. Du vet bare at den ikke klager. Og "ikke klager" er et veldig lavt kvalitetskriterium for et system som folk vil bruke til å ta beslutninger.
Har du en kommentar? Skriv til oss
Meldingen kommer kun til oss. Hvis kommentaren din er interessant kan vi publisere den nederst i artikkelen, men først etter vurdering.
Mens du skriver, løser nettleseren din et lite regnestykke – vår måte å hindre automatisk spam uten tredjepartstjenester eller «velg semafor»-oppgaver. Du trenger ikke gjøre noe, og ingen data forlater dette nettstedet.