Hvorfor De trenger en vektordatabase
Forstå begrensningene ved likhetssøk med full gjennomgang, hvordan algoritmer for tilnærmet nærmeste nabo, som HNSW, fungerer, og hvilke problemer vektordatabaser løser i produksjon.
Hvorfor De trenger en vektordatabase er en gratis leksjon i AI Engineering Academy på CoddyKit. Dette er leksjon 1 av 4. Du kan lese hele leksjonen gratis nedenfor – og deretter øve praktisk i nettleseren med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i AI Engineering Academy, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i AI Engineering Academy inneholder totalt 4 leksjoner.
Begrensningene ved søk i minnet
Semantisk søk med NumPy fungerer godt for små korpus, men har et grunnleggende skaleringsproblem: hvert søk skanner alle vektorer. Med 1 million dokumenter krever hvert søk 1,5 milliarder flyttallsmultiplikasjoner og tar flere hundre millisekunder. Enda verre er det at alle vektorene må få plass i RAM.
AI-systemer i produksjon må kunne søke gjennom millioner av dokumenter på under 50 ms. Det er dette vektordatabaser er utviklet for å levere.
Omtrentlig søk etter nærmeste nabo
Approximate Nearest Neighbor (ANN)-algoritmer bytter bort en liten mengde nøyaktighet mot dramatiske hastighetsforbedringer. I stedet for å kontrollere hver vektor bruker ANN-algoritmer smarte indekseringsstrukturer for å hoppe over store deler av søkerommet.
I praksis returnerer ANN den faktiske nærmeste naboen i over 95 % av tilfellene, samtidig som det er 100–1000 ganger raskere enn eksakt søk. For RAG er denne avveiningen nesten alltid verdt det.
Slik fungerer HNSW
HNSW (Hierarchical Navigable Small World) er den dominerende ANN-algoritmen som brukes av Pinecone, Weaviate, Qdrant og pgvector. Den bygger en graf med flere lag, der hver node er koblet til sine nærmeste naboer. Søket starter i det øverste, sparsomme laget, navigerer til det omtrentlige området og går deretter ned til det tette bunnlaget for presisjon.
HNSW gir utmerket søkehastighet (logaritmisk i forhold til datasettets størrelse) og høy gjenfinningsgrad, men krever at indeksen bygges på forhånd.
Hva vektordatabaser tilbyr i tillegg
En vektordatabase er mer enn en ANN-indeks. Den tilbyr også:
- Metadatafiltrering — hent bare vektorer der
category='finance'ellerdate > '2024-01-01' - Vedvarende lagring — data overlever omstarter og kan skaleres utover RAM
- CRUD-operasjoner — sett inn, oppdater og slett enkeltvektorer
- Navneområder for isolasjon — separate samlinger for ulike kunder eller miljøer
- Horisontal skalering — fordel millioner av vektorer på tvers av shards
Metadatafiltrering i praksis
Metadatafiltrering lar Dem begrense gjenfinningen til et relevant delsett før ANN-søket kjøres. I et RAG-system med flere leietakere kan De for eksempel filtrere på tenant_id, slik at brukerne bare ser sine egne dokumenter. Uten metadatafiltrering måtte De hatt en separat indeks for hver leietaker.
Dette er en av de viktigste egenskapene som skiller vektordatabaser fra enkle ANN-biblioteker som FAISS.
# Conceptual example — Pinecone query with metadata filter
results = index.query(
vector=query_embedding,
top_k=5,
filter={
'tenant_id': {'$eq': 'acme_corp'},
'document_type': {'$in': ['invoice', 'contract']},
'date': {'$gte': '2024-01-01'}
},
include_metadata=True
)FAISS: ANN-bibliotek med høy ytelse
FAISS (Facebook AI Similarity Search) er et ANN-bibliotek med åpen kildekode fra Meta — det raskeste alternativet for GPU-akselerert søk. Det er ikke en komplett database: det har ingen vedvarende lagring, ingen metadata og ingen innebygd betjening.
FAISS er ideelt når De trenger maksimal gjennomstrømming på én maskin og håndterer vedvarende lagring selv. Chroma, Weaviate og pgvector bruker alle FAISS eller HNSW under panseret.
import faiss
import numpy as np
d = 1536 # dimension
n = 10000 # number of vectors
# Build a flat (exact) index as a baseline
index = faiss.IndexFlatIP(d) # Inner Product = dot product
# Add random vectors (pretend these are embeddings)
vectors = np.random.randn(n, d).astype('float32')
faiss.normalize_L2(vectors) # normalize for cosine sim
index.add(vectors)
query = np.random.randn(1, d).astype('float32')
faiss.normalize_L2(query)
scores, indices = index.search(query, k=5)
print('Top 5 indices:', indices[0])
print('Top 5 scores:', scores[0])Vektordatabaser kontra tradisjonelle databaser
Tradisjonelle SQL-databaser som PostgreSQL er optimalisert for eksakte oppslag og områdesøk på strukturerte data. De er ikke utviklet for søk etter nærmeste nabo i høy dimensjonalitet. Selv med pgvector-utvidelsen er ren PostgreSQL tregere enn spesialbygde vektordatabaser for store korpus.
pgvector er likevel et utmerket valg når applikasjonen allerede kjører på PostgreSQL og korpuset har færre enn noen få millioner dokumenter, siden De unngår å legge til en ny infrastrukturkomponent.
Administrerte kontra selvhostede alternativer
Valg av vektordatabase faller i to kategorier:
- Administrert (serverless): Pinecone, Weaviate Cloud — ingen infrastruktur å administrere, betaling per søk/lagring og umiddelbar skalerbarhet
- Selvhostet: Qdrant, Chroma, Weaviate open-source, pgvector — full kontroll og lavere kostnad i stor skala, men De må administrere sikkerhetskopier, oppgraderinger og skalering
For prosjekter i en tidlig fase bør De starte med en administrert tjeneste for å komme raskt i gang. Vurder selvhosting når de månedlige kostnadene overstiger 200–300 USD.
Indekstyper: Flat, IVF og HNSW
Ulike indekstyper gir ulike avveininger:
- Flat: Eksakt søk uten tilnærming, tregt i stor skala, men uten tap av nøyaktighet — egner seg godt som referanse ved ytelsesmålinger
- IVF (Inverted File): Deler vektorer inn i klynger og søker bare i de nærmeste klyngene — raskt, men krever justering av
nlistognprobe - HNSW: Grafbasert, gir den beste avveiningen mellom gjenfinningsgrad og hastighet for de fleste arbeidsbelastninger og er standard i de fleste produksjonsdatabaser
Kvantisering for redusert minnebruk
Vektorkvantisering komprimerer hvert 32-bits flyttall i en vektor til færre biter. Dette reduserer minnebruken kraftig, på bekostning av et lite tap av nøyaktighet:
- FP32: 1536 dimensjoner × 4 byte = 6 KB per vektor
- FP16: 3 KB per vektor — 2× komprimering, ubetydelig tap av nøyaktighet
- INT8: 1,5 KB per vektor — 4× komprimering, rundt 1 % lavere gjenfinningsgrad
Med 10 millioner vektorer reduserer INT8-kvantisering minnebruken fra 60 GB til 15 GB, noe som kan avgjøre om dataene får plass i RAM eller ikke.
Når De bør oppgradere fra NumPy til en vektordatabase
Vurder å bytte fra NumPy-søk i minnet til en vektordatabase når:
- korpuset overstiger 50 000 dokumenter og spørringsforsinkelsen øker
- De trenger metadatafiltrering (etter dato, bruker, kategori og så videre)
- De trenger vedvarende lagring som overlever omstarter av applikasjonen
- flere tjenester eller brukere må dele den samme indeksen
- De trenger å oppdatere eller slette enkeltstående dokumenter uten å indeksere alt på nytt
Kort kontroll
Test forståelsen Deres av AI Engineering-konseptene fra denne leksjonen.
Oppsummering av leksjonen
I denne leksjonen lærte De: brute-force-søk med NumPy skalerer ikke utover titusenvis av dokumenter, HNSW muliggjør raskt omtrentlig søk etter nærmeste nabo ved å navigere i en hierarkisk graf, og vektordatabaser legger til metadatafiltrering, vedvarende lagring og CRUD-operasjoner oppå ANN-indekser. Nå skal vi sette opp Pinecone, den mest populære administrerte vektordatabasen, og indeksere våre første dokumenter.
Lær deg Python med en AI-veileder – gratis
Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.
- Kurs
- 30
- Leksjoner
- 120
Ofte stilte spørsmål
Er leksjonen «Hvorfor De trenger en vektordatabase» gratis?
Ja – hele teksten i «Hvorfor De trenger en vektordatabase» er gratis å lese her på nettet. For å øve interaktivt med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt, og for å låse opp resten av AI Engineering Academy-kurset, kan du oppgradere til CoddyKit PRO. Kurset i AI Engineering Academy inneholder totalt 4 leksjoner.
Hva lærer jeg i «Hvorfor De trenger en vektordatabase»?
Forstå begrensningene ved likhetssøk med full gjennomgang, hvordan algoritmer for tilnærmet nærmeste nabo, som HNSW, fungerer, og hvilke problemer vektordatabaser løser i produksjon. Du øver på AI Engineering Academy med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.
Trenger jeg erfaring for å begynne med AI Engineering Academy?
Ingen tidligere erfaring er nødvendig. AI Engineering Academy på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 1 av 4.
Hvor lang tid tar leksjonen «Hvorfor De trenger en vektordatabase»?
De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.
Kan jeg skrive og kjøre kode i denne AI Engineering Academy-leksjonen?
Ja. Alle AI Engineering Academy-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.
Alle leksjonene i dette kurset
- Hvorfor De trenger en vektordatabase
- Kom i gang med Pinecone
- pgvector: embeddinger i PostgreSQL
- Velge og ytelsesteste vektorlager