Der Graph, den wir am Ende doch gebaut haben
Wir haben in diesem Blog vertreten, dass eine Graphschicht ihre Kosten meist nicht wert ist. Dann kam ein Bestand, in dem der Vektorabruf bei fast einem Drittel der Fragen scheiterte — aus strukturellen Gründen, die sich nicht durch besseres Chunking beheben ließen.
Die Haltung, die wir vertreten haben
Wir haben geschrieben, dass eine Graphschicht ihre Komplexität nur verdient, wenn die Verbindung zwischen Dokumenten nicht ohnehin irgendwo festgehalten ist, und dass die meisten Bestände, die wir sehen, Kennungen haben, die einen Datenbank-Join zur besseren Antwort machen. Das war bis zu diesem Projekt bei jedem richtig.
Der Bestand sind technische Spezifikationen eines Netzes voneinander abhängiger Komponenten, in dem eine einzelne Frage regelmäßig davon abhängt, welche Version einer Komponente mit welcher Revision einer anderen kombiniert wird — und diese Paarungen stehen in Fließtext statt in einem Feld.
Warum Chunking es nicht beheben konnte
Die scheiternden Fragen handelten nicht davon, eine Passage zu finden. Sie handelten davon, einer Kette zu folgen: Diese Komponente verlangt jene Schnittstelle, die eine dritte ab einer bestimmten Revision bereitstellt, was wiederum eine vierte einschränkt.
Kein Chunk enthält die Kette. Besseres Chunking macht jedes Glied leichter auffindbar und ändert nichts daran, dass die Antwort drei davon zusammen braucht — dasselbe Argument, das wir seit Jahren für Zusammenfassungsschichten vertreten, angewandt auf Beziehungen statt auf Dokumente.
Der Vergleich, den wir gefahren haben
Ahmad und Kollegen veröffentlichten 2025 einen Benchmark, der Vektor-, Graph- und Hybrid-Abrufpipelines in einer technischen Domäne gegeneinander stellt — der Vergleich, den die meisten Diskussionen zu diesem Thema behaupten statt messen.
Wir haben eine eigene Fassung auf dem Referenzset des Kunden gefahren. Vektor allein beantwortete rund siebzig Prozent, Graph allein rund vierundsechzig, hybrid rund achtundachtzig. Wichtig war die dritte Zahl, und die zweite hat überrascht: Der Graph für sich war schlechter als das, was wir bereits hatten.
| Art der Frage | Was sie beantwortet |
|---|---|
| Ein Spezifikationswert | Vektor. Der Graph trägt nichts bei |
| Eine Abhängigkeitskette | Graph. Vektor kann ihr nicht folgen |
| Welche Revisionen zusammenpassen | Graph, mit dem Versionsfilter |
| Alles, was nur in Prosa steht | Vektor. Der Graph hat es nie extrahiert |
Was der Bau gekostet hat
Sechs Wochen, davon vier für Extraktion und Prüfung statt für Graph-Infrastruktur. Entitäten und Beziehungen wurden von einem Modell extrahiert und dann geprüft: Ein Fachexperte sah eine Stichprobe von zweihundert Beziehungen durch, von denen etwa jede achte falsch war — meist, weil eine Abhängigkeit behauptet wurde, die der Text nur bedingt nahelegte.
Diese Fehlerquote schreibt niemand in ein Angebot. Ein Graph mit einer falschen Kante von acht beantwortet Abhängigkeitsfragen selbstsicher und falsch, also musste die Extraktion verschärft werden, bis die Stichprobenfehlerquote unter drei Prozent fiel — und in diese Verschärfung gingen die vier Wochen.
Was die Pflege kostet
Mehr als der Index. Wird eine Spezifikation überarbeitet, muss der betroffene Teilgraph neu extrahiert und neu geprüft werden — und anders als ein Embedding-Index, der sich mechanisch neu bauen lässt, führt ein Graph-Neubau Extraktionsfehler wieder ein, die eine Person zuvor korrigiert hatte.
Wir behandeln das, indem die menschlichen Korrekturen als eigene Schicht nach der Extraktion angewandt werden, sodass ein Neubau sie nicht verwirft. Das stand nicht in unserem ursprünglichen Entwurf und ist das Stück, das wir jedem anderen zuerst zu bauen raten würden.
Warum die Antwort hybrid war
Weil der Graph bei den meisten Fragen schlechter ist. Er beantwortet Abhängigkeitsketten und weiß nichts über die Prosa, die nie in eine Beziehung extrahiert wurde — und in dieser Prosa stehen die meisten Spezifikationswerte.
Der Abruf fährt deshalb beides, und der Reranker sieht die Vereinigung. Das ist mehr Infrastruktur als jedes für sich und die einzige Konfiguration, die den Ausgangszustand schlug. Den Graphen als Ersatz darzustellen hätte das System auf eine Weise verschlechtert, deren Ursache Monate gebraucht hätte.
Was wir Kunden heute sagen
Dasselbe wie vorher, mit einer Ergänzung. Zählen Sie die Fragen, die eine Kette brauchen statt einer Passage. Unter etwa einem Fünftel ist der Join oder die Zusammenfassungsschicht günstiger, und wir sagen das. Darüber, und wenn die Verbindungen in Prosa statt in Feldern stehen, ist ein Graph das Messen wert.
Und bauen Sie die Prüfung vor dem Graphen. Der Graph ist der leichte Teil; ob er funktioniert, entscheidet sich daran, ob jemand die Beziehungen geprüft hat und ob dessen Korrekturen den nächsten Neubau überleben.
Was wir nicht behaupten
Wir behaupten nicht, unsere frühere Haltung sei falsch gewesen. Sie war richtig für die Bestände, um die es ging, und dieser Beitrag existiert, weil ein Bestand anders war — nicht, weil sich der allgemeine Rat geändert hätte.
Wir behaupten auch nicht, achtundachtzig Prozent seien absolut ein gutes Ergebnis. Zwölf Prozent der Fragen scheitern weiterhin, die meisten davon dort, wo die Spezifikation es schlicht nicht sagt — und ein System, das sie beantworten könnte, würde erfinden.
