Wenn du deiner AI-Anwendung Funktionen wie "Text-zu-Bild-Suche", "semantische Suche" oder "Ähnlichkeitsempfehlungen" hinzufügen möchtest – was ist dein erster Gedanke? Chroma? Pinecone? Oder Weaviate?
Das Open-Source-Projekt, das ich dir heute vorstelle, könnte deine Sicht auf Vektordatenbanken komplett verändern – es heißt Zvec und ist eine eingebettete Vektordatenbank aus Alibabas Tongyi Lab. Man nennt sie auch "das SQLite unter den Vektordatenbanken".
Kein Server, kein Docker, keine Konfigurationsdateien. Nach pip install zvec läuft sie direkt in deinem Python-Prozess. So einfach ist das.
Projektübersicht
Zvec ist eine leichtgewichtige, In-Process Vektordatenbank von Alibaba. Ihr Design-Prinzip ist identisch mit SQLite – keine Abhängigkeit von externen Diensten, direkt in deine Anwendung eingebettet.
| Eigenschaft | Beschreibung |
|---|---|
| GitHub Stars | 10.400+ (Juni 2026 GitHub Trending) |
| Lizenz | Apache 2.0 |
| Sprache | C++ Core, Multi-Language SDKs (Python / Node.js / Go / Rust / Dart) |
| Aktuelle Version | v0.5.0 (2026-06-12) |
| Engine | Proxima (Alibabas interner Vektorsuch-Engine) |
Zvec vs. traditionelle Vektordatenbanken
| Eigenschaft | Zvec | Chroma | Pinecone | Milvus |
|---|---|---|---|---|
| Deployment | In-Process (eingebettet) | Server erforderlich | Cloud-Managed | Deployment erforderlich |
| Installation | pip install zvec |
Docker erforderlich | Account-Registrierung | Komplexes Deployment |
| Speicherverbrauch | Niedrig (DiskANN-Index unterstützt Festplattenspeicher) | Mittel | Nicht zutreffend | Hoch |
| Einsatzszenario | Lokale Apps, Edge, mittelgroße RAG | Prototyp-Entwicklung | Cloud-Produktion | Großcluster |
Kurz gesagt: Wenn du eine Vektordatenbank brauchst, die sofort einsatzbereit ist, ohne Server und Konfiguration – Zvec ist die leichtgewichtigste und schnellste Option.
Installation
Zvec unterstützt mehrere Betriebssysteme und Programmiersprachen. Die Installation ist denkbar einfach.
Python (empfohlen)
pip install zvec
Erfordert Python 3.10 - 3.14.
Node.js
npm install @zvec/zvec
Go
go get github.com/zvec-ai/zvec-go
Rust
# Cargo.toml
[dependencies]
zvec = "0.5"
Systemvoraussetzungen
| Plattform | Architektur |
|---|---|
| Linux | x86_64, ARM64 |
| macOS | ARM64 (Apple Silicon) |
| Windows | x86_64 |
Schnellstart
Deine erste Vektorsuche
Mit nur wenigen Codezeilen erstellst du eine vollständige Vektordatenbank und führst eine Ähnlichkeitssuche durch:
import zvec
# 1. Schema definieren
schema = zvec.CollectionSchema(
name="my_collection",
vectors=zvec.VectorSchema("embedding", zvec.DataType.VECTOR_FP32, 4),
)
# 2. Collection erstellen und öffnen (automatische Persistierung lokal)
collection = zvec.create_and_open(path="./my_zvec_data", schema=schema)
# 3. Vektordaten einfügen
collection.insert([
zvec.Doc(id="doc_1", vectors={"embedding": [0.1, 0.2, 0.3, 0.4]}),
zvec.Doc(id="doc_2", vectors={"embedding": [0.2, 0.3, 0.4, 0.1]}),
zvec.Doc(id="doc_3", vectors={"embedding": [0.9, 0.1, 0.1, 0.2]}),
])
# 4. Vektor-Ähnlichkeitssuche ausführen
results = collection.query(
zvec.VectorQuery("embedding", vector=[0.2, 0.3, 0.3, 0.1]),
topk=2
)
# Ergebnisse ausgeben
for r in results:
print(f"ID: {r['id']}, Ähnlichkeitswert: {r['score']:.4f}")
Ausgabe:
ID: doc_2, Ähnlichkeitswert: 0.9899
ID: doc_1, Ähnlichkeitswert: 0.9798
Eine einfache RAG-Anwendung bauen
Mit OpenAIs Embedding-Modell baust du schnell ein Dokumenten-Fragesystem:
import zvec
import openai
# Embedding-Modell initialisieren
client = openai.OpenAI(api_key="your-api-key")
def get_embedding(text: str) -> list[float]:
response = client.embeddings.create(
model="text-embedding-3-small",
input=text
)
return response.data[0].embedding
# Collection erstellen
schema = zvec.CollectionSchema(
name="rag_docs",
vectors=zvec.VectorSchema("embedding", zvec.DataType.VECTOR_FP32, 1536),
fields=[
zvec.FieldSchema("content", zvec.DataType.STRING),
zvec.FieldSchema("source", zvec.DataType.STRING),
],
)
collection = zvec.create_and_open(path="./rag_data", schema=schema)
# Dokumente indizieren
documents = [
("Zvec ist Alibabas leichtgewichtige Open-Source-Vektordatenbank", "doc1.md"),
("Vektordatenbanken speichern und durchsuchen hochdimensionale Vektordaten", "doc2.md"),
("RAG kombiniert Retrieval und Generierung – der Standardansatz für heutige LLM-Anwendungen", "doc3.md"),
]
for content, source in documents:
embedding = get_embedding(content)
collection.insert([
zvec.Doc(
vectors={"embedding": embedding},
fields={"content": content, "source": source},
)
])
# Nach relevantesten Dokumenten suchen
question = "Was ist eine Vektordatenbank?"
query_embedding = get_embedding(question)
results = collection.query(
zvec.VectorQuery("embedding", vector=query_embedding),
topk=2
)
print("Relevante Dokumente:")
for r in results:
print(f"- [{r['fields']['source']}] {r['fields']['content']}")
print(f" Ähnlichkeit: {r['score']:.4f}\n")
Fortgeschrittene Funktionen
Volltextsuche (Full-Text Search)
Ab v0.5.0 unterstützt Zvec native Volltextsuche – ohne Elasticsearch oder andere externe Suchmaschinen:
import zvec
schema = zvec.CollectionSchema(
name="ft_search",
vectors=zvec.VectorSchema("embedding", zvec.DataType.VECTOR_FP32, 384),
fields=[
zvec.FieldSchema("title", zvec.DataType.STRING),
zvec.FieldSchema("body", zvec.DataType.STRING),
],
)
collection = zvec.create_and_open(path="./fts_data", schema=schema)
# Volltextsuche-Index für das body-Feld erstellen
collection.create_fts_index("body_fts", field="body")
# Daten einfügen
collection.insert([
zvec.Doc(
id="1",
vectors={"embedding": [0.1] * 384},
fields={"title": "Python Tutorial", "body": "Python ist eine leistungsstarke Programmiersprache, weit verbreitet in AI und Data Science."},
),
zvec.Doc(
id="2",
vectors={"embedding": [0.2] * 384},
fields={"title": "JavaScript Einführung", "body": "JavaScript ist die Kernsprache der Frontend-Entwicklung für Web, Node.js und mehr."},
),
])
# Volltextsuche
results = collection.query(
zvec.FTSQuery("body_fts", "Python Data Science"),
topk=5
)
for r in results:
print(f"[{r['fields']['title']}] {r['fields']['body'][:30]}...")
Hybride Suche (Hybrid Search)
Eine der stärksten Funktionen von Zvec: Vektorsuche, Volltextsuche und skalare Filter in einer einzigen Abfrage kombinieren:
# Hybride Suche: Vektor + Volltext + skalare Filter
results = collection.query(
zvec.MultiQuery([
# Vektor-Ähnlichkeit
zvec.VectorQuery("embedding", vector=[0.15] * 384, weight=0.7),
# Volltextsuche
zvec.FTSQuery("body_fts", "Programmiersprache Tutorial", weight=0.3),
]),
topk=3
)
for r in results:
print(f"[{r['id']}] Hybrid-Score: {r['score']:.4f}")
DiskANN Festplattenindex
Bei großen Vektordatenmengen reicht der Arbeitsspeicher schnell nicht aus. Zvecs DiskANN-Index speichert den Großteil des Index auf der Festplatte und reduziert den Speicherverbrauch drastisch:
schema = zvec.CollectionSchema(
name="large_collection",
vectors=zvec.VectorSchema("embedding", zvec.DataType.VECTOR_FP32, 768),
)
# Collection mit DiskANN-Index erstellen
collection = zvec.create_and_open(
path="./diskann_data",
schema=schema,
index_options=zvec.IndexOptions(
index_type=zvec.IndexType.DISKANN, # Festplattenindex
)
)
# Große Datenmengen einfügen (Millionen kein Problem)
for i in range(100000):
collection.insert([zvec.Doc(
id=f"doc_{i}",
vectors={"embedding": [0.1 * (i % 768)] * 768},
)])
Skalare Filter
Füge strukturierte Feldfilter zur Vektorsuche hinzu:
results = collection.query(
zvec.ScalarQuery("category = 'AI' AND published_year >= 2025"),
topk=10
)
Persistierung und Parallelität
Zvec verwendet WAL (Write-Ahead Logging) für Datenpersistierung – selbst bei Prozessabsturz oder Stromausfall gehen keine Daten verloren. Mehrere Prozesse können gleichzeitig aus derselben Collection lesen (Schreibzugriff ist exklusiv):
# Prozess A: Schreiben
collection_a = zvec.open("./shared_data", mode="write")
collection_a.insert([zvec.Doc(id="new_1", vectors={"embedding": [0.5] * 4})])
collection_a.flush()
# Prozess B: Lesen (parallel zu Prozess A)
collection_b = zvec.open("./shared_data", mode="read")
results = collection_b.query(
zvec.VectorQuery("embedding", vector=[0.5] * 4),
topk=5
)
Performance
Laut offiziellen Benchmarks zeigt Zvec in mehreren Dimensionen hervorragende Ergebnisse:
- Suchlatenz: Millisekunden-Antwort, selbst bei Milliarden von Vektoren
- Speichereffizienz: DiskANN-Index spart über 10x Speicher gegenüber traditionellen In-Memory-Indizes
- Durchsatz: Unterstützt hochparallele Abfrageszenarien
- Vergleich: Bei gleicher Hardware übertrifft Zvecs QPS (Abfragen pro Sekunde) und Latenz sowohl Chroma als auch Milvus
Detaillierte Benchmark-Daten findest du in der offiziellen Benchmarks-Dokumentation.
Visuelles Debugging-Tool: Zvec Studio
Wer nicht gerne Code zum Debuggen von Vektordaten schreibt, kann das offizielle Visualisierungstool Zvec Studio nutzen:
git clone https://github.com/zvec-ai/zvec-studio
cd zvec-studio
npm install && npm run dev
Im Browser kannst du Collection-Daten durchsuchen, Abfragen debuggen und Index-Status prüfen – ganz ohne Code.
Einsatzszenarien
| Szenario | Warum Zvec passt |
|---|---|
| Persönliche RAG-Anwendung | Kein externes Deployment, pip install reicht |
| Desktop-AI-Anwendung | Eingebettetes Design, kein zusätzlicher Prozess |
| Mobile/Edge-Geräte | Leichtgewichtig, niedriger Speicherverbrauch |
| Schnelle Prototyp-Validierung | Null Konfiguration, kompletter Flow in 5 Minuten |
| Mittelgroße Produktion | WAL-Persistierung + DiskANN für Zuverlässigkeit |
| Multi-Language-Projekte | Python / Node.js / Go / Rust / Dart SDKs |
Fazit
Zvec schließt eine wichtige Lücke – zwischen Vektordatenbanken wie Chroma (Docker erforderlich) und Cloud-Diensten wie Pinecone bietet Zvec eine wirklich leichtgewichtige, wirklich eingebettete Alternative.
Wenn du zu folgenden Entwicklertypen gehörst, solltest du Zvec unbedingt 5 Minuten geben:
- Du willst eine RAG-Anwendung lokal betreiben, ohne Docker-Ärger
- Du brauchst eine einfache Vektordatenbank für einen semantischen Such-Prototyp
- Du entwickelst Desktop-/Mobile-AI-Anwendungen und brauchst eine leichtgewichtige Einbettung
- Du hast genug von komplexer Konfiguration und willst ein Tool, das nach
pip installeinfach funktioniert
Projekt: github.com/alibaba/zvec
Dokumentation: zvec.org
Nutzt du Zvec auch? Teile deine Erfahrungen in den Kommentaren. Oder verwendest du bereits andere Vektordatenbanken? Lass uns über den Vergleich mit Zvec sprechen.