Veni AI
Datenbanktechnologien

Vektordatenbanken und Einbettungssuchsysteme

Ein umfassender Leitfaden zur technischen Architektur von Vektordatenbanken, Einbettungssuchalgorithmen, HNSW-, IVF-Indexierung und unternehmensweiten semantischen Suchanwendungen.

Veni AI Technical Team12 Ocak 20255 dk okuma
Vektordatenbanken und Einbettungssuchsysteme

Vektor-Datenbanken und Embedding-Suchsysteme

Vektor-Datenbanken sind spezialisierte Datenbanken, die für die Speicherung und Ähnlichkeitssuche in hochdimensionalen Vektoren optimiert sind. Sie sind eine grundlegende Komponente moderner KI-Anwendungen, insbesondere von RAG-Systemen (Retrieval-Augmented Generation).

Was ist eine Vektor-Datenbank?

Während traditionelle Datenbanken für exakte Suchanfragen optimiert sind, konzentrieren sich Vektor-Datenbanken auf Approximate Nearest Neighbor (ANN)-Suchen.

Zentrale Konzepte

Embedding: Eine numerische Vektordarstellung von Daten (Text, Bild, Audio).

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

Ähnlichkeitssuche: Finden der Vektoren, die einem Anfragevektor am nächsten sind.

query_vector → Top-K most similar vectors

Distanzmetriken:

  • Cosine Similarity: Richtungssimilarität.
  • Euklidische Distanz (L2): Geometrische Distanz.
  • Dot Product: Skalarprodukt der Vektoren.

Ähnlichkeitsmetriken: Detaillierte Analyse

Cosine Similarity

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

Wertebereich: [-1, 1]

  • 1: Gleiche Richtung (identisch).
  • 0: Orthogonal (nicht verwandt).
  • -1: Entgegengesetzte Richtung.

Anwendungsfall: Textähnlichkeit, semantische Suche.

Euklidische Distanz (L2)

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

Wertebereich: [0, ∞) Anwendungsfall: Bildähnlichkeit, Clustering.

Dot Product

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

Anwendungsfall: Entspricht der Cosine Similarity bei normalisierten Embeddings.

Indexierungsalgorithmen

1. Brute Force (Flat Index)

Vergleich der Anfrage mit jedem einzelnen Vektor in der Datenbank.

Komplexität: O(n × d)

  • n: Anzahl der Vektoren.
  • d: Dimension.

Vorteil: 100 % Genauigkeit. Nachteil: Sehr langsam bei großen Datensätzen.

2. IVF (Inverted File Index)

Einschränkung des Suchraums durch Aufteilung der Vektoren in Cluster.

Algorithmus:

  1. Erstellen von Zentroiden mittels K-Means.
  2. Zuweisung jedes Vektors zu seinem nächstgelegenen Zentroid.
  3. Während der Suche nur innerhalb der nächstgelegenen nprobe-Cluster suchen.
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)

Ein graphbasierter Ansatz und heute die beliebteste Methode.

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)

Parameter:

  • M: Maximale Anzahl an Verbindungen pro Knoten.
  • ef_construction: Anzahl der Kandidaten beim Aufbau des Index.
  • ef_search: Anzahl der Kandidaten während der Anfrageausführung.

Vorteile:

  • Extrem schnelle Suche: O(log n).
  • Hohe Recall-Raten.
  • Unterstützt dynamisches Einfügen/Löschen.

4. Product Quantization (PQ)

Reduzierung der Speichernutzung durch Komprimierung von Vektoren.

Methode:

  1. Aufteilen des Vektors in M Sub-Vektoren.
  2. Zuordnung jedes Sub-Vektors zu einem von K Zentroiden.
  3. Speichern der Zentroid-IDs anstelle der ursprünglichen Vektorkomponenten.
1Original: 1536 dim × 4 bytes = 6KB 2PQ (M=96, K=256): 96 × 1 byte = 96 bytes 3Compression: ~64x

5. Scalar Quantization (SQ)

Umwandlung von Float32-Repräsentationen in Int8.

1Original: 1536 × 4 bytes = 6KB 2SQ8: 1536 × 1 byte = 1.5KB 3Compression: 4x 4## Vergleich beliebter Vektordatenbanken 5 6### Pinecone 7 8**Funktionen:** 9- Vollständig verwalteter Cloud-Service. 10- Automatisches Skalieren. 11- Metadaten-Filterung. 12- Namespace-Isolierung. 13 14**Verwendung:** 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

Funktionen:

  • Open Source.
  • Eingebaute Vektorisierung.
  • GraphQL API-Unterstützung.
  • Hybride Suche (Vektor + Keyword).

Qdrant

Funktionen:

  • In Rust geschrieben für hohe Performance.
  • Umfangreiche Filteroptionen.
  • Payload-Indexierung.
  • Unterstützung für verteilte Deployments.

Milvus

Funktionen:

  • GPU-Beschleunigung.
  • Multi-Vektor-Suche.
  • Time Travel (Versionierung).
  • Kubernetes-native Architektur.

ChromaDB

Funktionen:

  • Entwicklerfreundlich und einfach einzurichten.
  • In-Memory + persistente Modi.
  • Python-first Ansatz.
  • Ideal für Prototyping.

Vergleichstabelle

FunktionPineconeWeaviateQdrantMilvus
HostingCloudBeideBeideBeide
SkalierbarkeitAutoManuellManuellAuto
Hybride Suche
GPU-Unterstützung--
PreisPro VektorKostenlos/BezahltKostenlos/BezahltKostenlos/Bezahlt

Filterung und Metadaten

Pre-Filtering vs. Post-Filtering

Pre-Filtering:

  1. Zuerst Metadatenfilter anwenden.
  2. Vektorsuche innerhalb der gefilterten Menge durchführen.
  • Vorteil: Schneller.
  • Nachteil: Möglicher Recall-Verlust.

Post-Filtering:

  1. Top-K × Multiplikator über Vektorsuche finden.
  2. Metadatenfilter auf diese Ergebnisse anwenden.
  3. Finale Top-K zurückgeben.
  • Vorteil: Besserer Recall.
  • Nachteil: Langsamere Performance.

Hybride Suche

Kombination aus Keyword (BM25) + Vektorsuche:

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

Performance-Optimierung

Index-Parameter

Optimale HNSW-Einstellungen:

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

Batch-Verarbeitung

1# Schlecht: Einzelnes Insert 2for vec in vectors: 3 index.upsert([vec]) 4 5# Gut: 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 # Parallele Verbindungen 6)

Beispiel einer Enterprise-Architektur

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 und Observability

Wichtige Metriken

  • Query-Latenz (p50, p95, p99)
  • Recall-Rate
  • QPS (Queries Per Second)
  • Indexgröße
  • Speichernutzung

Alerting-Schwellenwerte

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## Fazit 10 11Vektordatenbanken sind unverzichtbare Komponenten moderner KI-Anwendungen. Mit der richtigen Wahl der Datenbank, der Indexierungsstrategie und geeigneten Optimierungen können Sie leistungsstarke semantische Suchsysteme entwickeln. 12 13Bei Veni AI bieten wir Unternehmenslösungen für die Vektorsuche an. Kontaktieren Sie uns für Ihre Anforderungen.

İlgili Makaleler