سحب السياق المحدود الغامض: ما يُتذكر (العربية (Arabic))

سحب السياق المحدود الغامض: ما يُتذكر

Tuesday, 06 January 2026

//

16 minute read

أحد أسهل الطرق لجعل نظام الذكاء الصناعي يفشل هو أن نجعله يتذكر الكثير

معظم "التعامل مع السياق" المقاربات تنتهي إلى واحدة من الأخطاء

  • قم بوضع كل شيء في الملاحظات ونأمل أن يكتشف النموذج ما هو المهم
  • إعادة مرة أخرى -summarise summaries وتقبل التدفق كحقيقة للحياة

كلا المقاربتين مكلفتان , غير شفافة , وغير مستقرة على الأفق الطويل

هناك نمط أفضل - واحد يعكس كيف أن الأنظمة البيولوجية في الواقع تدرج الإدراك

أسميها سحب السياق الخافت المقيد (CFCD).


النمط في جملة واحدة

سحب السياق الخافت المقيد هو نمط حيث تقترح النماذج الإحتمالية ما هو الملحوظ , لكن فقط القواعد القطعية تسمح بنقل هذا الملحوم للأمام لتأثر بالتفكير أو الجيل المستقبلي .

أو بشكل أكثر وضوحا:

قد يلاحظ النماذج

هذا هو نفس الانقسام الفلسفية الغموض المقيد و MoM مقيدة - تم تطبيقه على طول محور الزمن بدلا من محور القرار.


الخطأ الأساسي: التعامل مع السياق كنص

لا تتطابق الـ LLMs "remember". إنها نمط -match over tokensM SK3

عندما نتعامل مع السياق كـ " فقط المزيد من النص ", نحصل على:

  • الهبوط الصامت
  • مصطلحات غير متجانسة
  • تكلفة الهرب
  • الإحصائيات التي تتعارض مع الإحصائية السابقة
  • الترجمات التي تعيد تسمية الشيء نفسه خمس مرات
  • becomes a unversioned dependency (nobody knows what changed, but results changed )

النوافذ السياقية الطويلة لا تحل هذا

السؤال الحقيقي ليس كم السياق للحفاظ على, لكن:

ما يستحق البقاء على قيد الحياة


قاعدة CFCD

CFCD يفرض فصلاً صلباً:

دور يسمح أن يكون غامضاً? يسمح بأن يصبح القيود المستقبليةM SK4 ♫
إكتشاف الغضب نعم لا
تعزيز السياق لا نعم
الجيل نعم لا
تخزين ال anchor (ledger

الاحتمال يمكن تقترح. يقرر الإختيار ما الذي يسحب إلى الأمام .

المعنى المعرفي: نفس المدخلات + نفس السياسة ⇒ نفس القنابل. لا يزال بإمكانك استخدام الدرجات الإحتمالية ; فقط تقوم بتشغيلها من خلال ترقية ثابتة

CFCD هو كيفية الحصول على فوائد السياق دون دفع سعر السياق.


مثال 1: تلخيص (سحب عمودي)

المقاربة البسيطة

  • وثيقة Chunk
  • تلخص كل قطعة
  • تلخيص الخلاصات
  • تقبل الهبوط

هذا يفشل لأن:

  • تراكم الأخطاء المبكرة
  • يتغير التركيز بشكل عشوائي
  • التناقضات مخفية

مقاربة CFCD

الفكرة الرئيسية: إكتشاف الأهمية لا يتطلب '. بإمكانك استخدام الـML الإفتراضي (الدمجات, TFM SK3IDFMスク4 BMMSC5 لإيجاد ما يهمMNK6 ثم تقيد الـLM لرؤية فقط ما تبقى من الانتقاءMMK7

DocSummarizer ينفذ هذا:

  1. تحليل الوثائق إلى أجزاء (جمل,رؤيئاتM SK2 القوائم , بلاكات الرمز )
  2. تنتج المداخلات باستخدام جملة ONNX-transformers (ML, ليس LLMM SK3
  3. حساب نقاط الأهمية باستخدام:
    • شبيهة الكوسين للوثيقة مركزية
    • TF-IDF لأهمية المدى
    • وزنات الموضع (intro/conclusion boostM SK2
    • المحتوى-تصحيحات النوع (خبرة مقابل مخزن )
  4. إختيار أعلى-K باستخدام MMR (مقدار الأهمية المحدودة):
    • توازن الأهمية (متشابهة مع مركزية ) مع التنوع
    • إختبارية: نفس المدخلات → نفس الانتقاء
  5. ينتج LLM فقط من أجزاء sélectionnés

لا يرى الـ LLM المشهد الكامل ــ . ــ إنه ينتج حول الأسلاك ــ, ــ وليس من خلالها

// 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);
        }
    }
}

