Weaviate: hybride Suche und multi-location
Weaviate ist eine Open-Source-Vektordatenbank zur Installation in einem Container, die sich durch drei Merkmale auszeichnet: Sie kann die Vektoren selbst über Module berechnen (darunter Ollama, also lokal), sie bietet eine hybride Suche aus Stichwort- und Vektorsuche mit einstellbarer Gewichtung, und sie isoliert die Daten pro Tenant. Für ein strikt lokales RAG sind drei Einstellungen entscheidend: ein lokaler Vektorisierer, deaktivierte Telemetrie (sie ist standardmäßig aktiv) und deaktivierter anonymer Zugriff.
Weaviate wählt man eher wegen seiner Funktionen als wegen seiner Einfachheit: Es ist ein vollwertiger Dienst mit einem Container sowie Speicherplatz und Arbeitsspeicher, deren Kapazität geplant werden muss. Dieser Leitfaden zeigt, was Weaviate gegenüber ChromaDB oder pgvector bietet, wie Sie es mit Ollama verbinden, damit alles auf Ihrem Rechner bleibt, wie Sie die hybride Suche einstellen, wozu die Mandantenfähigkeit dient und welche Kosten der Arbeitsspeicher verursacht.
#Was Weaviate von anderen Vektordatenbanken unterscheidet
Weaviate ist eine Open-Source-Vektordatenbank, deren Code auf GitHub veröffentlicht ist. Im Gegensatz zu Bibliotheken wie FAISS ist es ein Server: Er speichert die Objekte (Text und Eigenschaften), die Vektoren und den Suchindex und beantwortet Abfragen über eine API. Drei Funktionen unterscheiden ihn von einem einfachen Vektorspeicher. Die erste ist die integrierte Kodierung: Sie fügen Objekte ein, ein konfiguriertes Modul wandelt den Text in Vektoren um, und die Abfragen werden in natürlicher Sprache statt als Arrays von Gleitkommazahlen formuliert. Diese Entscheidung beseitigt eine ganze Klasse von Fehlern (inkompatible Dimensionen, eine Frage, die mit einem anderen Modell als der Korpus kodiert wurde), da dasselbe Modul beide Seiten verarbeitet.
Die zweite Funktion ist die hybride Suche, die Schlüsselwörter und Vektoren in einer einzigen Abfrage kombiniert. Die dritte ist die Mandantenfähigkeit: Eine einzige Bereitstellung kann mehrere isolierte Datensätze beherbergen, jeweils einen pro Kunde, Dienst oder Benutzer. Der Preis für diese Funktionen ist eine Komponente, die betrieben werden muss – mit ihrem Speicherbedarf, ihren Backups und ihren Updates –, während ChromaDB im Dateimodus lediglich eine Python-Bibliothek ist.
#Alles lokal halten: drei Einstellungen, die Sie überprüfen sollten
Ihre Dokumente, Ihre KI: ein zuverlässiges lokales RAG für Ihre PDFs, Notizen und E-Mails – ohne Daten in die Cloud zu senden.
- Lebenslanger Online-Zugang
- PDF + Dateien
- Erstattung binnen 30 Tagen
Ein Encoder-Modul ist eine Abhängigkeit mit einem bestimmten Standort. Wenn Sie einen bei einem Drittanbieter gehosteten Vektorisierer wählen, senden Sie jedes Ihrer Dokumente und jede Ihrer Fragen an einen anderen Ort; mit dem Ollama-Modul bleiben die Berechnungen auf Ihrer Hardware. Zwei weitere Einstellungen sind weniger sichtbar und verdienen dieselbe Aufmerksamkeit.
- Der Vektorisierer
- Verwenden Sie text2vec-ollama, das Ihre lokale Ollama-Instanz aufruft; laut Dokumentation ist in diesem Fall kein API-Schlüssel erforderlich. Achten Sie auf die Adresse: Wenn Weaviate in einem Container läuft und Ollama auf dem Host-Rechner, empfiehlt die Dokumentation host.docker.internal, damit der Container den Host erreichen kann.
- Die Telemetrie
- Laut der Weaviate-Dokumentation erfasst Weaviate standardmäßig Telemetriedaten: Serverversion, Betriebssystem, verwendete Module sowie die Anzahl der Objekte und Collections. Diese werden alle 24 Stunden gesendet; die Dokumentation stellt klar, dass keine Inhalte Ihrer Daten erfasst werden. Um die Telemetrie zu deaktivieren, setzen Sie die Variable DISABLE_TELEMETRY auf true. Bei einer Installation, die vollständig abgeschottet bleiben muss, sollten Sie diese Einstellung vornehmen.
- Anonymer Zugriff
- Der docker run-Befehl für die schnelle Einrichtung setzt AUTHENTICATION_ANONYMOUS_ACCESS_ENABLED auf true, und die Dokumentation empfiehlt dringend, anonymen Zugriff außer im Entwicklungs- oder Evaluationskontext zu deaktivieren. Sobald der Port 8080 von außerhalb Ihres eigenen PCs erreichbar ist, aktivieren Sie die Authentifizierung über einen API-Schlüssel.
#Weaviate mit Docker und Ollama installieren
- 01Ollama und ein Embedding-Modell zur Verfügung habenInstallieren Sie Ollama und laden Sie das Modell mit ollama pull bge-m3 herunter.
- 02Die Datei docker-compose.yml erstellenDie Datei definiert den Weaviate-Container, dessen Daten-Volume, die Aktivierung des Ollama-Moduls, die Deaktivierung der Telemetrie und den Zugriff auf den Host.
- 03Starten und prüfenFühren Sie docker compose up -d aus und testen Sie anschließend die Adresse http://localhost:8080/v1/meta: Die Antwort listet die aktiven Module auf.
- 04Eine mit dem Modul verknüpfte Sammlung erstellenDie Collection gibt an, welches Ollama-Modell welche Eigenschaften vektorisiert.
Die Versionsnummer 1.39.7 ist diejenige, die zum Zeitpunkt der Erstellung in der offiziellen Weaviate-Dokumentation angegeben war; verwenden Sie die aktuelle Version, die auf der Installationsseite angegeben ist. Die Ports 8080 (HTTP) und 50051 (gRPC) entsprechen denen der Schnellstartanleitung in der Dokumentation.
#Schema: Collections, Eigenschaften, Vektorisierer, Tenants
| Konzept | Was es ist | Warum das zählt |
|---|---|---|
| Sammlung | Eine Ansammlung von Objekten gleichen Typs mit ihrem Schema | Die getrennten Korpora bleiben getrennt, wodurch der Informationsabruf präzise bleibt |
| Eigenschaften | Typisierte Felder für jedes Objekt | Geprüfte Filter (Datum, Autor, Dienst) anstelle von Anweisungen im Prompt |
| Vektorisierer | Das Modul, das Text und Fragen kodiert | Identisches Modell bei Indexierung und Abfrage |
| Tenant | Eine isolierte Partition der Sammlung mit ihrem eigenen Fragment | Jede Gruppe sieht nur ihre eigenen Daten |
| Vektorindex | Der Suchgraph (HNSW), der im Arbeitsspeicher liegt | Bestimmt die Geschwindigkeit und den benötigten Speicher |
Die Struktur folgt der offiziellen Dokumentation: vector_config, ein benannter Vektorisierer, Quelleigenschaften und ein Ollama-Endpunkt. Weaviate vektorisiert standardmäßig Eigenschaften vom Typ Text, die alphabetisch sortiert und anschließend aneinandergehängt werden; source_properties ermöglicht es, die Berechnung auf die relevante Eigenschaft zu beschränken und den Dateinamen aus dem Vektor herauszuhalten.
#Die hybride Suche in Weaviate
Die semantische Suche findet Textstellen mit ähnlicher Bedeutung und scheitert an exakten Zeichenfolgen: einer Rechnungsnummer, einer Teilenummer, einem Fehlercode oder einem Eigennamen. Die hybride Suche von Weaviate kombiniert die Ergebnisse einer Vektorsuche und einer BM25F-Schlüsselwortsuche, indem sie die beiden Ergebnismengen zusammenführt; die Gewichtungen und die Fusionsmethode sind konfigurierbar. Der Parameter alpha regelt das Verhältnis: Laut Dokumentation entspricht 1 einer reinen Vektorsuche und 0 einer reinen Schlüsselwortsuche. Ohne alpha hängt die tatsächliche Gewichtung von Ihrem Client ab: Legen Sie alpha immer ausdrücklich fest.
Seit Version 1.24 ist die Fusion anhand relativer Scores die Standardmethode; die Alternative ist die rangbasierte Fusion. Das Prinzip und die Wahl zwischen den beiden werden im Leitfaden zur hybriden Suche erklärt. Bei einem technischen Korpus macht das oft den Unterschied zwischen einem System, dem man vertraut, und einem System, das man aufgibt: Die Fehler der rein vektorbasierten Suche betreffen gerade die Suchanfragen, die Nutzer für trivial halten.
#Mandantenfähigkeit: ein Tenant pro Benutzergruppe
Mandantenfähigkeit partitioniert eine Collection in Shards, einen pro Mandant. Die Dokumentation beschreibt es so: Jeder Mandant wird in einem separaten Shard gespeichert, und die Daten eines Mandanten sind für andere Mandanten nicht sichtbar. Die Funktion ist standardmäßig deaktiviert und wird in der Definition der Collection mit multi_tenancy_config aktiviert. Wenn mehrere Gruppen dasselbe System abfragen (Kunden eines kleinen oder mittleren Unternehmens, Abteilungen eines Unternehmens, Familienmitglieder), ist dies eine strukturelle Antwort auf die Frage „Kann diese Person dieses Dokument abrufen?“ — wesentlich sicherer als ein nachträglich angewendeter Filter und unendlich viel sicherer als eine Anweisung im Prompt.
Tenants benötigen nur wenige Ressourcen: Laut Dokumentation sind 50.000 oder mehr aktive Fragmente pro Knoten möglich. Sie haben einen Status (ACTIVE, INACTIVE, OFFLOADED): Ein inaktiver Tenant liegt auf dem Datenträger und belegt keinen Arbeitsspeicher. Dadurch lassen sich viele kleine Datensätze hosten, wobei nur diejenigen aktiv bleiben, die gebraucht werden. Der Name eines Tenants darf nur alphanumerische Zeichen, Unterstriche und Bindestriche enthalten.
#Was der Betrieb von Weaviate kostet
Weaviate ist ein vollwertiger Dienst: ein Container, persistenter Speicher und ein Arbeitsspeicherbedarf, der proportional zu Ihren Vektoren wächst. Die Dokumentation zur Dimensionierung benennt die Einschränkung klar: Der HNSW-Index muss im Arbeitsspeicher gespeichert sein; der Arbeitsspeicher bestimmt die maximale Größe des Datensatzes und beeinflusst die Abfragegeschwindigkeit nicht direkt. Als Faustregel empfiehlt die Dokumentation, das Doppelte des Arbeitsspeicherbedarfs aller Vektoren einzuplanen.
Die 1.024 Dimensionen von bge-m3 sind hier eine Annahme, die anhand der Modellkarte Ihres Modells zu überprüfen ist. Bei einem persönlichen Korpus oder einem Korpus eines kleinen oder mittleren Unternehmens (einige Zehntausend Textpassagen) ist der Speicherbedarf des Index gering; ab mehreren Millionen Textpassagen wird er relevant. Weaviate bietet Vektorkompression an: Die Dokumentation empfiehlt die Rotationsquantisierung (RQ) und nennt außerdem die Produktquantisierung (PQ), die binäre Quantisierung (BQ) und die skalare Quantisierung (SQ), jeweils auf Kosten eines leichten Informationsverlusts. Fügen Sie das lokale Encoder-Modul hinzu: Ollama führt ein Embedding-Modell auf demselben Rechner wie Ihr Sprachmodell aus. Entscheiden Sie bei einem einzelnen Rechner, welches der beiden Modelle die Grafikkarte belegt, oder nehmen Sie in Kauf, dass sich Indexierung und Inferenz gegenseitig beeinträchtigen.
#Eigene Vektoren bereitstellen oder von ChromaDB migrieren
Das Encoding-Modul ist nicht zwingend erforderlich. Die Weaviate-Dokumentation beschreibt den Ansatz „bring your own vectors“: Statt die Datenbank die Embeddings berechnen zu lassen, stellen Sie die bereits vorhandenen bereit, ob individuell angepasst oder vorab erzeugt. Im Python-Client deklarieren Sie dafür einen benannten Vektor mit Configure.Vectors.self_provided. Das ist der kostengünstigste Migrationsweg von ChromaDB: Sie lesen die Dokumente und die bereits berechneten Vektoren erneut aus (Chroma kann sie mit der Option include zurückgeben) und senden sie anschließend an Weaviate, ohne das Embedding-Modell erneut aufzurufen. Zwei Prüfungen verhindern böse Überraschungen: Die Vektoren müssen in der gesamten Collection dieselbe Dimension haben, und die Fragen müssen mit dem ursprünglichen Modell encodiert werden, da Weaviate dies nicht für Sie übernimmt.
Wann sollten Sie die integrierte Vektorisierung bevorzugen? Wenn Sie Abfragen direkt als Text formulieren möchten, das Hinzufügen von Dokumenten keinen Code zur Berechnung erfordern soll und die Konsistenz des Modells durch die Konfiguration gewährleistet sein soll. Wann sollten Sie eigene Vektoren bevorzugen? Wenn Sie bereits eine Embedding-Pipeline haben, ein Modell verwenden müssen, das kein Modul anbietet, oder die Vektordatenbank wechseln können möchten, ohne alles neu zu berechnen.
#Weaviate oder eine andere Vektordatenbank
| Situation | Auswahl |
|---|---|
| Hybride Suche und umfangreiche Filtermöglichkeiten, mittelgroßes bis großes technisches Korpus | Weaviate oder Qdrant |
| Mehrere isolierte Benutzergruppen auf einem einzigen Deployment | Weaviate (native Mandantenfähigkeit) |
| PostgreSQL bereits vorhanden, überschaubarer Umfang | pgvector |
| Prototyp oder persönlicher Korpus, ohne einen Server warten zu müssen | ChromaDB im Dateimodus |
| Einzelner Prozess, festes Korpus, kein Filter | Eine Bibliothek wie FAISS |
Wenn Sie unsicher sind, beginnen Sie mit der einfachsten Lösung: ChromaDB für einen Prototyp. Wechseln Sie dann zu einem Dienst, sobald ein konkreter Bedarf entsteht (Isolation, native hybride Suche, Datenvolumen). Die Entscheidung lässt sich rückgängig machen, solange Sie die Quelldokumente und das Indexierungsskript aufbewahren.
#Häufige Fragen zu Weaviate
Ist Weaviate kostenlos?+
Berechnet Weaviate die Embeddings selbst?+
Sendet Weaviate Daten nach außen?+
Wie wird alpha in der hybriden Suche eingestellt?+
Wie viel Speicher benötigt man für eine Million Textpassagen?+
Ist Mandantenfähigkeit für die persönliche Nutzung unverzichtbar?+
- Hybride Suche: BM25 + Vektorsuche
- Qdrant: Die Vektordatenbank für ein lokales RAG
- pgvector: Vektorsuche in PostgreSQL
- FAISS: Die Bibliothek hinter der Vektorsuche
- Lokales RAG mit ChromaDB und Ollama
- Quelle: Weaviate, hybride Suche
- Quelle: Weaviate, Modul Ollama
- Quelle: Weaviate, Telemetrie
- Quelle: Weaviate, Ressourcen und Speicher
Haben Sie Feedback, einen Fehler entdeckt oder möchten Sie etwas präzisieren? Geben Sie uns Bescheid – so wird der Guide für alle besser.