Back to "Rajoitettu hämärän taustan vetäminen: Mitä muistetaan"

This is a viewer only at the moment see the article on how this works.

To update the preview hit Ctrl-Alt-R (or ⌘-Alt-R on Mac) or Enter to refresh. The Save icon lets you save the markdown file to disk

This is a preview from the server running through my markdig pipeline

AI Architecture DiSE LLM Patterns

Rajoitettu hämärän taustan vetäminen: Mitä muistetaan

Tuesday, 06 January 2026

Yksi helpoimmista tavoista, joilla AI-järjestelmä epäonnistuu, on antaa se muistaa liikaa.

Suurin osa "lähestymistapaa koskevasta käsittelystäM SK1 lähestymistavasta johtaa yhteen kahdesta virheestä

  • Tehkää kaikki selväksi. ja toivon, että mallissa selvitetään, mikä on tärkeää
  • Toistuvasti uudelleen-summarise summaries ja hyväksytään virtaaminen elämän tosiasiaksi

Molemmat lähestymistavat ovat kalliita,

On olemassa parempi malli -, joka kuvastaa sitä, miten biologiset järjestelmät itse asiassa mittaavat kogniatiota

Minä kutsun sitä Rajoitettu hämärän taustan vetäminen (CFCD).


Yhden lauseen malli

Rajoitettu hämärän taustan vetäminen on malli, jossa todennäköisyysmallit ehdottavat, mikä on merkittävää, mutta vain deterministiset säännöt voivat viedä tätä merkittävää eteenpäin vaikuttamaan tulevaan ajatteluun tai sukupolveen.

Tai suoraan sanottuna:

Muodot saattavat huomata. Insinöörit päättävät, mikä säilyy

Tämä on sama filosofinen jako kuin Rajoitettu epämääräisyys ja Rajoitettu hämärä MoM - sovellettiin juuri akseli sen sijasta päätöslinja.


Keskeinen virhe: Kontextin käsittely tekstinä

LLM-järjestelmät eivät "muistele". Ne ovat malliaM SK2vastaavat tokenia .