إختيار متكيف: الوعي في النافذة السياقية

لأن المخرج هو المجموعة المصنفة, يمكنك أن تكيف عدد ال anchor مع نموذج التركيب في وقت التشغيل:

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);
    }
}

هذا مازال محدداً نفس المدخلات + نفس نمط النموذج → نفس الأسلاك. التصنيف يحدث مرة ; التكيف هو مجرد قطعة

هذا يعني أنه يمكنك

  • إستخدم نموذج صغير سريع مع أربطة 5 للخلاصات السريعة
  • استخدم نموذج قوي مع 50 لنخات للتحليل الشامل
  • ضبط موصل mid- Dynamically if the first attempt lacks coverage

الفكرة الرئيسية: ال anchors are structure, not prose. المداخلات و MMR هي معرفية. الـ LLM تقوم فقط بتجميع النهائيM SK2 محصورة بما تبقى

عقد العnker: يمكن أن يتغير الصيغة, لكنها لا يجب أن تتناقض مع الأسلاكM SK1 إذا كانت الأسلاك غير كافية, يجب أن يغطي وMSC3 أو يطلب المزيد من الأدلة .

ممثل لل anchor المعدني:

{
  "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"
}

مثال 2: الترجمة (سحب المراحل)

الترجمة تكشف هذا النمط بشكل أكثر وضوحاً

طريقة الفشل

ترجمة الجملة-byM SK1sentence وتحصل على:

  • مصطلحات غير متجانسة
  • تم إعادة تسمية الوحدات
  • التحرك اللغوي

حتى مع نافذة سياق ضخمة، نماذج , لا تزال " تشعر بحرية، "M SK2" لتتغير الصيغة

مقاربة CFCD

  1. في البداية في المخرج , مرشحي المصطلحات:
    • الأسماء الصحيحة
    • المصطلحات التقنية
    • العبارات المتكررة
  2. بناء وثيقة المصطلحات:
    • مصدر → رسم هدف
    • الثقة
    • الأول-مكان الرؤية
  3. لكل جملة:
    • تسمح بترجمة غامضة
    • القيود إختيارات باستخدام المحاسبة
    • تسمح بالابتعاد فقط مع أدلة محلية قوية
  4. تحديث المحاسبة بشكل محدد إذا :
    • تظهر خرائط أفضل مرارا وتكرارا
    • أو يتم الإعلان عن تجاوز واضح

ما يُعتبر دليلا محليا قويا

  • يظهر المصطلح في القاموس , جدول , أو بلاك تعريف | ( | إشارات هيكلية |)
  • تخطي المستخدم الواضح في الإعداد
  • كررت في آخر قطعة W ( نافذة مزلجة) مع إستخدام متماسك

هذا هو المعرفي: المؤشرات الهيكلية تُكشف عن طريق تصنيف النمط أو المقصّر, ليس الحكم على النماذجM SK2

سياسة تلقائية: ΔM SK1 فجوة الثقة , W=50 قطع MST4ثروة لكل مجالMSC5

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;
    }
}

في الواقع تريد أيضا تحطيم الصوت (or a sliding window) so early mistakes donM SK2t become permanentMSC3 The key is that the decay rule is deterministic

لماذا هذا مهم لحل الأخطاء: إذا كان الترجمة تقلب "factory resetM SK1 mid-document , يمكنكم أن تحوّل المحاسبة وترى بالضبط متى ولماذا

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)

لا تخمين . لا " لقد قررت النموذج للتو

هذا يعطيك

  • المرونة المحلية (نموذج يتعامل مع الفراغات)
  • التماسك العالمي (العامل يفرض المصطلحات)
  • التكلفة المحدودة (لا حاجة لإعادة -ترجمة من أجل التماسك)
  • قرارات قابلة للفحص ( المشتري قابل للتفتيش )

