ISMS Copilot
Engineering

Dlaczego nie deduplikujemy faktów zgodności poprzez oszacowanie podobieństwa

W naszej ocenie deduplikacji pamięci sprzeczności osiągnęły średnią wartość cosinus 0,938 względem najbliższego przechowywanego faktu, a prawdziwe duplikaty 0,940. Żaden globalny próg nie rozdzielał czysto par, które nie powinny zostać scalone, od tych, które powinny. Dlatego cosinus nigdy nie decyduje o scalaniu w naszym systemie.

przez ISMS Copilot··9 min read
Dlaczego nie deduplikujemy faktów zgodności poprzez oszacowanie podobieństwa

Ogólny współczynnik podobieństwa dobrze odpowiada na jedno pytanie: czy te dwa stwierdzenia dotyczą tej samej rzeczy. W modelu, który zmierzyliśmy, nie odpowiedział on jednak na pytanie, które tak naprawdę musi zostać postawione pamięci faktów zgodności: czy te dwa stwierdzenia są zgodne. Zmierzylismy lukę we własnych danych, i nie jest to margines, który można wyregulować. W naszej ocenie deduplikacji pamięci prawdziwe duplikaty osiągnęły średnią wartość 0,940 cosinusa względem najbliższego przechowywanego faktu, natomiast bezpośrednie sprzeczności — 0,938, a żaden globalny próg w tych danych nie rozdzielał czysto parafraz, które chcieliśmy wyeliminować, od sprzeczności, których nie mogliśmy. Nazywamy to pułapką o czym (ang. aboutness trap), i to dlatego w naszym systemie cosinus nigdy nie decyduje o scalaniu.

Błąd jest cichy i jednokierunkowy. Pominięcie deduplikacji pozostawia redundantny wiersz, co jest problemem kosmetycznym. Fałszywe scalenie usuwa jeden z dwóch faktów, które się różnią, a jeśli usuwany fakt brzmi „Uwierzytelnianie wieloskładnikowe (MFA) nie jest wymagane dla wszystkich użytkowników”, asystent do spraw audytu będzie teraz zawierał przeciwieństwo prawdy. Traktujemy te dwa rodzaje błędów jako kategorycznie różne, a cała konstrukcja wynika z tej asymetrii.

Pomiar

Ocena uruchamia rzeczywisty backendowy proces decyzyjny (ten sam evaluateCandidate, którego używa system) na zbiorze par zdań GRC (ang. Governance, Risk, and Compliance), które zostały sztucznie wygenerowane, pozbawione danych osobowych i zawierały elementy konfrontacyjne. Każda para jest oznaczona swoim związkiem: zduplikowanym stwierdzeniem, które powinno zostać wyeliminowane, lub jednym z trzech rodzajów, których nie wolno scalać — odrębnym faktem różniącym się jednym tokenem, bezpośrednią sprzecznością lub doprecyzowaniem zakresu. Wynik: 2026-06-25, model mistral-embed (wersja v23.12 za aliasem) do generowania wektorów oraz niewielki model sędziowski Mistral (mistral-small-2603, temperatura 0) do podejmowania decyzji, 261 par, 522 wywołania modelu, koszt około $0,036.

Na badaniu oszacowań embeddingu warto się skupić. Średni cosinus kandydata względem najbliższego przechowywanego faktu, według relacji (mistral-embed v23.12, 2026-06-25):

relacjaśredni cosinusn
duplikat0,94010
sprzeczność0,9387
nie-duplikat (różnica jednego tokenu)0,902239
doprecyzowanie0,8475

Spójrz na dwa górne wiersze. Średnia sprzeczność znajduje się zaledwie 0,002 poniżej średniej parafrazy tego samego faktu. Pojedynczy wyraz, który odwraca wartość logiczną („nie”), ledwo przesuwa wektor, ponieważ oba zdania dotyczą głównie egzekwowania MFA, a w tym modelu bliskość śledzi wspólny temat znacznie bardziej niż negację.

Prawie równie blisko znajdują się odrębne fakty różniące się jednym tokenem. „Ukończyliśmy badanie SOC 2 Type 1” versus „Type 2” to nie drobiazg: badanie SOC 2 Type 1 odnosi się do odpowiedniości projektu kontroli w określonym dniu, natomiast badanie SOC 2 Type 2 dodatkowo odnosi się do skuteczności działania w określonym okresie (Przewodnik AICPA dotyczący raportowania SOC 2). Scalenie ich mówi zespołowi ds. bezpieczeństwa klienta, że posiadacie dowód, którego nie macie. W rzeczywistym teście end-to-end modułów „SOC 2 Type 1” i „Type 2” zostały osadzone z cosinusem 0,961, powyżej średniej prawdziwego duplikatu w tabeli. To pojedynczy przypadek jest ważny: para, której nigdy nie wolno scalić, uzyskała wyższy wynik niż średnia para, którą należy scalić. Cała klasa nie-duplikatów osiągnęła średnio 0,902.

Dlaczego pojedynczy próg nie rozdziela ich

