Vector Database
Komplet guide til vektordatabaser: Hvad de er, hvorfor de er essentielle til RAG og AI-applikationer, og hvordan du vælger mellem Pinecone, Weaviate, Qdrant og Chroma.
Foto: Domaintechnik Ledl.net / Unsplash
Hvad er en vector database?
En vector database (eller vektordatabase på dansk) er en specialiseret database der gemmer og søger i tal-vektorer i stedet for traditionelle rækker og kolonner. En vektor er en liste af tal, typisk mellem 384 og 3072 dimensioner, som repræsenterer betydningen af en tekst, et billede eller et andet stykke data.
Disse vektorer produceres af en embedding-model som OpenAIs text-embedding-3, Anthropics Voyage AI eller open source alternativer som sentence-transformers. Når du sender en tekst gennem embedding-modellen, får du en vektor tilbage der indkoder tekstens semantiske indhold i et matematisk rum.
Magien ved vector databaser er at de kan finde "nærmeste naboer" ekstremt hurtigt. To tekster der betyder det samme - selv hvis de bruger forskellige ord - vil have vektorer der ligger tæt på hinanden. Det er grundlaget for semantisk søgning og retrieval-augmented generation (RAG).
Hvorfor har du brug for en?
RAG-systemer
Retrieval-Augmented Generation kræver en måde at finde relevante dokumenter hurtigt baseret på et brugerspørgsmål. Vector databaser finder semantisk lignende indhold i millisekunder - selv i databaser med millioner af chunks.
Semantisk søgning
Traditional keyword-søgning finder kun dokumenter der indeholder de præcise ord. Vektorsøgning forstår at "bilen virker ikke" og "motoren starter ikke" er relateret, selvom de bruger forskellige ord.
Anbefalingssystemer
Produkter, artikler eller videoer kan embedes og gemmes, så du hurtigt kan finde de mest lignende items. Bruges af Spotify, Pinterest og Netflix.
Lang-tids hukommelse for AI agenter
Agenter kan gemme samtaler, observationer og lærte fakta som vektorer og hente dem frem igen når relevant. Det simulerer en form for hukommelse der overgår context window-begrænsninger.
Sammenligning af vector databaser
| Database | Type | Bedst til |
|---|---|---|
| Pinecone | Managed cloud | Produktion, hurtig setup, ingen ops |
| Weaviate | Self-hosted / cloud | Hybrid søgning (vektor + keyword) |
| Qdrant | Self-hosted / cloud | High performance, Rust-baseret |
| Chroma | Self-hosted | Prototyper, lokal udvikling |
| pgvector | Postgres extension | Teams der allerede bruger Postgres |
| Supabase Vector | Managed pgvector | Startups, Next.js-apps |
Sådan virker vektorsøgning under motorhjelmen
Når du søger i en vector database, sammenligner den din query-vektor med alle gemte vektorer og returnerer de k mest lignende. Ligheden måles typisk med cosine similarity, Euclidean distance eller dot product. Jo mindre afstand i det matematiske rum, jo mere semantisk relateret er indholdet.
Problemet er at naiv sammenligning er O(n), hvilket er for langsomt når du har millioner af vektorer. Derfor bruger alle moderne vector databaser approximate nearest neighbor (ANN) algoritmer som HNSW, IVF eller ScaNN. Disse ofrer en lille smule præcision for at gå fra sekunder til millisekunder.
Indeksering er et separat trin hvor databasen bygger disse datastrukturer. Det kan tage fra minutter til timer afhængig af dataset-størrelse, men derefter er forespørgsler lynhurtige.
Praktiske tips til produktion
- Start med pgvector hvis du allerede har Postgres. Det er simpelt, og du undgår at introducere en ny infrastruktur-komponent. Skift senere hvis performance bliver et problem.
- Vælg den rigtige embedding-model. OpenAIs text-embedding-3-small koster næsten intet og er godt nok til de fleste use cases. Voyage AI og Cohere har ofte bedre kvalitet på tekniske domæner.
- Chunk strategisk. Hvordan du deler dine dokumenter op har enorm betydning for retrieval-kvalitet. 500-1000 tokens per chunk med 10 procent overlap er et godt startpunkt.
- Kombinér med keyword-søgning. Ren vektorsøgning fejler ofte på eksakte matches som produktnumre eller navne. Hybrid search (BM25 + vektor) giver næsten altid bedre resultater.
- Overvåg retrieval-kvalitet. Log hvilke chunks der hentes for hvert query. Når du bemærker dårlige resultater, så du kan justere chunking, embedding-model eller search-parametre.
Omkostninger
Managed services som Pinecone starter omkring 70 USD om måneden for mindre projekter og kan hurtigt nå 500+ USD ved større datasæt. Self-hosted løsninger som Qdrant eller Weaviate kan køre på en almindelig VPS for 20-50 USD om måneden, men kræver at du håndterer opdateringer, backup og skalering selv.
Glem ikke embedding-omkostninger. At embede en million chunks med text-embedding-3-small koster omkring 20 USD engangsgebyr, plus løbende omkostninger til nye dokumenter og user queries. Caching kan reducere query-omkostninger markant hvis du ofte får identiske spørgsmål.