Zum Inhalt springen
megapromotingLassen Sie uns sprechen

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 gebautExistă implementări proprii pentru fiecare etapă, dar starea lor diferă și trebuie spusă pe față. Ce rulează cu vectori proprii: memoria unui board intern folosit zilnic, cu coloană `vector(1536)`, index `ivfflat` pe distanță cosinus, prag de similaritate 0,35 și o buclă care re-indexează la 30 de minute doar ce s-a schimbat. Ce rulează cu vectori la furnizor: baza de cunoștințe a agenților vocali, sincronizată către motorul de regăsire al furnizorului cu fragmente de 500 și suprapunere de 100. Ce rulează în producție **fără** vectori: baza de cunoștințe a platformei de asistenți text — extragere, împărțire, configurare per asistent și regăsire hibridă sunt scrise și funcționează, dar calea de indexare scrie coloana de vector cu `null`, deci scorul hibrid degradează la lexical, iar codul își spune singur asta prin eticheta `keyword-only`. Ce e scris și încă nu e pornit în producție: pipeline-ul propriu pe `pgvector` al platformei vocale, a cărui migrare poartă în antet mențiunea „LOCAL ONLY — do not push to prod”. Un serviciu se vinde cu harta asta pe masă, nu fără ea.

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.

Was dazugehört

Die Arbeit, nach Bestandteilen

Wir extrahieren Text und sagen klar, wenn wir es nicht können

Aus reinem Text, Markdown, Logs, CSV, JSON, DOCX und PDF. DOCX wird als Archiv entpackt und das darin enthaltene XML-Dokument gelesen; PDF durchläuft den Standard-Extractor mit Erhalt des Seitenlayouts, und falls dieser fehlt, gibt es eine Reserve, die die Textoperatoren direkt aus der Datei liest. Der wichtige Fall ist der, in dem es nicht funktioniert: Ein gescanntes PDF, das ein Bild ist, enthält keinen auswählbaren Text, und das System gibt eine explizite Meldung zurück — laden Sie DOCX oder Text hoch, oder lassen Sie die Datei vorher per optischer Erkennung verarbeiten. Optische Erkennung haben wir nicht implementiert und tun auch nicht so, als hätten wir sie.

Wir teilen in Fragmente mit Überlappung, schneiden zwischen Sätzen, nicht durch sie hindurch

Die Standardwerte, die wir verwenden: 500 lexikalische Einheiten mit 50 Überlappung für die Sprach-Pipeline, 1.200 Zeichen mit 150 Überlappung für die Text-Pipeline; auf der Sprach-Anbieterseite 500 mit 100. Die Überlappung existiert, weil ein Satz, der mitten zwischen zwei Fragmenten abgeschnitten wird, für beide unbrauchbar wird. Der Satztrenner ist für die Sprachen geschrieben, mit denen wir arbeiten: Er erkennt das Satzende, gefolgt von einem lateinischen **oder kyrillischen** Großbuchstaben, einschließlich der rumänischen Diakritika. Ein für Englisch geschriebener Trenner schneidet auf Rumänisch schlecht und auf Russisch noch schlechter.

Wir indexieren mit Vektoren dort, wo wir es gestartet haben, und sagen, wo nicht

Das Standarddarstellungsmodell ist `text-embedding-3-small` mit 1.536 Dimensionen, angefordert über unser Modell-Gateway, nicht direkt beim Anbieter — so kann der Anbieter gewechselt werden, ohne den Code der Wissensbasis anzutasten. In der Datenbank ist die Spalte vom Typ Vektor mit `ivfflat`-Index auf Kosinusdistanz. In der Migration gibt es eine Reserve-Strategie: Wenn die Vektorerweiterung nicht verfügbar ist, wird das Schema jederzeit mit Trigramm-Index auf Text erstellt, und das Retrieval schaltet auf lexikalische Ähnlichkeit um. Das ist nicht hypothetisch — es wurde genau deshalb geschrieben, weil die Rechte für die Erweiterung nicht auf jeder Installation garantiert sind.

Hybrides Retrieval, mit den Gewichten sichtbar