هذا هو السبب توازن المصطلحات لا يمكن حله بواسطة "أكثر من السياق".


هذا ليس بالذاكرة - إنه تمدد القيود

CFCD يفعل لا أعطي ذاكرة النموذج.

إنها تعطي النظام الذاكرة.

النموذج:

  • لا يحمل الدولة
  • لا يقرر ما الذي يبقى
  • لا يملك السياق

النظام:

  • تخزين القنابل
  • يفرض الحدود
  • ي expires stale salience
  • يتحكم في مدى الحياة بوضوح

وقواعد فاتورة (إختباري,لانموذجي -تقريرM SK3

  • الوقت-based: ينتهي عمر القنابل بعد T دون أن يشير إليها
  • استخدموا-based: ال anchors مع صفر ضربات فوق N تتلاشى الجسيمات التالية
  • التناقض-based: المتحد لديه ≥2 الأصوات ويتجاوز الثقة الحالية بـ Δ, في نافذة متحركة من قطع W

هذا التمييز هو كل شيء

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

هنا هي النمط مع المحاسبة ككائن أول

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

الصناديق الخضراء هي إفتراضية. الصناديقات البرتقالية هي إحتمالية . المسجل يجلس بينهم, يحمل ما تبقى

ما هي التغيرات في العمل?

ثلاث مرحلات

  • أنت توقف عن الإستمرار في الخطابة
  • أنت تستمر القنابل المطبعة
  • فأنت تتعامل مع المحاسبة كAPI , ليس بطلب

الاقتراح يصبح نظرة من المذكرات, ليس المذكرة نفسها.

أن"MSC0" هو "MSC1" "MSc2" اللحظة" " MSC3" ال ledger is not context" . It' is a contract"

ما الذي يُعد ك anchor?

المعلقات ليست "نص مهم". إنها टाइपت, الحقائق المبنية التي تقيد الإنتاج:

  • خرائط المصطلحات: factory resetrestore factory settings
  • Entities and IDs: ProductName, ModelNumber, UserID
  • القيود / غير متغيرة: "تعديل requires holding button 10s"
  • वरीयता المستخدم / القيود في शैली: "إستخدم النغمة الرسمية", ≥"لغة بريطانيةM SK4
  • بيانات تغطية: "3.2% عينة سيمانسية, | | 5 | لنخات
  • الإصدار: policyVersion: "cfcd-v1", anchorSchemaVersion: 2

النقطة هي : القنابل ليست نباتة . إنها هيكلية . .. . النموذج يكتب حولها .


التوازن البيولوجي

هذا هو التناظر , ليس إدعاء بيولوجي : النقطة هي الجمع الانتقائي , ليست آلية حرفية .

الدماغ لا يعيد تشغيل كل التيار الحسي.

انهم

  • إكتشاف الجاذبية
  • توصيل بشكل انتقائي
  • منع الضوضاء
  • تجميد التمثيلات بعد أن تكون مستقرة

اللغة, المهارات الحركية, والادراک كلها تعتمد على تحمل محدودة-إتجاهاً, ليس recall خام.

CFCD هو نفس المبدأ

النظام البيولوجي معادل CFCD
الملاحظة ( ما الذي يجب ملاحظته) الكشف عن الشفقة ( الغموض S)
توصيل ( مالذي يجب أن نتذكره) ترقية ال anchor ( deterministic
منع ( مالذي يجب تجاهله) قواعد نهاية المطاف
استرجاع ( ما الذي يمكن الحصول عليه) سؤال المحاسبة

توحيد الأنماط

CFMoM وCFCD هي نفس الفكرة المنظرة من زوايا مختلفة:

بعد نمط
مقترح واحد الغموض المقيد
العديد من المقترحين MoM مقيدة
طويلة- السياق الأفقي نقل السياق المحدود الغامض

كل الثلاثة تتبع نفس القاعدة

تقترح إحتمالية. يستمر التنبؤ.

بمجرد أن ت internalise تلك القاعدة , معظم " تصميم نظام الذكاء الصناعي | " يتوقف عن كونه غامض

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

لماذا هذا ليس تدفق رئيسي

لأنه

  • يقلل من استهلاك الحسابات (لا إعادة - معالجة لثبات الدقة)
  • يعمل مع نماذج صغيرة (anchors do the heavy lifting)
  • يبدو مملًا في العرض.
  • produces fewer dramatic failures (failures are explicit)
  • يتطلب التفكير في أنظمة حقيقية ( ليس فقط الهندسة المسرعة )

بعبارة أخرى : يحسن الإنتاج , لا يثير الإنتباه


Anti-Patterns هذا يبدل

مضاد-كتابة مشكلة حل CFCD S
أضع كل شيء في السياق هزينة غير محدودة, تخفيض الإنتباه تعزز فقط ما ينقذ الانتقاء
الخلاصة المتكررة DriftM SK1 contradictions Anchors are structure, not prose
أتمنى أن يتذكر النموذج لا توجد ضمانات تملك النظام الإستمرارية
لكل -quest full re-processing مقاييس التكلفة مع التاريخ الخزانة تستمر عبر الطلبات
اللغة الطبيعية "memory" الهبوط الدلالي القناصات المطبعة, الخرائط الواضحة
واحد-اندازة-تطابق مع -كل السياق مقياس النفايات أو نماذج الصخور قطعة ملائمة من المجموعة المصنفة

طبقة التنفيذ: مؤقتة

الأكثر وضوحا.طفيف هو الغطاء الذي يجعل CFCD عملية. إذا لم تقرأوا المقالات الخلفية'

أولية بدائية دور CFCD
الإشارات إختلاف المرشح ( يقترح النماذج
النوافذ المغلقة لا محدودة "ذاكرة"
قواعد الطرد الغياب واضح
انتهى الزمن المت Sliding سيختفي السياق المستقيم تلقائياً
إنتشار الإشارات المعلقات تنتقل للأمام دون طفرة

الطفيف لا "تذكر". إنه decides what is allowed to be remembered, and for how long.

هذا بالضبط ما يحتاجه CFCD.

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");
    }
}

رسم التنفيذ: ترجمة مستندات

جمعها معاً لخط ترجمة مستند كامل:

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);
    }
}

