Vector-Datenbank-Pipelines mit Claude aufsetzen
AI generated
Claude
>_
Claude AI · Vector-Datenbank · RAG-Infrastruktur
Vector-Datenbank-Pipelines aufsetzen
Von der Embedding-Wahl bis zum lauffähigen Setup mit Claude als Sparringspartner

Eine Vector-Datenbank ist schnell installiert, die Pipeline drumherum entscheidet aber über Trefferqualität und Betriebskosten. Embedding-Modell-Wahl, Chunking-Strategie und die konkrete Konfiguration von pgvector, Pinecone oder Weaviate hängen eng zusammen, und Fehler an einer Stelle wirken sich auf die gesamte Kette aus. Dieser Artikel zeigt, wie Claude bei jedem dieser Schritte konkret unterstützt, inklusive Setup-Code und der häufigsten Fallstricke bei der Chunk-Größe.

13 Min. Lesezeit Vector Database Embeddings Chunking pgvector

1. Warum die Pipeline wichtiger ist als die Datenbank-Wahl

Viele Teams starten die Planung mit der Frage, welche Vector-Datenbank eingesetzt werden soll, und übersehen dabei, dass Embedding-Modell und Chunking-Strategie einen deutlich größeren Einfluss auf die Trefferqualität haben als die konkrete Datenbank. Eine schlecht chunkierte Dokumentensammlung liefert in jeder Datenbank schwache Ergebnisse, während eine sauber aufgebaute Pipeline auch in einer einfachen Konfiguration solide Treffer erzielt.

Die Reihenfolge sollte deshalb umgekehrt sein: zuerst Embedding-Modell und Chunking-Strategie für die konkreten Dokumente festlegen, danach die Datenbank passend zu Skalierung, Hosting-Anforderungen und Budget wählen. Claude eignet sich gut, um diese Reihenfolge frühzeitig einzuhalten, weil sich Chunking-Entscheidungen anhand echter Beispieldokumente konkret durchsprechen lassen, bevor Infrastruktur festgelegt wird.

In der Praxis zeigt sich dieser Effekt besonders deutlich bei einem nachträglichen Datenbank-Wechsel: Wird eine bestehende Pipeline von pgvector zu Pinecone oder umgekehrt migriert, bleibt die Trefferqualität weitgehend erhalten, solange Embedding-Modell und Chunking unverändert bleiben. Wird dagegen nur die Datenbank optimiert, ohne bestehende Chunking-Fehler zu beheben, bleibt die Trefferqualität spürbar hinter dem technisch möglichen Niveau zurück.

2. Embedding-Modell auswählen

Die Wahl des Embedding-Modells hängt von Sprache, Domäne und Kosten pro eingebettetem Token ab. Mehrsprachige Dokumentensammlungen brauchen ein Modell mit nachgewiesener mehrsprachiger Qualität, technische oder juristische Fachtexte profitieren von Modellen, die auf entsprechenden Korpora trainiert wurden. Die Dimensionalität des Embeddings beeinflusst zusätzlich Speicherbedarf und Suchgeschwindigkeit: höhere Dimensionen liefern oft feinere Unterscheidung, kosten aber mehr Speicherplatz und Rechenzeit bei der Suche.

Claude lässt sich gut nutzen, um anhand einer Stichprobe der eigenen Dokumente eine begründete Vorauswahl zu treffen: Welche Fachbegriffe kommen häufig vor, wie stark unterscheiden sich Dokumente inhaltlich, und wie wichtig ist mehrsprachige Abdeckung. Diese Analyse ersetzt kein Benchmark mit echten Testanfragen, verkürzt aber die Zahl der Kandidaten, die überhaupt getestet werden müssen.


Prompt an Claude zur Embedding-Modell-Vorauswahl:

Hier sind 5 Beispieldokumente aus unserer technischen Dokumentation
(deutsch, teils englische Fachbegriffe): <Beispiele>

Welche Embedding-Modell-Kategorien (allgemein vs. domänenspezifisch,
Dimensionsgröße) passen voraussichtlich am besten, und welche
3 Kandidaten sollten wir mit einem echten Retrieval-Benchmark
gegeneinander testen?

3. Chunking-Strategien für lange Dokumente durchdenken lassen

Chunking entscheidet darüber, ob ein Retrieval-Treffer den relevanten Kontext vollständig enthält oder mittendrin abgeschnitten ist. Naives Chunking nach fester Zeichenzahl ignoriert Absatz- und Kapitelgrenzen und zerreißt regelmäßig zusammengehörige Informationen. Semantisches Chunking orientiert sich stattdessen an inhaltlichen Grenzen wie Überschriften, Absätzen oder Listenstrukturen und hält zusammengehörige Aussagen beieinander.