Der Endscore besteht zu 0,7 aus der Vektorähnlichkeit plus zu 0,3 aus der Wortübereinstimmung, mit normalisiertem lexikalischem Anteil. Es wird ein Satz von Kandidaten bewertet und die ersten Fragmente werden behalten, und der an das Modell gesendete Kontext schneidet jedes Fragment auf eine maximale Länge zu, damit ein einzelnes langes Dokument nicht den ganzen Platz belegt. Die Konfiguration ist pro Assistent, in der Basis: Abruf ein- oder ausgeschaltet, maximale Anzahl von Fragmenten pro Frage (standardmäßig 5, begrenzt zwischen 1 und 20), Ähnlichkeitsschwelle, Suchtyp — semantisch, lexikalisch oder hybrid — und die Gewichtung des lexikalischen Anteils.

Das Genehmigungstor: Wissen wächst aus Lücken, mit einem Menschen in der Schleife

Wenn der Agent antwortet, dass er die Information nicht hat, wird die Frage in eine Tabelle mit dem Status „wartend“ geschrieben, markiert mit dem Kanal, aus dem sie kam — Sprache oder Widget. Ein Mensch erhält die Benachrichtigung und antwortet direkt auf die Nachricht; ein Webhook übernimmt die Antwort, setzt den Eintrag auf den Status „genehmigt“, und von dort gelangt er in den Kontext des Agenten. Die möglichen Stati sind vier: wartend, genehmigt, ignoriert, dupliziert — und die Duplikate werden über eine Referenz mit der ursprünglichen Frage verknüpft, damit sich nicht zehn Formulierungen desselben Mangels ansammeln. Die Auslieferung an den Agenten erfolgt einmalig pro genehmigtem Eintrag.

Auffrischung: was passiert, wenn sich die Quelle ändert

Beim Hinzufügen wird der SHA-256-Fingerabdruck des Inhalts berechnet; wenn der Text mit etwas bereits Indexiertem identisch ist, wird er wiederverwendet und es wird keine neue Vektorrepräsentation bezahlt. Wenn das Dokument geändert wird, werden seine Fragmente vollständig gelöscht und neu geschrieben — vollständiger Austausch pro Quelle, keine partielle Aktualisierung, weil eine partielle Aktualisierung verwaiste Fragmente aus der alten Version zurücklässt, und genau diese erzeugen Antworten, die dem Website-Inhalt widersprechen. Die Quelle hat einen sichtbaren Zustandszyklus: wartend, in Bearbeitung, in Reprozessierung, bereit oder fehlgeschlagen, und die Neuindexierung kann punktuell pro Quelle angefordert werden.

Wir indexieren nichts neu, was sich nicht geändert hat

In einer Schleife, die alle dreißig Minuten über eine Liste läuft, die nur wächst, ist die Neuberechnung der Repräsentation für ein unverändertes Element eine wiederkehrende Zahlung für einen Vektor, der sich nicht hätte bewegen können. Unsere Schleife vergleicht den Zeitpunkt der letzten Änderung mit dem Zeitpunkt der letzten Indexierung und überspringt das Unveränderte. Die Repräsentationen werden in Batches angefordert, nicht einzeln. Das sind Kostendetails, aber die monatlichen Kosten einer Wissensdatenbank werden hier fast vollständig entschieden.

Ein angebundenes Katalogsystem ist keine geladene Liste

Der Unterschied liegt nicht im Format, sondern im Zeitpunkt. Eine geladene Liste ist zum Zeitpunkt des Ladens wahr: Preis, Bestand und neue Produkte bleiben eingefroren, bis sich jemand erinnert, erneut zu laden — und meist stellt man fest, dass sich niemand erinnert, wenn ein Kunde nach einem Preis fragt, der drei Monate alt ist. Ein angebundener Katalog wird zum Zeitpunkt der Frage aus der Quelle gelesen, die die Daten führt. Was wir in diese Richtung gebaut haben: ein Extraktor, der Produktkollektionen in JSON oder CSV anhand der üblichen Schlüssel erkennt und, wenn die Struktur unüblich ist, die Hilfe eines Modells anfordert, das strikt in einer vorgegebenen Form antworten muss; und ein Parser, der den Preis aus der Live-Seite des Shops liest. Der beste Weg bleibt die eigene strukturierte Schnittstelle des Shops, wo sie existiert — aber sie wird pro Shop geprüft, nicht vorausgesetzt.

Das Durchsuchen einer Website: erst die Karte, dann die Erkundung

Zuerst wird nach der Sitemap in den üblichen Namensvarianten gesucht, und verschachtelte Karten auf zwei Ebenen werden entfaltet. Nur wenn keine Sitemap vorhanden ist, wird zur Breitensuche übergegangen, strikt auf derselben Origin, mit einer konfigurierbaren Seitenlimitierung (standardmäßig 50, gedeckelt bei 200). Die tatsächlich verwendete Strategie wird zurückgemeldet — Sitemap oder Erkundung —, denn daraus liest man ab, ob ein armes Ergebnis von der Website oder von der Methode kommt. Die Ausschlussdatei der Website wird beachtet.

