Hva er en vektordatabase?

Av Weapp · Oppdatert

En vektordatabase er en database som søker på likhet i betydning i stedet for på eksakte ord. Den lagrer embeddings, tekst gjort om til vektorer, og finner raskt vektorene som ligger nærmest et spørsmål. Derfor er den navet i RAG-løsninger. Noen ganger holder det likevel med en vektorutvidelse i den Postgres-databasen dere allerede har.

En vektordatabase er en database bygd for en bestemt oppgave: å søke på likhet i betydning i stedet for på eksakte ord. Det gjør den til navet i de fleste RAG-løsninger, der en AI skal svare ut fra deres egne dokumenter. Men det betyr ikke at alle trenger å skaffe seg en. Ofte holder det man allerede har. Her er hva den gjør og når den trengs.

Søk på betydning, ikke eksakte ord

For å forstå en vektordatabase hjelper det å først forstå hva den lagrer: embeddings. En embedding er en tekst gjort om til en liste med tall, en vektor, der tekster med lignende betydning får vektorer som ligger nær hverandre. En vektordatabase er spesialisert på å lagre slike vektorer og lynraskt finne dem som ligger nærmest et gitt spørsmål.

Resultatet er søk på meningsinnhold. Spør dere etter noe om «regninger», kan databasen hente frem et dokument som handler om «fakturaer» fordi vektorene for de to ordene ligger nær hverandre i betydning. Søket handler altså om hva teksten betyr, ikke om hvilke bokstaver den tilfeldigvis inneholder.

Forskjellen fra et vanlig databasesøk

Den tydeligste måten å forstå verdien på er å sette den opp mot en vanlig database. En tradisjonell database er bygd for eksakthet: Du spør etter et kundenummer, en dato eller et eksakt ord, og den returnerer radene som matcher nøyaktig. Det er perfekt når du vet nøyaktig hva du leter etter.

Men det svikter når spørsmålet handler om betydning. Et konkret eksempel: En bruker søker på «hvordan sier jeg opp abonnementet mitt». Et vanlig søk går glipp av et hjelpedokument med overskriften «avslutt avtalen din» fordi ingen ord matcher. En vektordatabase forstår at frasene betyr det samme, og finner riktig dokument likevel. Den ene svarer på «hvor finnes akkurat dette?», og den andre på «hva ligner dette?»

Derfor er den navet i RAG

RAG, retrieval-augmented generation, bygger på et enkelt opplegg: Før språkmodellen svarer, hentes de dokumentene som er relevante for spørsmålet, slik at svaret forankres i faktisk tekst i stedet for i modellens hukommelse. Det avgjørende steget er å finne de riktige dokumentene, og det er nettopp det en vektordatabase gjør.

Den holder embeddings for alle dokumentene deres og plukker for hvert spørsmål ut de mest relevante avsnittene, raskt, også når materialet er stort. Uten effektivt likhetssøk ville det steget blitt en flaskehals. Derfor er vektordatabasen sjelden den komponenten man snakker om, men nesten alltid den som gjør en RAG-løsning brukbar i praksis.

Når den eksisterende Postgres-databasen holder

Her er det verdt å holde litt igjen: Ikke alle trenger en spesialisert vektordatabase. For mindre datamengder er det ofte nok å legge til vektorstøtte i en database dere allerede drifter.

Det vanligste eksempelet er pgvector, en utvidelse som gir PostgreSQL evnen til å lagre og søke i vektorer. Kjører dere allerede Postgres, kan dere ofte begynne der, uten å måtte forvalte ny infrastruktur. Andre alternativer, som Pinecone eller Qdrant, er dedikerte løsninger som blir berettiget først når datamengden og kravene til søkehastighet blir store.

Rådet er å starte med det dere har, og oppgradere når behovet faktisk oppstår, ikke før. En ekstra database er også noe som skal driftes, overvåkes og betales for.

Hva valget egentlig avhenger av

Når spørsmålet om en dedikert vektordatabase først blir aktuelt, er det noen få ting som avgjør. Datamengden er den tydeligste: En håndfull dokumenter stiller ingen krav, men millioner av tekstbiter gjør at søkehastigheten begynner å bety noe. Kravene til responstid er en annen. Skal søket føles umiddelbart for en bruker i sanntid, stilles det høyere krav enn om det kjører i bakgrunnen.

Til slutt veier den eksisterende infrastrukturen deres tungt. Kjører dere allerede Postgres, er terskelen for pgvector lav, mens en helt skybasert stack kanskje passer bedre med en administrert tjeneste. Poenget er å la behovet styre: Velg etter datamengde, ytelseskrav og det dere allerede drifter, i stedet for automatisk å gripe etter den mest spesialiserte løsningen. Vil dere ha hjelp til å avgjøre hva som holder for akkurat deres løsning, kan dere lese mer om arbeidet vårt med AI eller ta kontakt.

Ofte stilte spørsmål

Hva gjør en vektordatabase, enkelt sagt?

Den lagrer tekst som er gjort om til vektorer, embeddings, og leter deretter etter vektorene som ligger nærmest et gitt spørsmål. I praksis betyr det at den søker på betydning: Den finner det som ligner spørsmålet innholdsmessig, også når ordene ikke er helt de samme. Det er et helt annet søkeprinsipp enn i en vanlig database.

Hvordan skiller den seg fra en vanlig database?

En vanlig database leter etter eksakte verdier eller ordtreff, altså rader som matcher akkurat det du spør etter. En vektordatabase leter etter likhet i betydning og rangerer resultatene etter hvor nær spørsmålet de ligger. Den svarer altså på «hva ligner dette?» i stedet for «hvor finnes akkurat dette?»

Hvorfor er vektordatabasen navet i RAG?

Fordi RAG bygger på å finne de dokumentene språkmodellen skal få før den svarer, og det er nettopp det en vektordatabase er bygd for. Den holder embeddings for alle dokumentene deres og plukker raskt ut de mest relevante for hvert spørsmål. Uten effektivt likhetssøk ville RAG blitt tregt og upålitelig.

Må vi skaffe en egen vektordatabase?

Ikke alltid. For mindre datamengder er det ofte nok å legge til en vektorutvidelse i en database dere allerede har, for eksempel pgvector i Postgres. Først når volumene og kravene til søkehastighet vokser, blir en dedikert løsning berettiget. Start med det dere har, og oppgrader når behovet er bevist, ikke før.

Hvilke alternativer finnes?

Noen vanlige navn er pgvector, som gir Postgres vektorsøk, og dedikerte tjenester som Pinecone og Qdrant. Hva som passer, avhenger av datamengde, ytelseskrav og hvordan resten av infrastrukturen deres ser ut. Poenget er å velge etter behov i stedet for automatisk å gripe etter den mest spesialiserte løsningen.