Gleiche Frage, andere Zahlen, falsche Antwort
„400 Einheiten zuteilen“ und „1 000 Einheiten zuteilen“ ergeben fast identische Vektoren. Ein Cache, der allein auf Ähnlichkeit setzt, serviert einer Leitung die Zahlen einer anderen.
Gleiche Frage, andere Zahlen, falsche Antwort. Genau das passierte, als ein Cache für die Lieferkette zwei Anfragen allein über ihre Ähnlichkeit zusammenführte.
Warum das zählt
Ein Cache hält schnelle Systeme schnell: die Antwort ablegen und wieder ausgeben, wenn jemand dieselbe Frage stellt. Das übliche Verfahren verwandelt jede Frage in einen numerischen Fingerabdruck und prüft, wie nah eine neue Frage an einer abgelegten liegt.
Hier bricht es. „400 Einheiten von Lieferant A zuteilen“ und „1 000 Einheiten von Lieferant A zuteilen“ ergeben nahezu gleiche Fingerabdrücke. Der Sinn ist derselbe. Die Zahlen sind es nicht. Die richtige Antwort ändert sich vollständig.
Wenn zwischengespeicherte Antworten in echte Beschaffungsentscheidungen laufen, gibt ein falscher Cache-Treffer der Einkaufsleitung eine Lieferantenzuteilung auf Basis fremder Zahlen frei, und die Abweichung taucht in der Inventur des nächsten Quartals auf.
Für die Person, die diese Zuteilung unterschreibt, ist ein schnell falscher Cache weniger wert als ein langsames, richtiges System.
Wie es funktioniert
Die Voreinstellung in Caches im Betrieb ist allein die Kosinusähnlichkeit, mit einer Schwelle, die hoch genug angesetzt ist, um sicher zu wirken. Sperren, die auf Entitäten achten, schließen die Lücke, die diese Schwelle offen lässt. In einem Bereich, in dem „400 Einheiten“ und „1 000 Einheiten“ fast am selben Ort liegen, hilft eine höhere Schwelle allein nicht.
Ich habe diese Korrektur in einen LangGraph-ERP-Copilot für die Lieferkette eingebaut. Er prüft auf zwei Ebenen.
Zuerst ein exakter Textabgleich. Die Frage hashen, nachschlagen. Gleiche Frage, abgelegte Antwort.
Danach ein Abgleich über den Sinn, mit einer Sperre. Die Fingerabdrücke werden bei 0,95 Ähnlichkeit verglichen. Vor der Annahme wird geprüft, ob beide Fragen dieselben Zahlen und dieselben Entitätscodes enthalten. „400 Einheiten“ gegen „1 000 Einheiten“ fällt durch die Sperre. „Lieferant A“ gegen „Lieferant B“ fällt durch. Gleiche Zahlen, gleiche Codes, andere Formulierung? Das ist ein echter Treffer.
Manche Antworten landen nie im Cache: die, die auf eine Freigabe warten, weil sie eine laufende Entscheidungs-ID tragen, und die, die während eines Modellausfalls entstanden sind.
Überrascht hat mich, dass die Sperre, die Zahlen und Kennungen herauszieht, mehr Arbeit machte als die Ähnlichkeitssuche. Der ursprüngliche Cache hatte 24 Zeilen. Die Fassung im Betrieb hat 201. In einem Bereich, in dem eine falsche Antwort Geld bewegt, habe ich diesen Cache auf Richtigkeit statt auf Trefferquote eingestellt und die Sperre genau darauf geprüft.