Wie es aussieht

Der Weg, Schritt für Schritt.

01

Wir legen fest, was der Assistent wissen darf, vor jedem Import

Die Liste der zulässigen Quellen und, ebenso wichtig, die Liste der abgelehnten, mit dem Grund. Eine interne Datei mit Einkaufspreisen, ein Kontaktexport, ein E-Mail-Archiv — das sind genau die Dinge, die im Korpus landen „damit es Kontext hat“ und dann zu einer Antwort an einen Kunden werden. Wir liefern das Quelleninventar mit Entscheidung und Grund für jede Quelle sowie die Regel, was niemals hineindarf.

02

Wir importieren, teilen und prüfen das Ergebnis, indem wir die Fragmente tatsächlich lesen

Extraktion, Aufteilung mit Überlappung, Indexierung. Die Verifikationsphase wird nicht übersprungen: Es werden zufällige Fragmente aus dem entstandenen Korpus gelesen. Dort tauchen Tabellen auf, die in aneinandergereihte Wortketten verwandelt wurden, gescannte PDFs, die keinen Text erzeugt haben, und Navigationsmenü-Seiten, die als eigenständige Dokumente hineingekommen sind. Wir liefern den Korpus plus den Bericht darüber, was nicht extrahiert werden konnte und warum.

03

Wir justieren die Wiedergewinnung anhand echter Fragen, nicht anhand bequemer Fragen

Es wird ein Satz von Fragen aus dem gebaut, was Kunden tatsächlich fragen, einschließlich schlecht geschriebener Formulierungen und solcher in zwei gemischten Sprachen, und die Anzahl der Fragmente, die Schwelle und die Gewichtung des lexikalischen Anteils werden angepasst. Das Ziel ist nicht, dass jede Frage eine Antwort erhält, sondern dass Fragen ohne Abdeckung im Korpus „ich habe diese Information nicht“ erhalten. Wir liefern den Fragenkatalog mit den Ergebnissen und der finalen Konfiguration.

04

Wir setzen das Freigabe-Gate und die Wachstumsschleife ein

Erfassung unbeantworteter Fragen, Benachrichtigung an die genehmigende Person, Antwortweg, Überführung in den Korpus und Verknüpfung von Duplikaten. Wir liefern die funktionierende Schleife und die schriftliche Anweisung für die genehmigende Person — einschließlich dessen, was nicht aus der Kundenfrage kopiert wird.

05

Wir übergeben das Aktualisierungsverfahren, mit dem Namen der Person, die es ausführt

Welche Quelle aktualisiert wird, wie oft, wer klickt und woran man sieht, dass es passiert ist. Hier nennen wir die Grenze offen: In den von uns betriebenen Plattformen ist die Neuindizierung eine angeforderte Aktion, keine automatisch geplante. Ein Verfahren ohne einen Namen einer Person an seiner Stelle ist ein Verfahren, das nicht ausgeführt wird.

DocumenteConversațiiSurseSintezăAcțiuneEchipăContexteazăSurse autorizate. Acțiuni revizuite.
Drumul unei întrebări prin sistem: sursele aprobate intră în extragere și împărțire, fragmentele ajung în index; la întrebare se punctează candidații — vectorial și lexical — și doar câteva fragmente ajung în context; iar când nu se găsește nimic, întrebarea iese pe ramura de aprobare umană și se întoarce în corpus.

Die Daten

Was wir anfassen, wo die Daten liegen und wie lange sie bleiben

Die Fragen, die jede Person mit einem Datenschutzbeauftragten stellt — hier gestellt, bevor er sie stellt.

