Consulting Work Blog Kontakt
← Zpět na blog

Poznámky, které nikdy nebyly docela pravdivé

Poznámky, které nikdy nebyly docela pravdivé

Před několika měsíci mě poznámka v mém trezoru málem přiměla k reálnému rozhodnutí. Byla výstižná. Byla konkrétní. Krásně naformátovaná, s malou sebejistou tabulkou a číslem přesně uprostřed. A to číslo bylo špatně.

Nebylo špatně proto, že by někdo lhal. Bylo špatně proto, že šlo o shrnutí shrnutí shrnutí — a někde čtyři generace výše v tom řetězu se číslo posunulo, tak jako se posune příběh, když se převypráví. Než ke mně doputovalo, ztratilo veškerou paměť o tom, odkud pochází. Leželo ve stejné složce, týmž písmem, se stejnou klidnou autoritou jako výpis z bankovního účtu o dvě poznámky dál. Nic na něm neříkalo Jsem domněnka o domněnce. To byl celý problém.

Uchovávám to, čemu dnes lidé říkají druhý mozek: několik tisíc Markdown souborů — zápisky ze schůzek, přepisy, naskenované dokumenty, nedodělané nápady a neustále rostoucí hromadu věcí, které mi shrnula umělá inteligence. Na vrcholu sedí asistent, který z nich vyhledává, kdykoli se na něco zeptám. A po dlouhou dobu dělal tento asistent něco potichu nebezpečného: zacházel s každým souborem jako se stejně pravdivým.

Ale stejně pravdivé nejsou. Některé moje poznámky jsou přímou pravdou: smlouva, zákon, průkaz totožnosti, nezpracovaný záznam, číslo, které jsem ověřil u zdroje. Některé jsou syntézami první úrovně, které AI vytvořila přečtením tří jiných poznámek. A některé jsou syntézami syntéz, tři nebo čtyři kroky vzdálenými od čehokoli reálného. AI syntéza může být plynná a přitom zcela chybná, a když vyhledávač takovou plynně chybnou poznámku zahrne do odpovědi, chyba se přetaví ve „fakt". Sebejistota není důkazem. Moje soubory neměly jak jedno od druhého odlišit — a tudíž ani já.

Řešením nebyl chytřejší model. Bylo jím provenience — přimět každou poznámku, aby přímo na sobě deklarovala, odkud pochází a jak moc si zasloužila být považována za věrohodnou.

Rodokmen každé poznámky

Každá věcná poznámka nyní nese v záhlaví šest řádků metadat:

  • tier — kolik kroků je vzdálena od hrubé reality. Tier 0 je primární: původní dokument, smlouva, zákon, průkaz totožnosti, nezpracovaný e-mail přímo od odesílatele. Tier 1 je mechanická transformace jednoho primárního záznamu v poměru jedna ku jedné — vyčištěný přepis, naskenovaný dokument rozpoznaný OCR. Tier 2 je první syntéza. Tier 3 spojuje více zdrojů dohromady. Tier 4 a výše je syntéza syntézy. Pravidlo je brutálně jednoduché: úroveň poznámky je o jednu vyšší než nejvyšší tier, z nějž byla sestavena.
  • reliability — číslo mezi 0 a 1, v plné přesnosti, bez zaokrouhlování na celé desetiny. Primární záznamy se nastavují ručně. Smlouva, zákon, úřední dokument, průkaz totožnosti, nezpracovaný záznam — vše je 1.0, protože dokument zůstává tím, čím je, bez ohledu na to, zda si ho správně pamatuji. Moje vlastní přímé svědectví sedí o stupeň níže, protože paměť není důkazem a mohu se mýlit právě v tom, o čem jsem si nejjistější. Nezpracovaný přepis je 0.99, téměř dokonalý, ale mikrofon může zaslechnout špatně. Záznam z otevřeného webu je 0.8.
  • sources — odkazy na přesné poznámky, z nichž tato vychází. Tyto odkazy jsou hranami grafu důvěry. Žádné zdroje znamenají primární záznam.
  • volatility — statická, pomalá nebo rychlá. Je to fakt, který bude platit věčně, nebo cena, jež bude do pátku zastaralá?
  • verified — poslední datum, kdy člověk skutečně potvrdil daný fakt. Ukázalo se, že tento jediný řádek nese většinu signálu.
  • generated_by — kdo nebo co text vytvořil: já, model pro přepis, konkrétní LLM nebo jejich kombinace. Ortogonální ke všemu ostatnímu — protože jak byla věta napsána je jiná otázka než jak pravdivá je.