Instynktownie, gdy widzimy wysoki wynik duplikatu, chcemy ustawić próg scalania tuż poniżej niego. Nasze dane przemawiają przeciwko temu na dwa sposoby. Średnie klas nie rozdzielają się: 0,940 dla duplikatów i 0,938 dla sprzeczności to, w kontekście progów, te same liczby. Ponadto mamy konkretny kontrprzykład powyżej tej liczby — parę Type 1 versus Type 2 z wynikiem 0,961, której nie wolno scalić, a która uzyskała wyższy wynik niż średni prawdziwy duplikat. Globalny próg wystarczająco niski, aby wyeliminować zwykłe parafrazowanie, scaliłby również fakty, które zmierzyliśmy jako te, które muszą pozostać oddzielne. Nie twierdzimy, że udowodniliśmy, iż żaden rozdzielający próg nie istnieje dla dowolnego zbioru danych lub modelu. Raportujemy jedynie, że w tym konfrontacyjnym zbiorze GRC, z tym modelem embeddingu, żaden globalny próg cosinusa nie rozdzielił par bezpiecznych do scalenia od tych, których scalenie byłoby fatalne.

Dlatego w naszym systemie embeddingi pełnią tylko jedną funkcję: wyszukiwania. Dolny próg cosinusa wynosi 0,55, celowo niski, i służy jedynie do wyboru, który przechowywany fakt warto porównać z kandydatem. Nie decyduje on o scalaniu. Gdy najbliższy sąsiad zostanie pobrany, decyzję podejmuje mechanizm, który analizuje tokeny, które cosinus niedostatecznie uwzględnia.

Architektura, która utrzymuje sprzeczności osobno

Dwa poziomy, a warstwa deterministyczna jest nadrzędna.

Po pierwsze, deterministyczna kontrola chronionych tokenów. Porównujemy kandydata z pobranym sąsiadem pod kątem tokenów niosących znaczenie zgodności: negacji („nie”, „już nie”), kwantyfikatorów i zakresu („wszyscy”, „tylko”, „administratorzy”), jurysdykcji i regionów, wersji standardów, typów SOC 2, liczb i jednostek. Jednostronna różnica w dowolnej chronionej klasie blokuje scalenie i ma pierwszeństwo przed werdyktem modelu, niezależnie od jego wyniku. „MFA jest egzekwowane” versus „MFA nie jest egzekwowane” jest blokowane przez regułę negacji, niezależnie od tego, jak podobne wyglądają oba zdania.

Po drugie, konserwatywny model sędziowski. Model musi osiągnąć 0,8 pewności, aby wyeliminować kandydata jako duplikat; poniżej tego progu oba wiersze są zachowywane. Jest on nastawiony na zachowywanie, ponieważ dwa kierunki błędów nie są symetryczne: zachowany duplikat to problem kosmetyczny, natomiast scalenie sprzeczności to korupcja.

Próg, który system musi przekroczyć: zero fałszywych scaleń w 251 parach, których nie wolno scalić. System ten przekroczył próg — nie zaobserwowano fałszywych scaleń. Zasadniczo 3/251 to około 1,2%, ale w przypadku ustalonego, kuratoryjnego zbioru jest to heurystyka, a nie rzeczywista granica ufności ani gwarancja produkcyjna. Właściwość, na której polegamy, jest węższa i solidniejsza: sama kontrola deterministyczna, bez udziału modelu, zablokowała wszystkie 251 przypadków, więc próg jest utrzymywany przez kod, który można przeczytać, a nie przez model, któremu trzeba ufać.

Co oszukało model sędziowski

Szczerze mówiąc. Kolejna ocena czyszczenia przeprowadzona dwa dni później, 2026-06-27, ujawniła jeden fałszywy szał, którego wcześniejsza wersja kontroli nie wychwyciła: „SSO jest dostępne dla klientów enterprise” versus „SSO jest dostępne dla wszystkich klientów”. Model uznał szersze stwierdzenie za nieszkodliwe doprecyzowanie węższego i scalił je. To pułapka o czym na wyższym poziomie: oba zdania dotyczą prawie wyłącznie dostępności SSO, a model sędziowski, podobnie jak embedding, niedostatecznie uwzględnił kwantyfikator, który zmienił zakres, do którego odnosi się fakt. Naprawa polegała na przeniesieniu jednostronnej zmiany w klasie niosącej zakres (kwantyfikatory, podmioty, negacja, modalność) do kontroli deterministycznej zamiast pozostawiania jej osądowi modelu, a także na dodaniu jawnej reguły zakresu stosowalności w monicie modelu sędziowskiego jako dodatkowej warstwy obrony. Po naprawie ta ocena wykazała zero fałszywych scaleń, 18 z 18 odrębnych par zachowanych osobno oraz 8 z 8 prawdziwych duplikatów przypomnianych.