Was in den Korpus gelangt
Nur das, was ausdrücklich genehmigt ist: hochgeladene Dokumente, ausgewählte Seiten, Frage-Antwort-Paare, handgeschriebene Texte. Die Quellen sind typisiert — Text, Dokument, Website, Frage-Antwort-Paare — und haben einen erklärten Zweck: Produkte, Dokumentation, häufig gestellte Fragen oder anderes. Jede Quelle hat ihren eigenen Schalter, und der Schalter wird bei jeder Abrufabfrage geprüft, nicht nur in der Oberfläche — eine ausgeschaltete Quelle kann nicht einmal versehentlich in den Kontext gelangen.
Wo die Fragmente und ihre Repräsentationen liegen
In der Datenbank der betreffenden Plattform, zusammen mit den übrigen Kundendaten, nicht in einem separaten externen Suchdienst. Für Installationen auf PostgreSQL in eigenen Tabellen mit ausdrücklich aktivierter Vektor-Erweiterung; für die Plattform für Textassistenten in MySQL, mit der Repräsentation in einer JSON-Spalte und der in der Anwendung berechneten Distanz. Das zweite Modell funktioniert im kleinen Maßstab und skaliert nicht auf Hunderttausende von Fragmenten — das ist eine Architekturgrenze, so genannt.
Personenbezogene Daten aus Gesprächen
Der Korpus sollte keine personenbezogenen Daten enthalten, aber die Lernschleife kann sie hineinbringen, weil die Frage eines Kunden vom Kunden geschriebener Text ist. Deshalb geht der Eintritt in den Korpus durch die Freigabe durch einen Menschen: Dort wird gefiltert. Die dazugehörige operative Regel lautet: Wer Antworten genehmigt, erhält die ausdrückliche Anweisung, Namen, Telefonnummern oder Bestelldetails aus der ursprünglichen Frage nicht in den Korpus zu kopieren.
Was über Abfragen gespeichert wird
Es gibt eine Protokolltabelle der Abrufabfragen mit den erzielten Werten, der Abrufzeit und der Anzahl der zurückgegebenen Fragmente. Es ist das Instrument, mit dem man auf „warum hat es das gesagt“ antwortet — ohne es wird die Anpassung der Schwellenwerte zum Raten. Das Protokoll wird so lange aufbewahrt, wie es für die Abstimmung nützlich ist, und fällt unter die Aufbewahrungsfristen der Plattform, nicht unter ein separates Regime.
Was nicht existiert und ausdrücklich so erklärt ist
Es gibt keine Anwendung einer Ablaufzeit auf Dokumente: Das Feld ist im Schema deklariert, aber nichts liest es, also verschwindet ein Dokument nicht von selbst aus dem Korpus. Es gibt keine automatisch geplante Neuindizierung in den Kundenplattformen — die Aktualisierung wird ausdrücklich für eine Quelle angefordert. Es gibt keine Neuordnung mit einem dedizierten Modell und auch keine lexikalische Bewertung vom Typ BM25; was wir „hybrid“ nennen, ist eine gewichtete Summe aus Wortübereinstimmung und Vektordistanz, und genau diese Formulierung ist die korrekte.

Ein Fall

Eine Wissensdatenbank, die aus den Fragen gewachsen ist, auf die der Agent nicht antworten konnte

Die Ausgangslage

Eine Restaurantkette mit Lieferung hatte einen Sprachagenten am Telefon und einen Assistenten auf der Website. Der ursprüngliche Korpus war einmalig beim Start hochgeladen worden. Das Problem war nicht, dass der Agent Fehler machte, sondern dass er sehr oft sagte „ich habe diese Information nicht“ — bei völlig vernünftigen Fragen, die niemand bei der Erstellung des Korpus vorausgesehen hatte. Jede solche Antwort war ein verlorenes Gespräch, und ihre Liste existierte nirgends.

Was wir gebaut haben

Wir haben den Mangel in einen Systemeintrag umgewandelt. Wenn der Agent antwortet, dass er die Information nicht hat, wird die Frage in eine Tabelle mit dem Status „ausstehend“ und mit dem Kanal, aus dem sie kam — Sprache oder Widget — geschrieben. Die verantwortliche Person auf Kundenseite erhält eine Benachrichtigung über den Messaging-Kanal, den sie ohnehin nutzt, mit der Anweisung, direkt auf die Nachricht zu antworten. Ein Webhook übernimmt die Antwort, setzt den Eintrag auf den Status „genehmigt“, und von dort gelangt die Antwort in den Kontext des Agenten. Unterschiedliche Formulierungen desselben Fehlens werden über eine Referenz mit dem ursprünglichen Eintrag verknüpft, und die Auslieferung an den Agenten erfolgt pro Eintrag nur einmal, damit eine genehmigte Antwort nicht bei jedem Zyklus erneut injiziert wird.

Was dabei herauskam