Claude kann anhand eines konkreten Beispieldokuments vorschlagen, an welchen Stellen inhaltliche Brüche liegen und wo ein Chunk-Übergang wenig Schaden anrichtet. Für strukturierte Dokumente wie API-Dokumentation oder juristische Texte mit nummerierten Abschnitten liefert diese Analyse oft brauchbare Chunk-Grenzen, die weit über eine feste Zeichenzahl hinausgehen.


# Chunking mit Ueberlapp, Grenzen anhand von Ueberschriften
# (Grenzen wurden vorab mit Claude anhand von Beispieldokumenten geklärt)
import re

def chunk_by_headings(text: str, max_tokens: int = 400, overlap: int = 50):
    sections = re.split(r"\n(?=#{1,3}\s)", text)
    chunks = []
    for section in sections:
        words = section.split()
        if len(words) <= max_tokens:
            chunks.append(section.strip())
            continue
        start = 0
        while start < len(words):
            end = start + max_tokens
            chunks.append(" ".join(words[start:end]))
            start = end - overlap
    return [c for c in chunks if c]

4. Typische Fallstricke: zu große oder zu kleine Chunks

Zu große Chunks enthalten oft mehrere unterschiedliche Themen gleichzeitig, wodurch das Embedding zu einem verwaschenen Mittelwert wird, der auf keine der enthaltenen Fragen mehr präzise passt. Die Trefferquote sinkt, weil semantisch relevante Chunks bei spezifischen Anfragen nicht mehr weit genug oben im Ranking landen. Ein häufiges Symptom: Die Suche findet grundsätzlich passende Dokumente, aber die konkrete Antwort fehlt im zurückgegebenen Ausschnitt.

Zu kleine Chunks zerreißen dagegen zusammengehörige Informationen, etwa eine Bedingung und die dazugehörige Ausnahme in unterschiedlichen Chunks. Claude beantwortet die Anfrage dann scheinbar korrekt, aber unvollständig, weil der relevante Zusatzkontext im Retrieval fehlt. In der Praxis hat sich eine Chunk-Größe von 200 bis 500 Tokens mit einem Überlapp von 10 bis 20 Prozent für die meisten Fließtext-Dokumente bewährt, mit spürbaren Ausnahmen bei tabellarischen oder stark strukturierten Inhalten.

5. pgvector-Setup mit Claude-generiertem Code

Für Teams, die bereits PostgreSQL im Einsatz haben, ist pgvector oft die pragmatischste Wahl, da keine zusätzliche Infrastruktur nötig wird. Claude generiert zuverlässig das Grundgerüst aus Extension, Tabellenschema mit passendem Index und einer Beispielabfrage, die per Kosinus-Distanz die nächsten Nachbarn ermittelt.

Wichtig bei der Prompt-Formulierung ist, die erwartete Datenmenge und das Zielverhalten mitzugeben, etwa ob ein exakter oder approximativer Index gebraucht wird, denn davon hängt ab, ob Claude einen IVFFlat- oder HNSW-Index vorschlägt und wie die entsprechenden Parameter gewählt werden.


-- pgvector: Extension, Schema und HNSW-Index
CREATE EXTENSION IF NOT EXISTS vector;

CREATE TABLE document_chunks (
    id BIGSERIAL PRIMARY KEY,
    document_id BIGINT NOT NULL,
    chunk_text TEXT NOT NULL,
    metadata JSONB DEFAULT '{}',
    embedding VECTOR(1536) NOT NULL
);

CREATE INDEX ON document_chunks
    USING hnsw (embedding vector_cosine_ops)
    WITH (m = 16, ef_construction = 64);

-- Nächste Nachbarn zu einem Query-Embedding finden
SELECT id, chunk_text, 1 - (embedding <=> $1) AS similarity
FROM document_chunks
WHERE metadata->>'status' = 'active'
ORDER BY embedding <=> $1
LIMIT 8;

6. Pinecone-Setup: verwaltete Infrastruktur ohne eigenen Betrieb

Pinecone eignet sich, wenn der Betrieb einer eigenen Datenbank vermieden werden soll und Skalierung auf mehrere Millionen Vektoren absehbar ist. Claude generiert das Client-Setup inklusive Index-Erstellung mit passender Metrik und Namespace-Struktur, was besonders bei Mandanten-getrennten Anwendungen relevant wird.

Ein Punkt, den Claude bei entsprechender Nachfrage zuverlässig mitliefert: die Trennung zwischen Namespaces für Mandantenisolation versus Metadatenfiltern für inhaltliche Filterung innerhalb eines Mandanten, da beide Mechanismen leicht verwechselt werden und unterschiedliche Kostenimplikationen haben.


from pinecone import Pinecone, ServerlessSpec

pc = Pinecone(api_key="PINECONE_API_KEY")

