Veni AI
Databaseteknologier

Vektordatabaser og innebyggingssøkssystemer

En omfattende guide til den tekniske arkitekturen for vektordatabaser, algoritmer for innebyggingssøk, HNSW, IVF-indeksering og semantiske søkeapplikasjoner for virksomheter.

Veni AI Technical Team12 Ocak 20255 dk okuma
Vektordatabaser og innebyggingssøkssystemer

Vektordatabaser og innebyggingssøk-systemer

Vektordatabaser er spesialiserte databaser optimalisert for lagring og utføring av likhetssøk på høy-dimensjonale vektorer. De er en grunnleggende komponent i moderne KI‑applikasjoner, spesielt RAG‑systemer (Retrieval-Augmented Generation).

Hva er en vektordatabase?

Mens tradisjonelle databaser er optimalisert for eksakte oppslag, fokuserer vektordatabaser på Approximate Nearest Neighbor (ANN)-søk.

Grunnleggende konsepter

Embedding: En numerisk vektorrepresentasjon av data (tekst, bilde, lyd).

"Artificial intelligence" → [0.12, -0.45, 0.89, ..., 0.34] (e.g., 1536 dimensions)

Similarity Search: Finne vektorene som ligger nærmest en spørringsvektor.

query_vector → Top-K most similar vectors

Avstandsmål:

  • Cosine Similarity: Retningslikhet.
  • Euclidean Distance (L2): Geometrisk avstand.
  • Dot Product: Indreprodukt av vektorer.

Similarity Metrics: Detaljert analyse

Cosine Similarity

cos(A, B) = (A · B) / (||A|| × ||B||)

Verdiområde: [-1, 1]

  • 1: Samme retning (identiske).
  • 0: Ortogonale (ikke relatert).
  • -1: Motsatt retning.

Bruksområde: Tekstlikhet, semantisk søk.

Euclidean Distance (L2)

d(A, B) = √(Σ(Aᵢ - Bᵢ)²)

Verdiområde: [0, ∞)
Bruksområde: Bildelikhet, clustering.

Dot Product

A · B = Σ(Aᵢ × Bᵢ)

Bruksområde: Tilsvarer cosine for normaliserte embeddings.

Indekseringsalgoritmer

1. Brute Force (Flat Index)

Sammenligner spørringen med hver eneste vektor i databasen.

Kompleksitet: O(n × d)

  • n: Antall vektorer.
  • d: Dimensjon.

Fordel: 100% nøyaktighet.
Ulempe: Veldig tregt for store datasett.

2. IVF (Inverted File Index)

Begrenser søkeområdet ved å dele vektorer inn i klynger.

Algoritme:

  1. Lag sentroider med K-means.
  2. Tilordne hver vektor til nærmeste centroid.
  3. Under søk, se kun i de nærmeste nprobe-klyngene.
1Parameters: 2- nlist: Number of clusters (typically √n) 3- nprobe: Number of clusters to search 4 5Trade-off: Higher nprobe → higher accuracy, lower speed.

3. HNSW (Hierarchical Navigable Small World)

En grafbasert tilnærming og den mest populære metoden i dag.

Struktur:

1Layer 2: o-------o-------o (sparse) 2 | | | 3Layer 1: o-o-o---o-o-o---o-o-o (medium) 4 | | | | | | | | | 5Layer 0: o-o-o-o-o-o-o-o-o-o-o-o (dense)

Parametere:

  • M: Maksimalt antall forbindelser per node.
  • ef_construction: Antall kandidater under indeksbygging.
  • ef_search: Antall kandidater under søkekjøring.

Fordeler:

  • Ekstremt raske søk: O(log n).
  • Høy recall.
  • Støtter dynamisk innsetting/sletting.

4. Product Quantization (PQ)

Reduserer minnebruk ved å komprimere vektorer.

Metode:

  1. Del vektoren inn i M sub-vektorer.
  2. Kartlegg hver sub-vektor til én av K sentroider.
  3. Lagre centroid-ID-er i stedet for de originale komponentene.
1Original: 1536 dim × 4 bytes = 6KB 2PQ (M=96, K=256): 96 × 1 byte = 96 bytes 3Compression: ~64x

5. Scalar Quantization (SQ)

Konvertering av Float32-representasjoner til Int8.