Der Korpus hörte auf, eine beim Start hochgeladene Datei zu sein, und wurde zu einer Liste realer Lücken, geordnet von den Kunden, nicht von unseren Annahmen. Wer genehmigt, sieht genau, was gefragt wurde und in welchem Kanal, und schreibt daher die Antwort in der Form, in der sie verwendet wird. Die Status sind vier — ausstehend, genehmigt, ignoriert, Duplikat — denn „ignoriert“ ist ein legitimes Ergebnis: Manche Fragen dürfen niemals eine automatische Antwort erhalten.

Was der Fall nicht sagt

Die Schleife funktioniert genau so weit, wie der Mensch darin funktioniert. Wenn niemand auf Benachrichtigungen antwortet, sammeln sich die Einträge „in Wartestellung“ an, und der Agent weiß weiterhin nichts — der Mechanismus macht das Fehlen sichtbar, er behebt es nicht von selbst. Die zweite, ebenso wichtige Einschränkung: Die Implementierung wurde für den Ablauf dieses Kunden verdrahtet, mit der Tabelle, der Benachrichtigung und der Injection, die für ihn geschrieben wurden. Als generische Funktion, die aus der Oberfläche für jedes Konto verfügbar ist, gibt es sie noch nicht.

Fragen

Was uns die Leute fragen, bevor sie anrufen

Warum antwortet der Assistent falsch, wenn die Information in den hochgeladenen Dokumenten steht?

Fast immer, weil der richtige Ausschnitt nicht gefunden wurde, nicht weil das Modell „schlecht“ wäre. Die häufigsten Ursachen, in der Reihenfolge, in der wir sie prüfen: zu große Fragmente, in denen die nützliche Information zwischen anderem untergeht; Schnitt mitten im Satz, ohne Überlappung; zu wenige Fragmente, die in den Kontext geholt werden; oder ein Korpus, in dem dieselbe Information in drei verschiedenen Versionen vorkommt und die alte besser punktet. Das Abfrageprotokoll mit den erzielten Scores zeigt, welcher Fall vorliegt — ohne es wird geraten.

Verwenden Sie wirklich überall semantische Suche?

Nein, und es ist ehrlicher, genau zu sagen, wo. Mit eigenen Vektoren: der Speicher eines intern genutzten Boards, täglich verwendet, auf einer Vektorspalte mit Kosinusdistanz-Index und einem Ähnlichkeitsschwellenwert von 0,35. Mit Vektoren beim Anbieter: die Wissensdatenbank der Sprachagenten, synchronisiert zum Retrieval-Motor des Anbieters. **Ohne** Vektoren, heute, in Produktion: die Wissensdatenbank der Textassistenten-Plattform — der Indexierungspfad schreibt die Vektorspalte leer, also läuft das Retrieval lexikalisch, und der Code markiert seinen Modus selbst als `keyword-only`. Es gibt auch eine vollständig selbst geschriebene eigene Pipeline, mit einer Migration, die mit „nicht in Produktion veröffentlichen“ markiert ist, bis die Rechte an der Vektorerweiterung bestätigt sind. Das ist die reale Karte.

Was passiert, wenn wir ein bereits indexiertes Dokument ändern?

Die Fragmente der Quelle werden vollständig gelöscht und aus der neuen Version neu geschrieben. Wir haben den vollständigen Austausch statt der teilweisen Aktualisierung gewählt, weil der schwere Teil nicht das Hinzufügen ist, sondern das Entfernen: Fragmente, die aus der alten Version übrig bleiben, werden weiterhin gefunden und erzeugen Antworten, denen der Kunde mit der sichtbaren Seite widerspricht. Beim Hinzufügen gibt es auch eine Fingerprint-Prüfung des Inhalts — wenn der Text identisch ist, wird nichts neu berechnet und nichts unnötig bezahlt.

Aktualisiert es sich von selbst, wenn sich die Website oder der Katalog ändert?

Nicht automatisch, auf den Plattformen, die wir heute betreiben. Die Neuindexierung wird explizit pro Quelle über eine dafür vorgesehene Aktion angefordert. Es gibt eine einzige Ausnahme, in einem internen System von uns, wo eine Schleife alle dreißig Minuten läuft und nur das neu indexiert, was sich geändert hat. Die automatische Planung kann ebenfalls gebaut werden und ist ein separater Schritt; was wir nicht tun, ist den Eindruck zu erwecken, dass sie bereits existiert. Es gibt auch ein im Schema deklariertes Ablauf-Feld, das niemand liest — also verlässt ein Dokument das Korpus nicht von selbst.

Was ist der Unterschied zwischen einem verbundenen Katalog und einer hochgeladenen Produktliste?