Aritmetika pochybnosti

Spolehlivost se při průchodu znalostí systémem nesčítá ani neodčítá. Násobí se, přičemž velikost multiplikátoru závisí na druhu provedeného kroku.

Mechanická kopie neztrácí nic a uchovává veškerou důvěru svého zdroje. Věrné shrnutí neztrácí téměř nic a uchovává přibližně 98 procent. Skutečná první syntéza, kde model přečte několik poznámek a vyvodí závěr, uchovává přibližně 96. Propletení více zdrojů uchovává 95 a spekulativní skok přesahující to, co zdroje skutečně říkají, uchovává přibližně 90. Prudké poklesy jsou vyhrazeny pro kroky, které skutečně přidávají riziko — nikoli pro ty poctivé. Dřívější verze trestala každý krok stejnou pevnou hodnotou a důvěra se zhroutila příliš rychle. Vázání penalizace na druh inference bylo tím, co to napravilo.

Stále platí princip nejslabšího článku — nikdy průměr. Syntéza je jen tak důvěryhodná jako nejvratkější věc, o niž se opírá, protože průměr by umožnil jednomu solidnímu zdroji zakrýt ten zkažený. A protože každý krok násobí, nikoli odčítá, důvěra sklouzává k nule, aniž by jí kdy dosáhla — takže i hluboký řetěz zanechává každý článek s odlišným, srovnatelným skóre, namísto aby se propadl do bezvýznamné ploché nuly.

Rozpad je však jen polovina příběhu, a ta lepší polovina spočívá v tom, že důvěra může také stoupat. Tvrzení, na němž se shodnou tři nezávislé zdroje, není domněnkou — je blízko jistoty, a systém s ním nyní takto zachází: potvrzení posouvá věrohodnost poznámky směrem k jistotě, namísto aby ji táhlo dolů. Dobře podložený závěr si může udržet pozici přes mnoho kroků, namísto aby bledl jen proto, že ušel dlouhou cestu. Proto model uchovává dvě samostatná čísla, nikoli jedno. Spolehlivost zdroje je historií toho, odkud něco pochází. Věrohodnost tvrzení je mírou toho, jak dobře je konkrétní fakt potvrzen. Jsou to různé otázky a zaslouží si různé odpovědi. A pod vším tím leží spodní mez: nejméně důvěryhodná poznámka je nanejvýš snížena na polovinu, nikdy na nulu. Systém degraduje. Nemaže.

Nestálé fakty dostávají druhý odpočet: hodiny čerstvosti. Efektivní spolehlivost je uložená spolehlivost vynásobená jednou polovinou umocněnou na (stáří ÷ poločas). Cena má poločas 90 dní — věřte jí nyní, na podzim jí nedůvěřujte. Platové pásmo nebo nařízení dostane rok. Datum narození se nerozpadá vůbec. A pod vším tím leží to jedno lidské pole, verified: datum, kdy jsem naposledy faktu pohlédl do očí a přikývl. Žádné množství chytrých výpočtů nepřekoná nedávné lidské potvrzení, a systém je dost upřímný, aby to přiznal.

Skóre důvěry, která po měsíce nic nedělala

Tady je ta část, na níž jsem nejméně hrdý. Po dlouhou dobu žádná z těchto metadat nedělala vůbec nic.

Každá poznámka měla svůj tier, svou spolehlivost a své poctivé datum verified sedící přímo v záhlaví — a vyhledávací index, který můj asistent skutečně dotazuje, to vše zahazoval. Četl slova a původ zcela ignoroval. Vybudoval jsem propracovaný systém důvěry a pak ho tiše prohlásil za pouhou dekoraci. Vyhledávač nadále řadil poznámky čistě podle toho, jak dobře text odpovídal — což je přesně to chování, které umožňuje sebejistému shrnutí z čtvrté ruky vůbec vyhrát. Štítky byly svědomím, které stroj neslyšel.