Ten wzorzec powtarza się na różnych poziomach. Embedding niedostatecznie uwzględnia negację i zakres strukturalnie, w tym modelu. Model sędziowski niedostatecznie uwzględnia je miękko. Warstwa, która niezawodnie je wychwyciła w naszych testach, to ta, która nazywa dokładne tokeny zmieniające znaczenie faktu zgodności, a ta warstwa jest kodem deterministycznym, a nie kolejnym modelem proszonym o ostrożność.

Ograniczenia

Jest to brama decyzyjna jakościowa nad oznaczonymi parami, jeden kandydat wobec dopasowanego sąsiada, a nie test obciążeniowy dużego magazynu, a klasy sprzeczności i doprecyzowania są niewielkie (odpowiednio 7 i 5 par), więc ich średnie są orientacyjne, a nie precyzyjnymi szacunkami. Wartości cosinusa są specyficzne dla mistral-embed v23.12 na tych zdaniach GRC; inny model embeddingu przesunie je, a niewrażliwość na negację, którą zaobserwowaliśmy, jest specyficzna dla modelu, którego użyliśmy, a nie prawem oszacowań podobieństwa. Modele wytrenowane kontrastywnie można dostroić, aby odsuwały sprzeczności, traktując je jako twarde negatywy (SimCSE, EMNLP 2021), dlatego właściwe odczytanie brzmi „zmierz swój własny model”, a nie „embeddingi nigdy tego nie zrobią”. Odzyskiwanie duplikatów w przebiegu deduplikacji wyniosło 0,5 — pięć z dziesięciu prawdziwych duplikatów zostało wyeliminowanych. To cena, którą wybraliśmy: model sędziowski zachowuje oba wiersze, gdy jest niepewny, więc odzyskiwanie jest dźwignią, którą regulujemy, podczas gdy liczba obserwowanych fałszywych scaleń pozostaje równa zero. Wolelibyśmy nosić kilka redundantnych prawdziwych faktów niż kiedykolwiek scalić dwa, które się różnią.

Pułapka o czym i lista kontrolna

Główną myśl, którą należy wynieść z tego tekstu: w modelu, który zmierzyliśmy, wysoki wynik podobieństwa oznaczał, że dwa stwierdzenia dotyczą tej samej rzeczy, a nie że są zgodne, natomiast deduplikacja wymaga zgodności. Gdy taka pamięć jest udokumentowaną informacją, na której opiera się ISMS, norma ISO/IEC 27001:2022, punkt 7.5.3, wymaga, aby była chroniona przed utratą integralności (ISO/IEC 27001:2022, punkt 7.5.3, wydanie z października 2022 r.); jeśli ciche scalenie spowoduje, że wymagany zapis stanie się nieprawdziwy, jest to utrata integralności w tym właśnie sensie. Jeśli budujesz pamięć lub warstwę wiedzy z semantyczną deduplikacją, przeprowadź następujące kroki:

  • Zmierz rozkład, nie zakładaj go. Osadź oznakowane pary duplikatów, sprzeczności i bliskich nie-duplikatów ze swojego własnego obszaru, na swoim własnym modelu, i przyjrzyj się cosinusowi według relacji. Jeśli wyniki dla sprzeczności nakładają się na wyniki dla duplikatów, żaden próg oparty na tym wyniku nie rozdzieli ich.
  • Używaj embeddingu do wyszukiwania, nie do podejmowania decyzji o scalaniu. Niski próg cosinusa do wyboru sąsiada do porównania jest w porządku. Użycie tego samego wyniku do decyzji o scaleniu to sposób, w jaki sprzeczność zostaje cicho usunięta.
  • Umieść deterministyczną kontrolę przed scaleniem. Wymień tokeny, które zmieniają znaczenie w Twojej dziedzinie (negacja, kwantyfikatory, zakres, wersje, jurysdykcje, jednostki) i pozwól jednostronnej zmianie w dowolnej z nich przesłonić wynik modelu.
  • Spraw, aby model sędziowski był konserwatywny i asymetryczny. Nastaw go na zachowywanie obu wierszy. Zdecyduj, który błąd jest kosmetyczny, a który korupcyjny, i nigdy nie pozwól modelowi wymienić drugiego, aby uniknąć pierwszego.
  • Stosuj próg zero dla fatalnego błędu, reguluj odzyskiwanie osobno. Utrzymuj fałszywe scalenia na poziomie zero jako próg; popraw odzyskiwanie duplikatów przy tym samym progu, nie przesuwając go.
  • Umieść bliskie przypadki w swoim zbiorze danych. Para poszerzająca zakres, która wygląda jak doprecyzowanie, to ta, która zostaje scalona. Liczby zapisane słownie, pisane małymi literami akronimy i zmiany kwantyfikatorów to miejsca, w których model sędziowski cicho zawodzi.

Wszystkie powyższe dane są naszymi własnymi pomiarami na własnych syntetycznych danych GRC, przy użyciu mistral-embed v23.12 i mistral-small-2603 z temperaturą 0, datowanych na 2026-06-25 i 2026-06-27. Zbiór danych nie zawiera danych klientów.

Powiązane artykuły