الختام الفكري

الخطأ الذي يفعله معظم أنظمة الذكاء الصناعي هو افتراض أن الذكية تتطور عن طريق التذكر أكثر.

في الواقع , تتدرج الذكاء عن طريق اتخاذ قرار ما لن يتوجب علينا أن نفكر مرة أخرى.

CFCD هو كيف تفعل ذلك دون أن تكذب على نفسك.


السلسلة

جزء نمط محور
1 الغموض المقيد عنصر واحد
2 MoM مقيدة أجزاء متعددة
3 ≥ نقل السياق المحدود الغامض (هذا المقال) ♫ الزمن / الذاكرة мSK7
4 توصيل الصورة تنفيذ عملي

جميع النماذج الثلاثة تشارك نفس التغير مكونات الإحتمالية تقترح ; أن الأنظمة الثابتة تستمر.

الـ عشرة وصايا لاستعمال LLM codify these rules. The العمارة DiSE يطبقها لتطور البرمجة. إكتشاف البوت يطبقها لتصنيف الطلب. DocSummarizer يقوم بتطبيقها للبحث عنឯកសារ. ImageSummarizer يطبقها لتحليل الصور.

مجالات مختلفة. نفس النمط . نفس القاعدة. "دوم سمماريزر" implementates context dragging for parallel long-form document generation MSC1 running summaries, negative promptsM SK3 entity continuityMスク4 and drift detection maintain coherence across concurrent LLM calls .


التالي: تنفيذ عملي

الجزء 4 الآن متاحة: مخصّص الصور : محرك RAG لصورة غامضة محدودة. إنه ينفذ جميع النماذج الثلاثة في موجة- بناء على أنابيب تحليل الصورM SK2 ColorWave يقوم بحساب الحقائق , ويقترح VisionLlmWave , ImageLedger يجمع الملامح البارزة MSC5 و تقيد الانتقاء المعرفي المنتج M SK6 محاكاه من github.comM SK1scottgal/lucidrag.

Finding related posts...
logo

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