Veni AI
Databasetechnologieën

Vector Databases en Embedding-zoeksystemen

Een uitgebreide gids over de technische architectuur van vector-databases, embedding-zoekalgoritmen, HNSW, IVF-indexering en semantische zoektoepassingen voor ondernemingen.

Veni AI Technical Team12 Ocak 20256 dk okuma
Vector Databases en Embedding-zoeksystemen

Vector Databases en Embedding Search Systemen

Vector databases zijn gespecialiseerde databases die geoptimaliseerd zijn voor het opslaan en uitvoeren van similariteitszoekopdrachten op hoog-dimensionale vectoren. Ze vormen een fundamenteel onderdeel van moderne AI-toepassingen, met name in RAG (Retrieval-Augmented Generation) systemen.

Wat is een Vector Database?

Waar traditionele databases geoptimaliseerd zijn voor exacte match-queries, richten vector databases zich op Approximate Nearest Neighbor (ANN) zoekopdrachten.

Kernconcepten

Embedding: Een numerieke vectorrepresentatie van data (tekst, afbeelding, audio).

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

Similarity Search: Het vinden van de vectoren die het dichtst bij een queryvector liggen.

query_vector → Top-K most similar vectors

Distance Metrics:

  • Cosine Similarity: Richtingssimilariteit.
  • Euclidean Distance (L2): Geometrische afstand.
  • Dot Product: Inwendig product van vectoren.

Similarity Metrics: Gedetailleerde Analyse

Cosine Similarity

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

Waardebereik: [-1, 1]

  • 1: Zelfde richting (identiek).
  • 0: Orthogonaal (niet gerelateerd).
  • -1: Tegengestelde richting.

Use Case: Tekstsimilariteit, semantisch zoeken.

Euclidean Distance (L2)

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

Waardebereik: [0, ∞) Use Case: Afbeeldingssimilariteit, clustering.

Dot Product

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

Use Case: Equivalent aan cosine voor genormaliseerde embeddings.

Indexeringsalgoritmen

1. Brute Force (Flat Index)

Het vergelijken van de query met elke vector in de database.

Complexiteit: O(n × d)

  • n: Aantal vectoren.
  • d: Dimensie.

Voordeel: 100% nauwkeurigheid. Nadeel: Zeer traag voor grote datasets.

2. IVF (Inverted File Index)

Het verkleinen van de zoekruimte door vectoren op te delen in clusters.

Algoritme:

  1. Maak centroiden met behulp van K-means.
  2. Wijs elke vector toe aan zijn dichtstbijzijnde centroid.
  3. Tijdens het zoeken wordt alleen gekeken binnen de dichtstbijzijnde nprobe clusters.
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)

Een graaf-gebaseerde aanpak en vandaag de dag de meest populaire methode.

Structuur:

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)

Parameters:

  • M: Maximaal aantal verbindingen per node.
  • ef_construction: Aantal kandidaten tijdens het bouwen van de index.
  • ef_search: Aantal kandidaten tijdens het uitvoeren van een query.

Voordelen:

  • Zeer snelle zoekopdrachten: O(log n).
  • Hoge recall-ratio’s.
  • Ondersteunt dynamisch invoegen/verwijderen.

4. Product Quantization (PQ)

Het verminderen van het geheugengebruik door vectoren te comprimeren.

Methode:

  1. Splits de vector in M sub-vectoren.
  2. Map elke sub-vector naar één van K centroiden.
  3. Sla centroid-ID’s op in plaats van de originele vectorcomponenten.
1Original: 1536 dim × 4 bytes = 6KB 2PQ (M=96, K=256): 96 × 1 byte = 96 bytes 3Compression: ~64x

5. Scalar Quantization (SQ)

Het omzetten van Float32-representaties naar Int8.

1Original: 1536 × 4 bytes = 6KB 2SQ8: 1536 × 1 byte = 1.5KB 3Compression: 4x 4## Vergelijking van Populaire Vector Databases 5 6### Pinecone 7 8**Functies:** 9- Volledig beheerde cloudservice. 10- Automatische schaalvergroting. 11- Metadata-filtering. 12- Namespace-isolatie. 13 14**Gebruik:** 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

Functies:

  • Open source.
  • Ingebouwde vectorisatie.
  • GraphQL API-ondersteuning.
  • Hybride zoekmogelijkheden (vector + keyword).

Qdrant

Functies:

  • Geschreven in Rust voor hoge prestaties.
  • Uitgebreide filteropties.
  • Payload-indexering.
  • Ondersteuning voor gedistribueerde deployment.

Milvus

Functies:

  • GPU-versnelling.
  • Multi-vector search.
  • Time travel (versiebeheer).
  • Kubernetes-native architectuur.

ChromaDB

Functies:

  • Ontwikkelaarsvriendelijk en eenvoudig op te zetten.
  • In-memory + persistente modi.
  • Python-first aanpak.
  • Ideaal voor prototyping.

Vergelijkingstabel

FunctiePineconeWeaviateQdrantMilvus
HostingCloudBeideBeideBeide
SchaalbaarheidAutoHandmatigHandmatigAuto
Hybride Search
GPU-ondersteuning--
PrijzenPer vectorGratis/BetaaldGratis/BetaaldGratis/Betaald

Filtering en Metadata

Pre-filtering vs Post-filtering

Pre-filtering:

  1. Pas eerst de metadata-filter toe.
  2. Voer een vector search uit binnen de gefilterde set.
  • Voordeel: Sneller.
  • Nadeel: Mogelijk lagere recall.

Post-filtering:

  1. Vind Top-K × multiplier resultaten via vector search.
  2. Pas de metadata-filter toe op deze resultaten.
  3. Retourneer de uiteindelijke top K.
  • Voordeel: Betere recall.
  • Nadeel: Lagere prestaties.

Hybride Search

Combinatie van Keyword (BM25) + Vector search:

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

Prestatie-optimalisatie

Indexparameters

Optimale HNSW-instellingen:

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

Batch Processing

1# Slecht: enkele insert 2for vec in vectors: 3 index.upsert([vec]) 4 5# Goed: batch insert 6index.upsert(vectors, batch_size=100)

Connection Pooling

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

Voorbeeld van Enterprise-architectuur

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└─────────────────────────────────────────────────────┘

Monitoring en Observability

Belangrijke Metrics

  • Query-latency (p50, p95, p99)
  • Recall-percentage
  • QPS (Queries Per Second)
  • Indexgrootte
  • Geheugengebruik

Alerting-drempels

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## Conclusie 10 11Vector-databases zijn onmisbare componenten van moderne AI-toepassingen. Met de juiste keuze van database, indexeringsstrategie en optimalisaties kun je hoogwaardige semantische zoeksystemen bouwen. 12 13Bij Veni AI bieden we enterprise vector search-oplossingen. Neem contact met ons op voor jouw vereisten.

İlgili Makaleler