pc.create_index(
    name="support-docs",
    dimension=1536,
    metric="cosine",
    spec=ServerlessSpec(cloud="aws", region="eu-central-1"),
)

index = pc.Index("support-docs")

index.upsert(
    vectors=[
        {"id": "chunk-1", "values": embedding, "metadata": {
            "document_id": "42", "status": "active", "product": "checkout"
        }}
    ],
    namespace="tenant-acme",
)

results = index.query(
    vector=query_embedding,
    top_k=8,
    namespace="tenant-acme",
    filter={"status": {"$eq": "active"}},
)

7. Weaviate-Setup: Hybrid Search als eingebautes Feature

Weaviate kombiniert Vektorsuche und Schlüsselwortsuche in einem System, was besonders bei Anfragen mit exakten Produktnamen oder Fehlercodes wertvoll ist, die eine reine semantische Suche gelegentlich übersieht. Claude generiert die Schema-Definition inklusive Vectorizer-Konfiguration und die passende GraphQL- oder Python-Abfrage für Hybrid Search zuverlässig.

Bei der Prompt-Formulierung lohnt es sich, explizit nach dem Alpha-Parameter für die Gewichtung zwischen Vektor- und Schlüsselwortsuche zu fragen, da dieser Wert stark vom jeweiligen Anwendungsfall abhängt und in generischen Beispielen oft nur mit einem willkürlichen Standardwert belegt wird.


import weaviate
import weaviate.classes as wvc

client = weaviate.connect_to_local()

client.collections.create(
    name="DocumentChunk",
    vectorizer_config=wvc.config.Configure.Vectorizer.text2vec_openai(),
    properties=[
        wvc.config.Property(name="text", data_type=wvc.config.DataType.TEXT),
        wvc.config.Property(name="product", data_type=wvc.config.DataType.TEXT),
    ],
)

collection = client.collections.get("DocumentChunk")
results = collection.query.hybrid(
    query="Zahlung schlägt fehl mit Fehlercode 402",
    alpha=0.6,  # Gewicht Richtung Vektorsuche, 0 = reine Keyword-Suche
    limit=8,
)

8. Metadaten-Filterung und Hybrid Search kombinieren

Reine Vektorähnlichkeit reicht in produktiven Systemen selten aus. Metadatenfilter, etwa nach Produktbereich, Sprache oder Veröffentlichungsdatum, schränken den Suchraum vor der eigentlichen Ähnlichkeitsberechnung ein und verhindern, dass veraltete oder irrelevante Dokumente überhaupt in Betracht gezogen werden. Diese Filter sollten so früh wie möglich in der Abfrage greifen, nicht erst als Nachbearbeitung der Ergebnisliste.

Für Anwendungsfälle mit exakten Begriffen, etwa Fehlercodes, SKU-Nummern oder Versionsnummern, liefert eine Kombination aus Vektorsuche und Schlüsselwortsuche zuverlässigere Ergebnisse als reine semantische Suche, weil exakte Zeichenketten im Embedding-Raum nicht immer nah beieinanderliegen.

9. Monitoring und Reindexierung im laufenden Betrieb

Eine Vector-Datenbank-Pipeline ist kein einmaliges Setup, sondern braucht laufendes Monitoring: Trefferqualität über Stichproben, Latenz der Suche unter steigender Datenmenge, und die Erkennung veralteter Chunks, deren Quelldokument sich geändert oder gar nicht mehr existiert. Ohne systematische Reindexierung sammeln sich über Monate hinweg tote oder widersprüchliche Einträge an.

Claude eignet sich gut, um ein Reindexierungs-Skript samt Erkennung verwaister Chunks zu entwerfen, etwa durch Abgleich der in der Vektordatenbank gespeicherten Dokument-IDs gegen die aktuelle Quelldatenbank. Ergänzend lohnt sich ein regelmäßiger Stichprobentest mit realen Nutzeranfragen, um schleichende Qualitätsverluste frühzeitig zu erkennen, bevor sie in Supportanfragen sichtbar werden.

Kriterium pgvector Pinecone Weaviate
Hosting Selbst betrieben (PostgreSQL) Vollständig verwaltet Selbst betrieben oder Cloud
Setup-Aufwand Niedrig bei vorhandenem Postgres Sehr niedrig Mittel
Hybrid Search Manuell kombinierbar Eingeschränkt verfügbar Nativ eingebaut
Skalierung Begrenzt durch Postgres-Instanz Sehr hoch, automatisch Hoch, mit Cluster-Setup
Kostenmodell Bestehende Postgres-Kosten Nutzungsbasiert Selbst gehostet oder nutzungsbasiert
Guter Einstieg für Bestehende Postgres-Teams Schnelle Skalierung ohne Betrieb Kombinierte Such-Anforderungen