1Original: 1536 × 4 bytes = 6KB 2SQ8: 1536 × 1 byte = 1.5KB 3Compression: 4x 4## Sammenligning av populære vektordatabaser 5 6### Pinecone 7 8**Funksjoner:** 9- Fullt administrert skytjeneste. 10- Automatisk skalering. 11- Metadata-filtrering. 12- Navneromsisolasjon. 13 14**Bruk:** 15```python 16import pinecone 17 18pinecone.init(api_key="xxx", environment="us-west1-gcp") 19index = pinecone.Index("my-index") 20 21# Upsert 22index.upsert(vectors=[ 23 {"id": "vec1", "values": [0.1, 0.2, ...], "metadata": {"category": "tech"}} 24]) 25 26# Query 27results = index.query(vector=[0.1, 0.2, ...], top_k=10, filter={"category": "tech"})

Weaviate

Funksjoner:

  • Open source.
  • Innebygd vektorisering.
  • Støtte for GraphQL API.
  • Hybrid søk (vektor + nøkkelord).

Qdrant

Funksjoner:

  • Skrevet i Rust for høy ytelse.
  • Rike filtreringsmuligheter.
  • Payload-indeksering.
  • Støtte for distribuert utrulling.

Milvus

Funksjoner:

  • GPU-akselerasjon.
  • Multi-vektorsøk.
  • Time travel (versjonering).
  • Kubernetes-native arkitektur.

ChromaDB

Funksjoner:

  • Utviklervennlig og enkel å sette opp.
  • Minnebasert + vedvarende modus.
  • Python-first tilnærming.
  • Ideell for prototyping.

Sammenligningstabell

FunksjonPineconeWeaviateQdrantMilvus
HostingCloudBothBothBoth
SkalerbarhetAutoManualManualAuto
Hybrid søk
GPU-støtte--
PrisingPer vectorFree/PaidFree/PaidFree/Paid

Filtrering og metadata

Pre-filtering vs Post-filtering

Pre-filtering:

  1. Bruk metadatafilter først.
  2. Utfør vektorsøk innenfor det filtrerte settet.
  • Fordel: Raskere.
  • Ulempe: Potensiell reduksjon i recall.

Post-filtering:

  1. Finn Top-K × multiplikator via vektorsøk.
  2. Bruk metadatafilter på disse resultatene.
  3. Returner endelige topp K.
  • Fordel: Bedre recall.
  • Ulempe: Lavere ytelse.

Hybrid Search

Kombinerer nøkkelord (BM25) + vektorsøk:

final_score = α × vector_score + (1-α) × keyword_score

Ytelsesoptimalisering

Indeksparametere

Optimale HNSW-innstillinger:

1High Recall: M=32, ef=200 2High Speed: M=16, ef=50 3Balanced: M=24, ef=100

Batch-prosessering

1# Poor: Singular insert 2for vec in vectors: 3 index.upsert([vec]) 4 5# Good: Batch insert 6index.upsert(vectors, batch_size=100)

Tilkoblingspooling

1from pinecone import Pinecone 2 3pc = Pinecone( 4 api_key="xxx", 5 pool_threads=30 # Parallel connections 6)

Eksempel på bedriftsarkitektur

1┌─────────────────────────────────────────────────────┐ 2│ Application │ 3└──────────────────────┬──────────────────────────────┘ 45┌──────────────────────▼──────────────────────────────┐ 6│ Vector Search Service │ 7│ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │ 8│ │ Query │ │ Reranker │ │ Cache │ │ 9│ │ Engine │ │ Service │ │ (Redis) │ │ 10│ └─────────────┘ └─────────────┘ └─────────────┘ │ 11└──────────────────────┬──────────────────────────────┘ 1213┌──────────────────────▼──────────────────────────────┐ 14│ Vector Database Cluster │ 15│ ┌─────────┐ ┌─────────┐ ┌─────────┐ │ 16│ │ Shard 1 │ │ Shard 2 │ │ Shard 3 │ │ 17│ └─────────┘ └─────────┘ └─────────┘ │ 18└─────────────────────────────────────────────────────┘

Overvåking og observabilitet

Nøkkelmetrikker

  • Forespørselslatens (p50, p95, p99)
  • Recall-rate
  • QPS (Queries Per Second)
  • Indeksstørrelse
  • Minnebruk

Varslingsterskler

1alerts: 2 - name: high_latency 3 condition: p99_latency > 200ms 4 severity: warning 5 6 - name: low_recall 7 condition: recall < 0.9 8 severity: critical 9## Konklusjon 10 11Vektordatabaser er uunnværlige komponenter i moderne AI‑applikasjoner. Med riktig valg av database, indekseringsstrategi og optimaliseringer kan du bygge semantiske søkesystemer med høy ytelse. 12 13Hos Veni AI tilbyr vi enterprise‑løsninger for vektorsøk. Kontakt oss for dine behov.

İlgili Makaleler