Der Moment der Wahrheit. Die hochgeladene Liste ist am Tag des Hochladens korrekt; ab dem nächsten Tag weichen Preis, Bestand und neue Produkte stillschweigend ab, und die Abweichung wird entdeckt, wenn ein Kunde einen Preis verlangt, der nicht mehr existiert. Der verbundene Katalog wird zum Zeitpunkt der Frage aus dem führenden System gelesen, also kann er nicht hinterherhinken. Die Kosten sind anders: Es entsteht eine Abhängigkeit von der Verfügbarkeit dieses Systems, und es muss entschieden werden, was der Assistent sagt, wenn die Quelle nicht antwortet — die richtige Antwort ist „Ich kann den Preis im Moment nicht bestätigen“, nicht der zuletzt bekannte Wert.

Können Sie gescannte PDFs indexieren?

Nicht direkt. Ein gescanntes PDF ist ein Bild in einer PDF-Verpackung und enthält keinen auswählbaren Text; unser Extraktor erkennt das und gibt eine explizite Meldung zurück, statt ein leeres Dokument zu indexieren — das schlechteste mögliche Ergebnis wäre eine Quelle mit dem Status „fertig“, die nichts enthält. Die Lösung ist optische Erkennung vor dem Import oder die Bereitstellung des Dokuments in DOCX oder als Text. Optische Erkennung haben wir in der aktuellen Kette nicht implementiert.

Funktioniert es auf Rumänisch und Russisch?

Ja, und es gibt ein Detail, das mehr zählt, als es scheint. Die Aufteilung in Fragmente schneidet zwischen Sätzen, und unsere Regel erkennt das Satzende gefolgt von einem lateinischen **oder** kyrillischen Großbuchstaben, einschließlich der rumänischen Diakritika. Ein für Englisch geschriebener Separator erkennt den Beginn eines Satzes in Kyrillisch nicht und erzeugt zusammengeklebte Fragmente, mit direkter Wirkung auf die Qualität des Retrievals. Für die Sprachseite ist das beim Anbieter verwendete Repräsentationsmodell multilingual.

Wann lohnt sich semantische Suche NICHT?

Wenn der Korpus klein, stabil und von Ihnen geschrieben ist — zum Beispiel der Inhalt Ihrer eigenen Website. Auf einer eigenen öffentlichen Plattform haben wir uns bewusst für das Retrieval über Wortüberlappung auf dem eigenen Plattformtext entschieden, aufgeteilt in kurze Passagen, die jeweils die Ursprungsseite mitführen. Keine Vektoren, kein Vektorspeicher, keine zusätzliche Netzwerkanfrage und, wesentlich, keine Quelle außerhalb des Speichers. Der Assistent kann nur wiederholen, was die Website bereits sagt, und jede Antwort lässt sich auf einer von einem Menschen geschriebenen Seite überprüfen. Wenn es vor allem darum geht, nichts zu erfinden, schlägt das die semantische Suche.

Halten Sie uns in Ihrer Plattform gefangen?

Ihre Quellen bleiben Ihre und in der ursprünglichen Form; die Fragmente und Repräsentationen liegen in der Datenbank Ihrer Installation, nicht in einem externen Suchdienst, auf den nur wir Zugriff haben. Das Repräsentationsmodell wird über ein eigenes Model-Gateway angefordert, daher berührt ein Anbieterwechsel den Code der Wissensbasis nicht. Die Vektorrepräsentationen sind jedoch an das Modell gebunden, das sie erzeugt hat: Ein Modellwechsel erfordert die Neuindizierung des gesamten Korpus. Das ist ein berechenbarer Vorgang, kein kostenloser, und es ist besser, ihn zu Beginn zu kennen, als mitten drin davon zu erfahren.

Worauf die obigen Aussagen beruhen (29 Quellen)

29 davon sind Code und Dateien aus unseren Repositories. Wir veröffentlichen weder ihren Namen noch die Zeile: zusammen, auf einer einzigen Seite, würden sie zu genau beschreiben, wie Systeme gebaut sind, die nicht nur uns gehören. Wir gehen sie mit Ihnen durch, im Repository, auf Anfrage — die Überprüfung bleibt möglich, sie findet nur in einem Gespräch statt.

Was sollte bei Ihnen besser laufen?

Erzählen Sie uns von Ihrem Prozess. Gemeinsam legen wir fest, was sich zu bauen lohnt, was wir anbinden können und wie wir das Ergebnis prüfen.

Lassen Sie uns sprechen