Mironsoft

KI-gestützte Entwicklung, Agenten-Workflows und Team-Prozesse

Claude oder andere KI-Tools im Team einsetzen, aber ohne klaren Workflow?

Wir richten KI-gestützte Entwicklungs-Workflows für Teams ein, von CLAUDE.md-Konventionen über Subagenten-Strategien bis zu Code-Review-Prozessen, die menschliche Kontrolle und KI-Tempo verbinden.

Workflow-Setup

CLAUDE.md, Projektkonventionen und Tool-Berechtigungen für das Team sauber einrichten.

Agenten-Strategie

Subagenten- und Automatisierungs-Workflows für wiederkehrende Entwicklungsaufgaben aufbauen.

Team-Onboarding

Entwickler im produktiven, sicheren Umgang mit KI-Coding-Assistenten schulen.

10. Zusammenfassung

Vector-Datenbank-Pipelines: Das Wichtigste auf einen Blick

Embedding-Modell

Zuerst anhand Sprache, Domäne und Kosten wählen, danach erst die Datenbank.

Chunking

Semantische Grenzen statt fester Zeichenzahl, 200 bis 500 Tokens mit Überlapp.

Datenbank-Wahl

pgvector, Pinecone und Weaviate passen zu unterschiedlichem Betriebs- und Skalierungsbedarf.

Betrieb

Reindexierung und Stichprobentests verhindern schleichenden Qualitätsverlust.

11. FAQ: Vector-Datenbank-Pipelines: Das Wichtigste auf einen Blick

1Welches Embedding-Modell sollte ich für mehrsprachige Dokumente wählen?
Ein Modell mit nachgewiesener mehrsprachiger Qualität, idealerweise anhand eines Benchmarks mit den tatsächlichen Zielsprachen getestet, statt sich allein auf allgemeine Leaderboard-Werte zu verlassen.
2Wie groß sollten Chunks typischerweise sein?
Für die meisten Fließtext-Dokumente haben sich 200 bis 500 Tokens mit 10 bis 20 Prozent Überlapp bewährt. Stark strukturierte oder tabellarische Inhalte brauchen oft eine eigene Chunking-Logik.
3Kann Claude direkt beim Chunking eines konkreten Dokuments helfen?
Ja, Claude kann anhand eines Beispieldokuments sinnvolle inhaltliche Grenzen vorschlagen, etwa entlang von Überschriften oder Absätzen, was über starre Zeichenzahl-Regeln hinausgeht.
4Wann lohnt sich pgvector gegenüber einer dedizierten Vector-Datenbank?
Wenn bereits PostgreSQL im Einsatz ist und die Datenmenge sich im niedrigen bis mittleren Millionenbereich an Vektoren bewegt, ist pgvector meist die pragmatischste und günstigste Lösung.
5Was passiert, wenn Chunks zu groß gewählt werden?
Die Embeddings werden zu einem verwaschenen Durchschnitt mehrerer Themen, wodurch die Trefferquote bei spezifischen Anfragen sinkt, obwohl das Quelldokument die passende Information enthält.
6Wie hilft Claude bei der Wahl zwischen Pinecone und Weaviate?
Claude kann anhand von Anforderungen wie Betriebswunsch, erwarteter Skalierung und Bedarf an Hybrid Search eine begründete Empfehlung liefern und gleichzeitig den passenden Setup-Code für beide Optionen generieren.
7Was ist Hybrid Search und wann ist sie nötig?
Hybrid Search kombiniert Vektorähnlichkeit mit klassischer Schlüsselwortsuche. Sie ist besonders wichtig bei Anfragen mit exakten Begriffen wie Fehlercodes oder Artikelnummern, die im Embedding-Raum nicht zuverlässig nahe beieinanderliegen.
8Wie oft sollte eine Vector-Datenbank reindexiert werden?
Abhängig von der Änderungsfrequenz der Quelldokumente, bei häufig aktualisierten Wissensbasen empfiehlt sich eine inkrementelle Reindexierung bei jeder Dokumentänderung statt eines seltenen Komplett-Rebuilds.
9Kann Claude beim Erkennen verwaister Chunks helfen?
Ja, Claude kann ein Abgleichsskript entwerfen, das gespeicherte Dokument-IDs in der Vektordatenbank gegen die aktuelle Quelldatenbank prüft und verwaiste oder veraltete Chunks zur Entfernung markiert.
10Wie viele Metadatenfelder sollte man pro Chunk speichern?
So viele wie für Filterung und Nachvollziehbarkeit nötig sind, typischerweise Quelldokument, Zeitstempel, Kategorie und Status, aber nicht mehr, da jedes zusätzliche Feld die Indexgröße und Wartungsaufwand erhöht.