Oprava toho byla prací posledních několika dní a je to ta část, která konečně učinila celou věc skutečnou. Trezor je převáděn na prohledávatelný index procesem nazvaným vault_indexer.py — část klíčových slov, část sémantiky. Změna spočívala v tom, přestat řadit jen podle relevance a začít řadit podle relevance krát důvěra krát čerstvost krát tier, přičemž multiplikátory důvěry vstoupí do hry poté, co sémantické vyhledávání odvede svůj díl. Každá třída poznámek nyní nese váhu: nezpracovaný záznam relace leží na 0.55, extrahovaná lekce na 0.80, záznam projektu nebo osoby na 1.00, destilovaná dovednost nebo princip na 1.20. Celé toto chování žije za jediným přepínačem, VAULT_TIER_WEIGHTS_ENABLED, takže ho mohu vypnout a změřit, zda si své místo zasloužilo — namísto abych důvěřoval svému vlastnímu vkusu.

Efekt je malý na pohled a velký na prožívání. Důvěryhodná poznámka nyní předčí výmluvnější, i když ta výmluvnější lépe odpovídá hledaným slovům. Vyhledávač se — v reálném a přepínatelném smyslu — naučil snižovat váhu svých vlastních minulých odhadů. Nejvýmluvnější věc v hromadě přestala vyhrávat automaticky. Začala ta nejdůvěryhodnější.

Graf, který se sám udržuje

Je tu ještě jeden dílek — ten, který brání celé věci shnít — a je to část, kterou nyní zapojuji. Pravdivost poznámky je jen tak aktuální jako její zdroje. Proto noční průchod prochází hranami sources každé odvozené poznámky a klade jednoduchou otázku: změnil se nějaký zdroj od dne, kdy byla tato poznámka naposledy ověřena?

Odpovídá na to obsahovými hashy, nikoli časy úprav — protože moje soubory se neustále synchronizují napříč zařízeními a synchronizace přepisuje časová razítka, jako by to měla v popisu práce. Hash nelže. Když se hash zdroje změní po datu verified odvozené poznámky, tato odvozená poznámka je automaticky označena jako zastaralá a zpětné hrany závislostí jsou přepočítány skriptem — nikoli mnou. Graf závislostí si vede vlastní záznamy. Jen mi oznámí, když něco, čemu jsem jednou důvěřoval, nyní stojí na posunuté půdě.

Co jsem záměrně nevybudoval

Nejzajímavější rozhodnutí zde byla odmítnutí.

Neuchovávám samostatné skóre důvěry pro každou dimenzi. Neexistují žádné intervaly spolehlivosti. Neexistuje žádná fúze Dempster-Shafer, žádný EigenTrust, žádná naučená váha na každé jednotlivé hraně grafu. Testoval jsem design pod tlakem panelu agentů běžících na pozadí, jejichž celou prací bylo argumentovat pro více strojů — více signálů, více fúzí, více chytrosti — a verdikt zněl vždy stejně: rodokmen a datum nesou signál, a vše za tím je byrokracie oblečená do kostýmu přísnosti. Jeden jednotný retenční faktor. Nejslabší článek. Hodiny čerstvosti. Lidské razítko verified. To je celý motor, a zaslouží si každou část, kterou si ponechává.

Čím to ve skutečnosti je

Bez mechaniky je to, co jsem vybudoval, znalostní základna, která ví, co neví. Každá poznámka vám dokáže říct nejen to, co tvrdí, ale i jak k tomu tvrzení dospěla, kolika rukama na cestě prošla, jak daleko se vzdálila od čehokoli reálného, a zda tiše neztratila aktuálnost od doby, kdy ji naposledy někdo zkontroloval.

Asistent sedící na vrcholu je díky tomu klidnější. Přestal zaměňovat vlastní výmluvnost za důkaz. Když mi nyní odpovídá, nejprve promluví přímá pravda a sebejisté dohady znají své místo.

Ukázalo se, že nejužitečnější věc, kterou jsem kdy svému druhému mozku dal, nebyla větší paměť.

Byla to pochybnost.

Stack: Python · Markdown · Claude

Potřebujete něco podobného pro svou vlastní firmu? Podívejte se, jak můžu pomoct →