GUIDE — Effektiv Database

Fra 200 sider til præcise bidder

Lange dokumenter opdeles i meningsfyldte bidder, konverteres til matematiske vektorer og lagres i en database der kan søge på millisekunder.

Fra 200 sider til præcise bidder

I forrige post fik systemet teksten ud af filerne. Nu skal teksten gøres søgbar. Det sker i tre trin: opdeling, indlejring og lagring.

Teksten skæres i bidder

En AI-model kan ikke arbejde med et 80-siders dokument som én blok — den har et begrænset arbejdsvindue, den mængde tekst den kan have i fokus på én gang. Løsningen er at skære teksten i bidder, typisk ét afsnit ad gangen.

Hver bid er max 512 ord. Det tal er ikke tilfældigt — det svarer til hvad OpenAIs embedding-model håndterer effektivt på én gang. Systemet skærer aldrig midt i en sætning, for det ville ødelægge meningen.

Det vigtigste er hvad der gemmes med hver bid. Stammer den fra afsnittet "Depositumvilkår" under "Forsikring" i kapitel 3, gemmes hele den overskriftskæde med. Bidden ved hvorfra den stammer. Når systemet finder den under en søgning, kan det pege præcist tilbage til kilden — ikke bare dokumentet, men det specifikke afsnit.

Fra ord til tal

Ren tekst kan systemet søge efter ord i, men ikke forstå mening med. Det kan matche "depositum", men ved ikke at "sikkerhedsstillelse" handler om det samme.

Hver bid sendes til OpenAI, som konverterer teksten til 1.536 tal. De tal repræsenterer meningen bag teksten — tænk på det som en retning i et meget stort rum. Bidder med samme mening ender tæt på hinanden i det rum, selv om de bruger helt forskellige ord.

Det betyder at en bruger kan spørge "hvad sker der hvis lejer ikke betaler sikkerhed?" og systemet finder relevante bidder om "depositum" — selv om ordet "depositum" ikke er med i spørgsmålet. Ordvalget i spørgsmålet er ligegyldigt.

Gemt og klar til søgning

Teksten og tallene gemmes i Supabase, en PostgreSQL-database med understøttelse for vektorsøgning. Her ligger selve tekstbiddet, de 1.536 tal, fuld dokumenttekst til visning i svar, og metadata om kilde, titel og position.

HNSW-indekset gør søgningen lynhurtig. I stedet for at sammenligne spørgsmålets vektor med alle millioner af bidder bygger systemet et navigationstræ, der finder de relevante bidder på millisekunder — selv i en database med hundredtusindvis af bidder fra hundredvis af dokumenter.


Nu er dokumenterne indlæst, opdelt og forstået. Den næste — og sidste — post handler om hvad der sker, når et spørgsmål stilles: søgning og rangering.

Lad os tage en snak.

Skriv til mig, så ringer jeg dig op inden for 24 timer. Ingen forpligtelse — bare en snak om hvad der kan automatiseres hos dig.

nikolai@niroai.dk+45 50 55 10 64
Send en besked