Expertise · Wissensbasen und semantische Suche
Wir bauen den Corpus, aus dem ein Assistent antworten darf, mit Regeln dazu, was hineinkommt, wie er aufgeteilt wird, wie gesucht wird und was passiert, wenn sich die Quelle ändert.
Ein Assistent, der Kunden antwortet, ist genau so gut wie der Korpus, aus dem er liest. Wir kümmern uns um den Korpus: Extraktion aus Dokumenten und der Website, Aufteilung in Fragmente, Indexierung, Wiederauffinden, die menschliche Genehmigungsstufe und Aktualisierung. Dazu gehört auch die Antwort auf die Frage, wann semantische Suche NICHT sinnvoll ist.
Bereits gebautEs gibt eigene Implementierungen für jede Phase, aber ihr Stand ist unterschiedlich und muss offen gesagt werden. Was mit eigenen Vektoren läuft: der Speicher eines intern genutzten Boards, täglich verwendet, mit Spalte `vector(1536)`, Index `ivfflat` auf Kosinusdistanz, Ähnlichkeitsschwelle 0,35 und einer Schleife, die alle 30 Minuten nur das neu indexiert, was sich geändert hat. Was mit Vektoren beim Anbieter läuft: die Wissensdatenbank der Voice Agents, synchronisiert zum Retrieval-Engine des Anbieters mit Fragmenten von 500 und einer Überlappung von 100. Was in Produktion **ohne** Vektoren läuft: die Wissensdatenbank der Textassistenten-Plattform — Extraktion, Aufteilung, Konfiguration pro Assistent und hybride Regäbe sind geschrieben und funktionieren, aber der Indexierungspfad schreibt die Vektorspalte mit `null`, also degradiert der hybride Score auf lexical, und der Code sagt es selbst durch das Label `keyword-only`. Was geschrieben ist und in Produktion noch nicht gestartet wurde: die eigene `pgvector`-Pipeline der Sprachplattform, deren Migration im Header den Hinweis „LOCAL ONLY — do not push to prod“ trägt. Ein Service wird mit dieser Karte auf dem Tisch verkauft, nicht ohne sie.
Ein Assistent, der mit Kunden spricht, „weiß“ nichts. Bei jeder Frage sucht jemand im Voraus einige Textfragmente heraus und legt sie ihm vor, und er formuliert daraus die Antwort. Die Qualität der Antwort wird fast vollständig in jener Suchphase entschieden, nicht bei der Wahl des Modells. Deshalb geht es bei diesem Dienst um Corpus und Retrieval, nicht um das Modell.
Die Arbeit hat vier Teile, die unabhängig voneinander kaputtgehen. Extraktion: aus welchen Dateien und welchen Seiten wir nutzbaren Text holen und was wir tun, wenn wir es nicht können. Aufteilung: wie groß die Fragmente sind, wie stark sie sich überlappen, wo ein Satz getrennt wird. Retrieval: wie die Fragmente für eine konkrete Frage ausgewählt werden, wie viele und nach welchem Kriterium. Aktualisierung: was passiert, wenn das Quelldokument geändert wird. Ein System kann bei dreien davon einwandfrei sein und wegen des vierten unbrauchbar.
Es gibt noch eine zusätzliche Phase, die viele überspringen und die das Ergebnis vollständig verändert: das Freigabetor. Ein Corpus, der sich von selbst aus Gesprächen vergrößert, enthält schnell Antworten, die niemand validiert hat. Die Schleife, die wir gebaut haben, läuft umgekehrt: Wenn der Agent sagt „Ich habe diese Information nicht“, wird die Frage mit dem Status „in Warteschlange“ erfasst, ein Mensch erhält eine Benachrichtigung und antwortet, und seine Antwort geht in den Status „genehmigt“ über und erst dann in den Corpus. Wissen wächst aus echten Lücken, mit einem Menschen in der Kette.
Und der unpopuläre Teil: semantische Suche ist nicht immer die richtige Wahl. Für eine eigene öffentliche Plattform haben wir sie bewusst abgelehnt. Der Corpus ist der eigene Text der Plattform, aufgeteilt in kurze Passagen, die jeweils die Seite tragen, aus der sie stammen, markiert durch Wortüberlappung. Ohne Vektoren, ohne Vektorspeicher, ohne zusätzliche Netzwerkanfrage — und, wichtiger, ohne irgendeine Quelle außerhalb des Speichers. Der Assistent kann nur wiederholen, was bereits auf der Website steht, und jede Antwort wird auf einer von einem Menschen geschriebenen Seite geprüft. Das ist der gesamte Anti-Erfindungs-Mechanismus.