Kun kohtelemme kontekstia " vain lisää tekstiä ", saamme

  • hiljainen ajo
  • epäjohdonmukainen terminologia
  • rikolliset kustannukset
  • yhteenvedot, jotka ovat ristiriidassa aiempien yhteenvedojen kanssa
  • käännökset, joissa sama asia korvataan viidellä kertaa
  • kontekstista tulee käännettämätön riippuvuus ( kukaan ei tiedä, mitä on muutettuM SK1 mutta tulokset ovat muuttuneet

pitemmälle menevät kontekstin olot eivät ratkaise tätä. Ne vain viivästyttävät epäonnistumista

Todellinen kysymys ei ole kuinka paljon konteksti säilyttää, muttaM SK1

Mikä ansaitsee selviytyä?


CFCD-säännöt

CFCD velvoittaa ankaraan erotteluun:

Tehtävä Mahdollistetaan se, että se on hämärä
Salienssin havaitseminen
Yhteenvetona edistäminen
Yhteinen sukupolvi SSK1 Kyllä Ei S
Ankkurivarasto ( aluksenvarsi ) Ei SSK4 Kyllä S

Todennäköisyys voi ehdottaa. Päättäväisyys päättää, mitä viedään eteenpäin

Deterministinen tarkoittaa: samat tulot + sama politiikka ⇒ samat ankkurit. Voitte edelleen käyttää todennäköistä tulosta ; vain suorittaa ne kiinteällä edistyksellä M SK2 päättymistehtävät (MMR, RRFM SK5 äänestyssääntöjen noudattaminen

CFCD on se tapa, jolla saat hyötyä kontekstista maksamatta kontekstin hintaa.


Esimerkki 1: Lyhyesti sanottuna

Naiivi lähestymistapa

  • Chunk-asiakirja
  • Yhteenveto jokaisesta osasta
  • Lyhyesti yhteenvedot
  • Hyväksy drift

Tämä epäonnistuu, koska:

  • varhaiset virheet yhdistetään
  • painopiste siirtyy mielivaltaisesti
  • ristiriidat on peitelty

CFCD-lähestymistapa

Keskeinen käsitys: salienssin havaitseminen ei edellytä LLM:tä. Voitte käyttää deterministista ML:tä (embeddings, TFM SK3IDFMST4 BMMSC5 löytääksenne, mikä on tärkeääMSL6 sitten rajoittaa LLM:tä vain näkemään, mikä selviytyi valiotuksestaMスク7

DocSummarizer panee täytäntöön tämän

  1. Käsitellään asiakirjaa osittain (
  2. Laaditaan sisällytyksiä ONNX-lausetta käyttäen-transformaattorit (MLM SK2 ei LLM)
  3. Laskelmatulokset käyttäen:
    • Kosiinin samankaltaisuus asiakirjan centroidia kohtaan
    • TF-IDF ajankohtaisen merkityksen osalta
    • Sijoituspainot (intro/johdanto-osuuden nostaminenM SK2
    • Sisältö-tyypin mukautukset M SK1kertomus vs esittelijä)
  4. Valittakaa ylhäältä-K MMR:n avulla (Määrimmäinen merkitysmarginaali
    • Tasapainot merkityksellinen ( centroidien samankaltaisuusM SK1 monimuotoisuuden kanssa
    • Deterministinen: samat tulot M SK1 sama valinta
  5. LLM synteesii vain selected segments -osista

LLM ei koskaan näe koko asiakirjaa.

// From DocSummarizer: SegmentExtractor.cs
public class SegmentExtractor
{
    private readonly OnnxEmbeddingService _embeddingService;  // ML, not LLM

    public async Task<ExtractionResult> ExtractAsync(string docId, string markdown)
    {
        // 1. Parse document into typed segments
        var segments = ParseToSegments(docId, markdown);

        // 2. For large docs: semantic pre-filtering with multi-anchor approach
        //    - Guaranteed coverage: first/last sentences per section, constraints
        //    - BM25 candidate generation with pseudo-query from TF-IDF terms
        //    - Topic anchors via k-means clustering on sample embeddings
        if (segments.Count > _config.MaxSegmentsToEmbed)
        {
            (segmentsToEmbed, centroid) = await SemanticPreFilterAsync(segments, targetCount);
        }
        else
        {
            await GenerateEmbeddingsAsync(segments);
            centroid = CalculateCentroid(segments);
        }

        // 3. Score by salience using MMR (deterministic)
        //    Salience = lambda * sim(segment, centroid) * position_weight * content_weight
        //             - (1 - lambda) * max_sim(segment, higher_ranked_segments)
        ComputeSalienceScores(segments, centroid, contentType);

        // 4. Return top-K as anchors for synthesis
        var topBySalience = segments
            .OrderByDescending(s => s.SalienceScore)
            .Take(Math.Max(_config.FallbackBucketSize, targetCount))
            .ToList();

        return new ExtractionResult
        {
            AllSegments = segments,
            TopBySalience = topBySalience,
            Centroid = centroid,
            ContentType = contentType
        };
    }

    /// <summary>
    /// Greedy MMR selection: balances relevance with diversity
    /// </summary>

    private void ComputeSalienceScores(List<Segment> segments, float[] centroid, ContentType contentType)
    {
        var candidates = new HashSet<Segment>(segments.Where(s => s.Embedding != null));
        var ranked = new List<Segment>();

        // Pre-compute centroid similarities with content-type adjustments
        foreach (var segment in candidates)
        {
            var baseSim = CosineSimilarity(segment.Embedding!, centroid);
            var contentWeight = ComputeContentTypeWeight(segment, contentType);
            segment.SalienceScore = baseSim * segment.PositionWeight * contentWeight;
        }

        // Greedy MMR: pick best, penalise similar, repeat
        while (candidates.Count > 0)
        {
            var best = candidates
                .Select(c => new {
                    Segment = c,
                    Score = _config.MmrLambda * c.SalienceScore
                          - (1 - _config.MmrLambda) * MaxSimToRanked(c, ranked)
                })
                .OrderByDescending(x => x.Score)
                .First();

            best.Segment.SalienceScore = 1.0 - ((double)ranked.Count / segments.Count);
            ranked.Add(best.Segment);
            candidates.Remove(best.Segment);
        }
    }
}

Adaptiivinen valinta: Kontext-puitetietoisuus

Koska tulos on luokiteltu keräys, voi mukauttaa ankkurimäärän synteesimalliin runtimessa

public class AdaptiveSynthesizer
{
    public int ComputeAnchorBudget(ModelProfile model, ExtractionResult extraction)
    {
        // Larger context windows → more anchors
        var baseTokenBudget = model.ContextWindow / 4;  // Reserve 25% for output

        // More powerful models → can handle more complex synthesis
        var complexityMultiplier = model.Tier switch
        {
            ModelTier.Small => 0.5,   // tinyllama: fewer, simpler anchors
            ModelTier.Medium => 1.0,  // llama3.2:3b: standard
            ModelTier.Large => 1.5,   // llama3.1:8b+: more context, nuanced synthesis
            _ => 1.0
        };

        var anchorBudget = (int)(baseTokenBudget * complexityMultiplier / _avgTokensPerSegment);

        // Never exceed what we have
        return Math.Min(anchorBudget, extraction.TopBySalience.Count);
    }

    public async Task<Summary> SynthesizeAsync(
        ExtractionResult extraction,
        ModelProfile model)
    {
        var budget = ComputeAnchorBudget(model, extraction);

        // Take top-K from already-ranked segments
        var anchors = extraction.TopBySalience.Take(budget).ToList();

        // Synthesis model only sees what survived selection + adaptation
        return await _llm.SynthesizeAsync(anchors, model);
    }
}

Tämä on edelleen deterministista: samat tulot + sama malliprofiili → samat ankkurit. Rangaistus tapahtuu kerran.

Tämä tarkoittaa, että voi

  • Käyttäkää nopea pieni malli 5 ankarien avulla lyhyen yhteenvedon tekemiseksi
  • Käyttäkää tehokas malli 50 ankarien avulla kattavaan analyysiin
  • Dynaamisesti mukautetaan mid-pipeliiniä, jos ensimmäisessä yrityksessä ei ole kattoa

Keskeinen käsitys: Ankarit ovat rakenteellisia, eivät prosia. Siirrot ja MMR ovat deterministisiaM SK1 LLM tekee lopullisen synteesin vain, , rajoittuu siihen, mikä selviytyi

Ankarsopimus: generation voi vaihdella sanamuotoa, mutta ei saa olla ristiriidassa ankkurien kanssaM SK1 Jos ankkurit ovat riittämättömiä , niiden on suojattava ja/ tai pyydettävä lisää todisteita

Konkreettinen ankkurirepresentaatio:

{
  "policyVersion": "cfcd-v1",
  "segments": [
    {"id":"seg-12","text":"Reset requires holding button 10s","salience":0.92},
    {"id":"seg-45","text":"Factory reset clears all settings","salience":0.88}
  ],
  "coverage": "3.2% semantic sample",
  "hedging": "sampled 3% - avoid definitive conclusions"
}

Esimerkki 2: käännös

Tulkkaus paljastaa tämän mallin vielä selvemmin.

Epäonnistuminen

Translate sentence-byM SK1sentence and you get

  • epäjohdonmukainen terminologia
  • nimeämät entiteet
  • hienovarainen semanttinen virtaus

Vaikka teksti on valtava, mallit ovat edelleen vapaat.

CFCD-lähestymistapa

  1. Alkuasiakirjan, tiivistelmä terminologiaehdokkaat:
    • asianmukaiset nimitykset
    • tekniset ehdot
    • toistuvat lauseet
  2. Rakennetaan tilinpäätöskirja:
    • lähde → kohdekartoitus
    • luottamus
    • ensimmäinen- nähty paikka
  3. Jokainen lause:
    • sallia hämärän käännöksen
    • rajoitus tilinpäätöksiä koskevat valinnat
    • sallitaan poikkeaminen vain vahvojen paikallisten todisteiden avulla
  4. ajantasaistetaan kirjanpitoa määrätietoisesti, jos:
    • parempi kartoitus ilmenee toistuvasti
    • tai julistetaan selkeä yliride

Mitkä ovat vahvoja paikallisia todisteita?

  • Termi appears in a glossary, tableM SK1 or definition block (structural cue
  • Selkeät käyttäjät ylittävät järjestelyssä
  • Toistaa viimeisen W-kierroksen aikana (sliding windowM SK1 johdonmukaisen käytön kanssa

Tämä on deterministista.

Tasa-arvopolitiikka: ΔM SK1 luottamuspula, W =50 chunks MST4tune per domainMSC5

public class TermLedger
{
    private readonly Dictionary<string, TermMapping> _mappings = new();

    public record TermMapping(
        string SourceTerm,
        string TargetTerm,
        float Confidence,
        string FirstSeenChunkId,
        int LastSeenChunkIndex,               // Track recency
        int VotesForCurrentTarget,
        int TotalVotes,                       // Preserve history
        string? ChallengerTarget = null,
        int ChallengerVotes = 0,
        float ChallengerConfidence = 0);

    public void ProposeMapping(string source, string target, float confidence, string chunkId, int chunkIndex)
    {
        source = source.ToLowerInvariant().Trim();

        if (_mappings.TryGetValue(source, out var existing))
        {
            if (existing.TargetTerm == target)
            {
                // Same as current: accumulate votes
                _mappings[source] = existing with
                {
                    Confidence = Math.Max(existing.Confidence, confidence),
                    VotesForCurrentTarget = existing.VotesForCurrentTarget + 1,
                    TotalVotes = existing.TotalVotes + 1,
                    LastSeenChunkIndex = chunkIndex
                };
            }
            else if (existing.ChallengerTarget == target)
            {
                // Same as challenger: accumulate challenger votes
                var newChallengerVotes = existing.ChallengerVotes + 1;
                var newChallengerConfidence = Math.Max(existing.ChallengerConfidence, confidence);

                // Switch if challenger has >= 2 votes AND higher confidence
                if (newChallengerVotes >= 2 && newChallengerConfidence > existing.Confidence)
                {
                    // Swap: old current becomes challenger, challenger becomes current
                    _mappings[source] = existing with
                    {
                        TargetTerm = target,
                        Confidence = newChallengerConfidence,
                        VotesForCurrentTarget = newChallengerVotes,
                        TotalVotes = existing.TotalVotes + 1,
                        LastSeenChunkIndex = chunkIndex,
                        ChallengerTarget = existing.TargetTerm,  // Preserve old mapping as challenger
                        ChallengerVotes = existing.VotesForCurrentTarget,
                        ChallengerConfidence = existing.Confidence
                    };
                }
                else
                {
                    _mappings[source] = existing with
                    {
                        ChallengerVotes = newChallengerVotes,
                        ChallengerConfidence = newChallengerConfidence,
                        TotalVotes = existing.TotalVotes + 1,
                        LastSeenChunkIndex = chunkIndex
                    };
                }
            }
            else if (confidence > existing.ChallengerConfidence)
            {
                // New challenger replaces old challenger
                _mappings[source] = existing with
                {
                    ChallengerTarget = target,
                    ChallengerVotes = 1,
                    ChallengerConfidence = confidence,
                    TotalVotes = existing.TotalVotes + 1,
                    LastSeenChunkIndex = chunkIndex
                };
            }
        }
        else
        {
            _mappings[source] = new TermMapping(
                source, target, confidence, chunkId, chunkIndex,
                VotesForCurrentTarget: 1, TotalVotes: 1);
        }
    }

    public string? GetCanonicalTranslation(string source)
    {
        source = source.ToLowerInvariant().Trim();
        return _mappings.TryGetValue(source, out var mapping)
            ? mapping.TargetTerm
            : null;
    }
}

Käytännössä haluatte myös äänestysväärennytyksen ( tai liikkuvan ikkunanM SK1, niin että aikaisemmat virheet eivät muuttu pysyväksi '. Tärkeintä on se, että häviämissääntö on deterministinen, ei mallinmukainen

Miksi tämä on tärkeää virheiden korjaamiseksi: Jos käännös käännetään "tehtaiden uudelleen asentaminenM SK1 keskinäinen -asiakirja, voitte erottaa luvut ja nähdä tarkasti, milloin ja miksi

chunk-12: "factory reset" → "Werkseinstellungen" (votes: 3, conf: 0.82)
chunk-47: challenger "Zurücksetzen" reaches 2 votes, conf: 0.91
chunk-47: SWITCH - "factory reset" → "Zurücksetzen" (old mapping preserved as challenger)

Ei ole epäilystäkään. Ei M SK1malli on juuri päättänyt ". Ilman näkyvyyttä, määrätietoinenMST4 tilintarkastettavaMSV5

Tämä antaa teille:

  • paikallinen joustavuus (malli käsittelee sanamuotoaM SK1
  • maailmanlaajuinen johdonmukaisuus (
  • rajallinen hinta ( ei tarvitse muuttaa - käännös johdonmukaisuuden varmistamiseksi
  • tilintarkastuskelpoiset päätökset (velvoite on tarkastettavaM SK1

Siksi terminologinen johdonmukaisuus ei voida ratkaista " vain lisää kontekstiaM SK1


Tämä ei ole muisti - Se on rajoitteiden levittäminen

CFCD tekee ei annetaan mallin muisti.

Se antaa järjestelmä muisti.

Malli:

  • ei sisällä valtiota
  • ei päätä, mikä pysyy
  • ei omista taustaa

Järjestelmä:

  • varastoi ankkurit
  • rajoittaa rajoja
  • vanhentunut salienssi päättyy
  • valvoo nimenomaisesti elinkaaren kestoa

Määräaikataulu (

  • Aika ankkurit päättyvät sen jälkeen, kun T ilman viittausta
  • Käyttäkää-perustainen: ankkurit, joissa ei ole yhtään iskua N jäljelle jäävät chunkit häviävät
  • ristiriita-perusteinenM SK1 voittajalla on ≥2 ääni ja se ylittää nykyisen luottamuksen ΔM SK1 W-kierroksella

Se ero on kaikki.

flowchart TB
    subgraph Model["Probabilistic Model"]
        M1[Detect Salience]
        M2[Generate Output]
    end

    subgraph System["Deterministic System"]
        S1[Promote Anchors]
        S2[Store in Ledger]
        S3[Enforce on Generation]
        S4[Expire Stale Context]
    end

    M1 --> S1 --> S2
    S2 --> S3 --> M2
    S2 --> S4

    style Model stroke:#f59e0b,stroke-width:2px
    style System stroke:#22c55e,stroke-width:3px

CFCD-kaasuputki

Tässä on malli, jossa ledger on ensimmäinen

flowchart LR
    S[Stream: chunks/sentences] --> M[Model proposes salience]
    M --> P[Promotion rules]
    P --> L[Ledger / Anchors]
    L --> G[Generation constrained by anchors]
    G --> O[Output]
    L --> E[Expiry rules]
    E -.-> L

    style L stroke:#22c55e,stroke-width:3px
    style P stroke:#22c55e,stroke-width:2px
    style E stroke:#22c55e,stroke-width:2px
    style M stroke:#f59e0b,stroke-width:2px
    style G stroke:#f59e0b,stroke-width:2px

Vihreät laatit ovat deterministisia. Pohjoinen laatija on probabilistista. Luettelo on niiden välilläM SK2 ja siinä piilee se, mikä selviytyi .

Mitä käytäntöön on tapahtunut?

Kolme shiftia:

  • Lopettakaa jatkuva prosoiminen
  • Te pysytte kiinni kirjatut ankkurit
  • Suhtaudutte tilinpäätökseen API, eikä prompt

Pyynnöstä tulee näköpiiri tilinpäätöksestä, ei itse tilinpäätöstäM SK1

Se, että ' on "grok

Mitä ankkuriksi lasketaan?

Ankarit eivät ole "tärkeä tekstiM SK1 Ne ovat typed, rakenteelliset tosiasiat jotka rajoittavat tuotantoa:

  • Terminologiakartoitus: factory resetrestore factory settings
  • Yritykset ja henkilötiedot: ProductName, ModelNumber, UserID
  • Rajoitukset / invariantit:
  • User preferences / style constraints:
  • Laaja-alaiset metadatat: "3.2% semanttinen näytelmä
  • Versionointi: policyVersion: "cfcd-v1", anchorSchemaVersion: 2

Kyse on siitä, että ankkurit eivät ole prososia vaan rakenteita.


Biologinen yhteys

Tämä on analogiaa, ei biologista väitettä : kohdassa on valikoiva konsolidointiM SK2 ei kirjallinen mekanismi

Aivot eivät toista koko sensorivirtaa.

Ne:

  • havainnollistaminen
  • vahvistetaan valikoivasti
  • haitata melua
  • jäädytetään esitykset, kun ne ovat vakiintuneita

Kieli, moottoritaidotM SK1 ja tajuaminen kaikki riippuvat rajoitettu kuljettaminen- eteenpäin, ei raaka-ainetta

CFCD on sama periaate,, joka pannaan täytäntöön mekaanisesti

Biologinen järjestelmä
Huomauttaminen ( mitä huomataM SK2 Salliance detection
Konsolidointi (mitä on muistettava
Kielto ( mitä jättää huomiotta
Muistutan ( mitä hakea) Ledger query (deterministic

Muodot yhtenäistetään

CFMoM ja CFCD ovat sama ajatus, jota tarkastellaan eri näkökulmasta:

Mitta Muodon SSK2
Yksittäinen ehdottaja Rajoitettu epämääräisyys
Useat ehdottajat Rajoitettu hämärä MoM
PitkätM SK1 horisontaalinen konteksti Rajoitettu hämärän kontekstin vetäminen SSK3

Kaikki kolme noudattavat samaa sääntöä

Todennäköisyys ehdottaa. Determinismi pysyy ennallaan

Kun otetaan tämä sääntö huomioon, suurin osa järjestelmän suunnittelusta ei enää ole salaista.

flowchart LR
    subgraph CFP["Part 1: Constrained Fuzziness"]
        P1[Single Proposer] --> C1[Constrainer] --> O1[Output]
    end

    subgraph CFMoM["Part 2: Constrained Fuzzy MoM"]
        P2A[Proposer A] --> CS[Consensus Space]
        P2B[Proposer B] --> CS
        P2C[Proposer C] --> CS
        CS --> C2[Coordination Constrainer] --> O2[Output]
    end

    subgraph CFCD["Part 3: Context Dragging"]
        T1[Time T] --> A1[Anchors]
        T2[Time T+1] --> A1
        A1 --> C3[Constrained Generation] --> O3[Output]
    end

    style CFP stroke:#22c55e,stroke-width:2px
    style CFMoM stroke:#3b82f6,stroke-width:2px
    style CFCD stroke:#8b5cf6,stroke-width:2px

Miksi tämä ei ole mainstream

Koska se:

  • vähentää laskentakuluja (ei uudelleenM SK1prosessointi johdonmukaisuuden varmistamiseksi
  • Soveltuu pieniin malleihin (kankarat tekevät raskaan nostamisenM SK1
  • Demossa näyttää ikävältä (ei "herkkä muistiM SK2väittämät
  • tuottaa vähemmän dramaattisia epäonnistumisia (ongelmat ovat selviä
  • edellyttää todellista järjestelmien ajattelua ( ei vain nopeaa insinööritoimintaa )

Toisin sanoen, se optimoi tuotantoa.


Anti-Patternit korvaavat tämän

AntiM SK1Pattern Ongelma CFCD-ratkaisu SSK4
Kaikkea asiaan liittyvää Rajattomat kustannuksetM SK1 huomion heikentäminen Edistetään vain sitä, mikä selviytyy valikoinnista
Rekursiivinen yhteenveto DriftM SK1 ristiriidat Ankarit ovat rakenteita, eivät prososia
Toivottavasti malli muistaa Takuuta ei ole
Per-pyyntö täydellisestä uudelleenkäsittelystä Historian mukaiset kustannustaulukot Luettelo säilyy koko pyynnön ajan
Luonnollinen kieli "muistio" Semanttinen virtaus
Yhteinen-laajuus- sopiiM SK2kaikki konteksti Jätekapasiteetin tai nälkämallin mukainen oikaiseminen luokiteltuja keräysmääriä varten

täytäntöönpanostrategia: Lyhyt

Useimminselvä.Väliaikainen on perusta, joka tekee CFCD:sta käytännönläheisen. Jos ette ole lukeneet taustaartikkelejaM SK1

Lyhyen aikavälin alkuperäinen
Viestit Ehdokastärkeys
Rajoitetut olot Ei rajoitetta
Eviction -säännöt Unohtaminen on yksiselitteinen
Slidingin päättyminen Pysyvä konteksti päättyy automaattisesti
Signalin levittäminen Ankkurit vievät eteenpäin mutaatiota välttäen

Väliaikainen ei ole "muistettavaM SK1 Se päättää, mitä sallitaan muistaa, ja miten kauan.

Tämä on juuri se, mitä CFCD tarvitsee

public class CFCDCoordinator
{
    private readonly SignalSink _sink;
    private readonly TermLedger _ledger;
    private readonly TimeSpan _anchorLifetime = TimeSpan.FromHours(1);

    public void PromoteAnchor(string term, string translation, string chunkId, int chunkIndex)
    {
        _ledger.ProposeMapping(term, translation, 0.8f, chunkId, chunkIndex);

        // Emit signal for observability (key = chunkId for correlation)
        _sink.Raise($"anchor.promoted:{term}", key: chunkId);
    }

    public void ExpireStaleAnchors()
    {
        var cutoff = DateTimeOffset.UtcNow - _anchorLifetime;

        // Ledger entries older than cutoff without recent usage are removed
        // This is deterministic, not model-decided
        _ledger.ExpireOlderThan(cutoff);
        _sink.Raise("anchors.expired");
    }
}

Implementation Sketch: Dokumentti käännös

Yhdenmukaistaminen täydelliseen asiakirjan käännösputkeen:

public class CFCDTranslationPipeline
{
    private readonly ILlmService _llm;
    private readonly TermLedger _ledger;
    private readonly SignalSink _sink;
    private readonly int _seedChunks = 3;  // K: configurable seed window

    public async Task<TranslatedDocument> TranslateAsync(
        Document source,
        string targetLanguage)
    {
        var chunks = Chunker.Chunk(source, maxTokens: 500).ToList();
        var translated = new List<TranslatedChunk>();

        // Phase 1: Extract terminology candidates (first pass, fuzzy)
        // Seed from first K chunks: front-loads terminology, avoids churn later
        for (var i = 0; i < Math.Min(_seedChunks, chunks.Count); i++)
        {
            var chunk = chunks[i];
            var candidates = await _llm.ExtractTerminologyAsync(chunk);
            foreach (var term in candidates)
            {
                _ledger.ProposeMapping(
                    term.Source,
                    term.ProposedTranslation,
                    term.Confidence,
                    chunkId: chunk.Id,
                    chunkIndex: i);
            }
        }

        _sink.Raise("terminology.seeded");

        // Phase 2: Translate with ledger constraints
        for (var i = 0; i < chunks.Count; i++)
        {
            var chunk = chunks[i];

            // Get canonical translations for terms in this chunk
            var constraints = ExtractConstraints(chunk, _ledger);

            // Translate with constraints (model must respect ledger)
            var result = await _llm.TranslateWithConstraintsAsync(
                chunk,
                targetLanguage,
                constraints);

            // Update ledger with any new terms (deterministic rules)
            foreach (var newTerm in result.NewTerminology)
            {
                if (ShouldPromote(newTerm, _ledger))
                {
                    _ledger.ProposeMapping(
                        newTerm.Source,
                        newTerm.Target,
                        newTerm.Confidence,
                        chunkId: chunk.Id,
                        chunkIndex: i);

                    _sink.Raise($"anchor.promoted:{newTerm.Source}");
                }
            }

            translated.Add(result.Chunk);
        }

        return new TranslatedDocument(translated, _ledger.GetAllMappings());
    }

    private bool ShouldPromote(TermCandidate term, TermLedger ledger)
    {
        // Deterministic rules, not model judgment:
        // - Proper nouns always promoted
        // - Technical terms promoted if repeated
        // - Common words never promoted
        return term.Type == TermType.ProperNoun ||
               (term.Type == TermType.Technical && term.OccurrenceCount >= 2);
    }
}

Päätöslauselma

Suurin osa AI-järjestelmistä tekee virheen olettaessaan, että äly paranee muistamalla Lisätietoa.

Käytännössä ”,” -tietämys mittaa päättämällä, mitä tehdä ei enää tarvitse ajatella.

CFCD on tapa, jolla teette sen valehtamatta itsellenne.


Luettelo

Osuus Muodos Axis SSK3
1 Rajoitettu epämääräisyys Yksittäinen osake
2 Rajoitettu hämärä MoM Useat osat
3 ≥ Rajoitettu hämärän taustan vetäminen SSK3artikkeliM SK4 | Aika \SSK6 muisti |
4 Kuvan yhteenveto Käytännön täytäntöönpano

Kaikilla kolmella mallilla on sama invariantti todennäköiset osatekijät ehdottavat; määritelmäjärjestelmät pysyvät.

Euroopan unionin LLM:n käyttöä koskevat kymmenen käskyä kodifioida nämä säännöt. DiSE-arkkitehtuuri panee ne täytäntöön koodin kehityksessä. Bot-tutkimukset panee ne täytäntöön pyyntöjen luokitteluun. DocSummarizer panee ne täytäntöön asiakirjan hakua varten. ImageSummarizer panee ne täytäntöön kuvaanalyysiin.

Erilaiset domainit. Yhteinen malli. Yhtenäinen sääntöM SK2 DoomSummarizer panee täytäntöön context dragging -menetelmän rinnakkaisten pitkien vaatimusten täyttämiseksi.


Seuraava: Käytännön toteuttaminen

Osa 4 on nyt saatavilla: Image Summarizer : Konstrained Fuzzy Image RAG Engine. Se panee kaikki kolme mallia täytäntöön wavessa -pohjaisen kuvaanalyysin putken M SK2ColorWave laskee tosiasiat , VisionLlmWave ehdottaa MSC4 ImageLedger kerää esiintyviä piirteitä MSV5 ja deterministinen valinta rajoittaa tulosta M SV6 kloonaa sen github.com/scottgalM SK2lucidrag.

logo

© 2026 Scott Galloway — Unlicense — All content and source code on this site is free to use, copy, modify, and sell.