Teil 1 · CogniVault Architektur: Warum Standard-RAG nicht reicht (Hybride Suche)

Juni 1, 2026·
Ndimofor Aretas
Ndimofor Aretas
· 5 Min Lesezeit
blog Architecture Deep Dives

Alle Abkürzungen werden im Anhang am Ende der Seite ausführlich erklärt.

Vektorsuche ist der Prozess, bei dem die ähnlichsten Elemente in einem Datensatz basierend auf ihren Vektor-Embeddings gefunden werden. So funktionieren RAG-Systeme normalerweise. Aber was passiert, wenn du die ähnlichsten Elemente in einem Datensatz nicht nur aufgrund ihrer semantischen Bedeutung, sondern auch anhand des exakten Wortlauts der Suchanfrage finden musst?

Das wird kritisch, wenn die Information, die du suchst, nicht nur inhaltlich verwandt sein soll, sondern genau mit einer bestimmten Zeichenkette oder einem bestimmten Schlüsselwort übereinstimmen muss.

Zwei Wege, ein Buch zu finden

Stell dir eine gute lokale Buchhandlung vor. Die Besitzerin hat alles gelesen und empfiehlt nach Gefühl. Sag ihr, dass du Der Marsianer geliebt hast, und sie gibt dir Project Hail Mary — anderer Titel, andere Handlung, aber dieselbe DNA: ein einsamer Wissenschaftler, ein unmögliches Überlebensproblem, Witze unter Druck. Frag nach “sowas wie Stolz und Vorurteil” und du gehst mit Emma raus. Sie gleicht keine Wörter ab. Sie gleicht Bedeutung ab.

Nun stell ihr eine andere Art von Frage: “Ich brauche das Buch mit der ISBN 978-0-553-41802-6” oder “das Handbuch, auf dessen Cover der Fehlercode 404B erwähnt wird.” Ihre Superkraft ist hier nutzlos. Keine noch so große literarische Intuition findet einen exakten String. Dafür gehst du zur Kasse und schaust in den Katalog — einen langweiligen, wörtlichen Index, der genau weiß, welches Regal welche Kennung enthält, und dem “Vibes” völlig egal sind.

Eine gut geführte Buchhandlung braucht beides. Genauso wie ein gut geführtes RAG-System:

  1. FAISS — Facebook AI Similarity Search (die belesene Besitzerin): ein Vektorindex, der Textabschnitte findet, deren Bedeutung mathematisch nah an deinem Prompt liegt. Genial für “Wie ist die praktische Prüfung aufgebaut?”, aber blind für “§3 Absatz 2”.
  2. BM25 — Best Match 25 (der Katalog): ein klassischer Keyword-Scoring-Algorithmus, der exakte Worttreffer belohnt, gewichtet danach, wie selten und markant diese Wörter sind. Genial für Identifikatoren und zitierte Phrasen, aber blind für Umschreibungen (Paraphrasen).

CogniVault führt bei jeder Suche beide Retriever aus — das nennt man Hybride Suche (Hybrid Search) — und führt dann die beiden Ranglisten mit einer Formel namens Reciprocal Rank Fusion (RRF) zusammen. RRF bewertet jeden Chunk rein nach seiner Position in jeder Liste: Ein Chunk, der von einem der beiden Retriever hoch eingestuft wird, schneidet gut ab, und ein Chunk, bei dem sich beide Retriever einig sind, steigt nach ganz oben. Da nur Ränge verwendet werden, müssen die inkompatiblen Bewertungsskalen der beiden Retriever niemals in Einklang gebracht werden.

Der Agent entscheidet, wann gesucht wird

Hier ist der Teil, den die meisten Diagramme verdrehen (meins in einem früheren Entwurf eingeschlossen): Das Retrieval (die Abfrage) passiert nicht, bevor das Modell ins Spiel kommt. Es passiert innerhalb des eigenen Loops des Modells.

CogniVault verpackt Gemma im Strands Agents SDK. Das Modell erhält deine Frage zusammen mit einer Reihe von Tools (vorgeschriebene Python-Funktionen wie search_knowledge_base, calculator oder compare_documents). Es denkt dann über die Frage nach und entscheidet selbst, ob — und welche — Tools es aufruft. Bei den meisten Fragen zu Dokumenten ruft es search_knowledge_base auf, liest die abgerufenen Chunks und schreibt erst dann seine Antwort, basierend auf dem, was es gefunden hat.

Hier ist die Blaupause der Architektur dieses Loops:

graph TD Client[📱 Nutzer-Anfrage] --> App[🖥️ FastAPI Server] subgraph AgentLoop["Der Strands Agent-Loop (powered by Gemma 4)"] App --> Agent[🧠 Agent analysiert die Frage] Agent -->|Entscheidet zu suchen| Search[search_knowledge_base] subgraph HybrideSuche ["Hybride Such-Engine"] Search -->|Semantisch| FAISS[(FAISS Vektor)] Search -->|Exakter Treffer| BM25[(BM25 Keyword)] FAISS --> RRF{RRF Fusion} BM25 --> RRF end RRF -->|Beste Chunks + Quellenangaben| Agent Agent -->|Fundierte Antwort| Answer[Gestreamte Antwort] end Answer --> Client

Eine Feinheit, die erwähnenswert ist: Der Agent ist Gemma. Es gibt am Ende kein separates “Formatierungsmodell” — dasselbe Modell, das sich für die Suche entschieden hat, schreibt auch die endgültige Antwort, nun mit den abgerufenen Chunks vor Augen.


Was kommt als Nächstes?

Eine Spielzeug-RAG-App zu bauen ist einfach, aber eine zu bauen, die tatsächlich genau das Dokument abruft, das du brauchst, erfordert hybride Engines und einen Agenten, der weiß, wann er sie einsetzen muss.

Willst du sehen, wie dieses System riesige Dokumente sicher einliest, ohne Arbeit zu verlieren, wenn mal etwas abstürzt? Lies Teil 2: Dauerhafte Ingestion mit DBOS

Oder, wenn du lieber direkt in den Code springen willst: Die hybride Suche befindet sich in backend/services/vector_db.py des CogniVault-Repositories auf GitHub.


Anhang: Abkürzungen in diesem Beitrag

AbbreviationFull formMeaning
RAGRetrieval-Augmented GenerationRufe zuerst relevante Passagen aus deinen eigenen Dokumenten ab; lass das Modell daraus antworten anstatt aus dem Trainingsgedächtnis
FAISSFacebook AI Similarity SearchMetas Bibliothek zum Speichern von Vektoren und zum schnellen Finden der ähnlichsten
BM25Best Match 25Eine Keyword-Ranking-Formel — die 25. Ranking-Funktion, die im Okapi-Information-Retrieval-System entwickelt wurde
RRFReciprocal Rank FusionEine Formel, die mehrere Ranglisten nur anhand des Rangs jedes Elements zusammenführt: score = Σ 1/(k + rank)
LLMLarge Language ModelEin auf riesigen Textmengen trainiertes neuronales Netzwerk, das Sprache lesen und erzeugen kann
SDKSoftware Development KitEine Bibliothek mit Bausteinen — hier Strands, was den Agent-Loop bereitstellt
APIApplication Programming InterfaceDie URLs, die das Frontend aufruft, um mit dem Backend zu kommunizieren
ISBNInternational Standard Book NumberDie eindeutige Kennung, die auf jedem veröffentlichten Buch gedruckt ist — der beste Freund des Katalogs