ملاحظة: هذه ليست مقالة مدونة تقليدية. إنها الوصفات التقنية مكتوبة لصفة معينة في وضوحRAG. أقوم بتوصيل هذا الوثيقة بشكل مكرر لبرمجة - "focused LLMs during development to reason about trade" - "offs" , " validate assumptions" و "M SK3" "converge on a rational implementation" .
هذا документ يصف نظام فرعي من وضوحRAG, مشروع أقوم بتطويره
أحد المتطلبات الأساسية وضوحRAG هو القدرة على استخراج أجزاء من الأدلة - جملةM SK1 فقرات, مخطوطات , عنوانات, إطارات , أو بلاكات بنائية - وتأكد من أن تلك الأجزاء تقليد دون تدمير الإشارة المفيدة.
وضوحRAG يعمل من خلال تحليل و استخراج أفضل الدليل المتوفر من الوثائق, الصور, الصوتM SK2 وبيانات هيكلية . خلاف معظم تطبيقات RAG لا تخزين LLM-توليد الإحصائيات كجزء أولي . في كثير من الحالات , لا تحتاج إلى LLM على الإطلاق ( رغم أنه يمكن استخدامه عندما يكون التسارع قابلاً للاستعمال
بدلاً من ذلك, وضوحRAG يطبق مجموعة واسعة من التقنيات الإفتراضية والإحتمالية على :
المحاكاة هي جزء هام من هذه العملية.
المساواة في الأوتار البسيطة لا تكفي.
تتضاعف المشكلة عند وقت الترقب.
عندما يتم الحصول على النتائج (باستخدام SQL, مداخلات векторيةM SK2 BM 25, أو الهجيناتMSC4 تغذي جزء LLM متعددة التي جميعها تعبر عن نفس الفكرة الكامنة تنتج إجابات مملةMST5 متكررةM ST6 خمسة بالقرب منM st7 قطع متطابقة من दस्तावेज مختلفة لا تضيف وضوحاً |M st8 | إنهم يذيبونها | M st9
لمعالجة هذا, وضوحRAG يتعامل مع تقليل النسبة كـ مشكلة kompilation لفئة first-, ليس بريداً-صفر شاكM SK2
ما تبقى من هذا الوثيقة يصف كيف تم تصميم تلك الاستراتيجية للتفكيك 'Agile Speccing' ملائمة لمتطلبات الرمز LLMS.
هذا يشكّل الأفكار المختلفة , ويدفع الـ LLM إلى توثيقها | ' | |' | العمليات الفكرية | МSK3 | هذا هو المرحلة الأولى لإيجاد الـ يبني الشيء الصحيح.
وضوحRAG يستخدم استراتيجية ثنائية -phase deduplication لإزالة المحتوى الفائق بينما يحافظ على الإشارات الهامة. هذا هو إشارة -محافظة المرشح, ليس قياس المحتوى.
┌─────────────────────────────────────────────────────────────────────────────┐
│ INGESTION (Per Document) │
│ │
│ Document → Extract → Embed → DEDUPE (intra-doc) → Index to Vector Store │
│ │ │
│ ├─ Near-duplicates: boost salience │
│ └─ Exact duplicates: drop (no boost) │
└─────────────────────────────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────────────────────┐
│ RETRIEVAL (Cross Document) │
│ │
│ Query → Search → Rank (RRF) → DEDUPE (cross-doc) → Top K → LLM Synthesis │
│ │ │
│ └─ Keep segment with highest RRF score │
└─────────────────────────────────────────────────────────────────────────────┘
هذه الثوابت تم الحفاظ عليها بواسطة نظام تقليل
| Garantie | Description |
|---|---|
| تم حفظ الطلبات | تقليل لا يغيّر ترتيب الدلالية بعد تصنيف RRF |
| لا يفقد مفهومه | تفكيك لا يزيل أبداً كل الأمثلة لمفهوم |
| تم إحترام الحدود للوثيقة | ال重複 لا يتجاوز أبداً الحدود للوثيقة عند الإدخال |
| المحتوى غير قابل للتغيير | تقليل لا يغيّر أبداً المداخلات أو المحتوى النصي, فقط علامات الانتقاء والتميز |
| إختبارية | given identical inputs and config, deduplication produces identical outputs |
هذا النظام يقوم بوضوح لا محاولة :
تقليل هو محدد بالكامل:
لماذا يهم هذا؟ يمكن للمستخدمين أن يثقوا في نتائج البحث عن الأخطاء البرمجية بأن تشغيل re- مع نفس المدخلات ينتج نفس المخرجات وضوحRAG'أوسع "محدود الغموض" الفلسفة - تطابق الغمض مع السلوك المعرفيM SK4
الهدف: تقلل من تخزين وتجنب إفراط intra-document
مشكلة: غالباً ما تحتوي الوثائق على محتوى مكرر:
الحل: تقليد داخل كل وثيقة قبل التصنيف.
رؤية مهمة: تقريباً - تُعامل المحاكاة ك دليل على أهمية مستقلة, ليس الإفراط. إذا أشرح مؤلف مفهوماً بثلاث طرق مختلفة , ذلك مفهوم مهم . نحن نلتقط هذا الإشارة عن طريق زيادة الوضوح
الهدف: منع LLM من الحصول على معلومات إضافية عبر الوثائق
مشكلة: عندما تقوم بالبحث عبر عدة وثائق, يمكن أن تظهر فقرات مماثلة في مصادر مختلفة. لا يجب على LLMM SK2 وصف نفس المعلومات عدة مرات
الحل: بعد التصنيف من قبل RRF (which combines semantic similarity, keyword matchM SK2 salience , and freshnessMSC4 deduplicate across documents keeping the highestMST5scoring segmentM ST6
لماذا بعد RRF? تقييم الـ RRF يمثل أفضل قياس ملموس للأهمية . تقليل قبل التصنيف سيفقد هذا الإشارة .
ان الانقسام هو متعمد
| المرحلة | ما يلتقطه |
|---|---|
| تحفيز التغذية | يركز الكاتب - كم تركز الوثيقة على مفهوم |
| تقييم البحث | أهمية الشؤة - مدى تطابق المحتوى مع إهتمام المستخدم |
مزج هذه في عملية البحث قد يربط الرغبة في दस्तावेज مع رغبة المستخدم للوثيقة, لكن قد لا تكون ذات أهمية إلى هذا السؤال. بتحفيز عند الإمتصاصM SK1 نحافظ على إشارة المؤلف' دون تضخيم نتائج البحث
src/Mostlylucid.DocSummarizer.Core/Services/BertRagSummarizer.cs
DeduplicateSegments()
1. Filter segments by minimum salience threshold (0.05)
2. Sort by salience score (highest first)
3. For each segment:
a. If no embedding → keep (can't compare)
b. Check cosine similarity against all selected segments
c. If similarity >= 0.90:
- If same ContentHash → exact duplicate, drop silently
- If different ContentHash → near-duplicate, boost kept segment's salience
d. If no match → add to selected list
4. Apply salience boosts: +15% per near-duplicate merged
5. Cap salience at 1.0 to prevent any single concept from dominating
| پارامتر | تلقائي | وصف S | ||
|---|---|---|---|---|
similarityThreshold |
≥0.90 | شبيهة الجسيمات فوق التي تعتبر أجزاء متكررة | ||
salienceThreshold |
0.05 | الأهمية المحدودة لأخذها بعين الاعتبار | ( | ضوضاء التصفية | |
boostPerNearDuplicate |
0.15 ≥ | زيادة الشجاعة على قرب-مزيج تقليدي (+15%) |
تقليد بالضبط (لا تحسن )
Segment A: "Contact us at [email protected]" [hash: abc123]
Segment B: "Contact us at [email protected]" [hash: abc123] ← same hash
Result: Keep A, drop B, no boost (likely boilerplate)
قريبة من -تقليد (طبق على الحافة)
Segment A: "Machine learning models require training data" [hash: abc123]
Segment B: "ML systems need data for training" [hash: def456] ← different hash, 0.92 similarity
Segment C: "Training data is essential for ML" [hash: ghi789] ← different hash, 0.91 similarity
Result: Keep A with +30% salience boost (concept emphasized 3 ways)
src/LucidRAG.Core/Services/AgenticSearchService.cs
DeduplicateByEmbeddingPostRanking()
1. Receive ranked results (already sorted by RRF or dense score)
2. For each segment (in score order):
a. If no embedding → keep
b. Check cosine similarity against all selected segments
c. If similarity >= 0.90 → skip (higher-scored duplicate already selected)
d. If no match → add to selected list
3. Return deduplicated list (maintains score ordering)
| پارامتر | تلقائي | وصف S |
|---|---|---|
similarityThreshold |
0.90 ≥ | حد شبيهة الجسيمات بالنسبة للخط الcross-doc dedup |
RRF (Reciprocal Rank Fusion) combines four signalsM SK2
تقليل الـ AFTER RRF يعني أننا نحافظ على الجزء الذي يتطابق بشكل أفضل مع الشؤال عبر جميع الأبعاد, ليس فقط شبيهة لغوية.
Query: "How do I configure authentication?"
Results before dedup:
1. [Doc A] "Authentication is configured via config.yaml..." (RRF: 0.052)
2. [Doc B] "Configure auth using the config.yaml file..." (RRF: 0.048, similarity to #1: 0.93)
3. [Doc A] "Set the API key in environment variables..." (RRF: 0.041)
Results after dedup:
1. [Doc A] "Authentication is configured via config.yaml..." (RRF: 0.052)
2. [Doc A] "Set the API key in environment variables..." (RRF: 0.041)
Doc B's similar paragraph dropped - Doc A's version had higher RRF score.
| حالت الفشل | الوصف | التخفيض | ||||||
|---|---|---|---|---|---|---|---|---|
| الايجابية الخاطئة (overM SK1dedup) | إثنين من المبادئ المتباينة لكنها مرتبطة ببعضها البعض يمكن أن تتجاوز 0.90 التشابه | Trade Accepted | - | Off favouring reduced redundancy | ; | threshold is tunable | ||
| السلبية الخاطئة (بالأسفل-منخفضة ) | Segments very short may embed poorlyM SK1 missing semantic similarity | Hash-based exact duplicate detection catches identical text | ||||||
| دمج الهبوط | تغيير نماذج الدمج يعترض افتراضات الاستبعاد | يتطلب إعادة الدمج الكاملة | ||||||
| الحساسية للترتيب | الخيار الجشع يعني أول أعلى - يفوز الجزء العادي | يتخفف عن طريق الفرز المستقر; أعلى ً- جزء العادي يتم الحفاظ عليه |
سلوك تقليل مع محتويات متعددة اللغات:
| سيناريو | السلوك | المنطق |
|---|---|---|
| نفس اللغة | يطبق الإنخفاض العادي | تُلتقط المداخلات شبيهة الدلالية |
| الاقتباسات اللغوية المتقاطعة | لا تقلل | يحافظ على المصدر- تنوع اللغة |
| وثيقة لغة المزج | تفكيك داخل مجموعات اللّغة | تماثل الدمج يفصل اللّغام بشكل طبيعي |
إختيار التصميم: کراس- لا يتم دعم الاستبعاد اللغوي بشكل واضح. هذا يحافظ على القدرة على استخلاص نفس الحقائق في اللغة المفضلة لـ' أو مقارنة كيف أن مختلف مصادر الجملة الأشياء
تحسينات مستقبلية: مداخلة- يمكن أن يطبق الخصم اللغوي من خلال الترجمة - دمجات غير متغيرة إذا احتجنا إلى ذلك
نظام المحاكاة يحتوي على حماية ضمنية:
| вектор الهجمة | الحماية |
|---|---|
| إنخفاض نسبة اللعاب عن طريق التكرار | تكافئ عند 1.0; نسخ متكررة دقيقة don' لا تكافح |
| Kopi-paste spam across documents | Cross-doc dedup عند استرجاع يزيل النتائج الإفراطية |
| تلاعب بالدرجات من خلال حقنة متكررة | إنخفاض يحدث بعد التصنيف , يمنع التضخم في المرتبة |
| إنفجار لوح ال boilerplate | تسقط إكتشاف التصادم المقطعي بالضبط بدون دفع |
ملاحظة: التفكيك ليس حدوداً أمنياً. المحتوى السيئ الذي يمر عبر مرشحات الإمتصاص سيتم индексته. تصفية المحتوى يجب أن تحدث في المسار العلوي
المحاكاة و GraphRAG متعامدة بشكل مقصود:
| النظام | يعمل على | الهدف S |
|---|---|---|
| تقليل النسبة | Segments (text chunks) | Remove redundant retrieval results |
| GraphRAG | الكيانات & العلاقات | رسم بياني بناء المعرفة , مرجع حل |
لماذا نفصل
الإدخال:
[dim]Deduplication: 150 → 98 segments[/]
استrufen:
Post-ranking deduplication: 50 → 42 segments (removed 8 cross-doc duplicates)
للمراقبة الإنتاجية, تأخذ في الإعتبار المتابعة:
| Metric | Description | Healthy Range S | |
|---|---|---|---|
dedup_ratio_ingestion |
% أجزاء تم إزالتها عند الإمتصاص | ||
dedup_ratio_retrieval |
% أزيلت Segments at retrieval | ||
avg_salience_boost |
متوسط الإرتفاع applied per document | 0.05-0.20 | |
max_salience_boost |
أعلى إرتفاع في الوثيقة | ||
dedup_by_doc_type |
معدل الخصم تم تقسيمه حسب نوع الوثائق | إختلافات МSK2 |
يتم إعداد المحاكاة من خلال DocSummarizerConfig.Deduplication جزء في appsettings.json:
{
"DocSummarizer": {
"Deduplication": {
"Ingestion": {
"Enabled": true,
"SimilarityThreshold": 0.90,
"SalienceThreshold": 0.05,
"EnableSalienceBoost": true,
"BoostPerNearDuplicate": 0.15,
"MaxSalienceBoost": 1.0,
"BoostDecayMode": "Logarithmic",
"LogBase": 2.0
},
"Retrieval": {
"Enabled": true,
"SimilarityThreshold": 0.90,
"MinRelevanceScore": 0.25
},
"Analytics": {
"EnableLogging": true,
"EnableMetrics": true,
"HighIngestionDedupThreshold": 0.50,
"HighRetrievalDedupThreshold": 0.30,
"HighSalienceBoostThreshold": 0.60
}
}
}
}
| پارامتر | تلقائي | وصف S |
|---|---|---|
Enabled |
true |
أُمكن / يُمكن تقليل التدخين في الإمتصاص |
SimilarityThreshold |
0.90 |
حد مقاربة الكوسين للكشف عن التكرار |
SalienceThreshold |
0.05 |
النقطة المحدودة التي يجب أخذها بعين الاعتبار |
EnableSalienceBoost |
true |
تحسن الوضوح لقرب-تقليدات |
BoostPerNearDuplicate |
0.15 |
الإرتفاع الأساسي لكل تقريبا- نسخة متكررة (+15%) |
MaxSalienceBoost |
1.0 |
|
BoostDecayMode |
Logarithmic |
Linear أو Logarithmic التآكل |
LogBase |
2.0 |
قاعدة للتحلل لوغاريتمي |
| پارامتر | تلقائي | وصف S |
|---|---|---|
Enabled |
true |
أُمكن / يُمكن استبعاد تفكيك |
SimilarityThreshold |
0.90 |
حد مقاربة الكوسين |
MinRelevanceScore |
0.25 |
نقاط RRF المحدودة لتشمل |
| پارامتر | تلقائي | وصف S |
|---|---|---|
EnableLogging |
true |
عمليات تقليل الملاحظات |
EnableMetrics |
true |
جمع القياسات للمراقبة |
HighIngestionDedupThreshold |
0.50 |
أحذركم إذا >50% تم تقليله عند الإمتصاص |
HighRetrievalDedupThreshold |
0.30 |
أحذرك إذا >30% تم تقليله عند الترقب |
HighSalienceBoostThreshold |
0.60 |
أحذركم إذا تجاوزت الإرتفاع 60% |
الطريقة الخطية (simpleM SK1predicable):
boost = boostPerNearDuplicate × count
مثال: M SK1 بالقرب من-dupes × | | 0.15 |
الطريقة المنطقية (عودة منخفضة,លំនាំដើមM SK2
boost = boostPerNearDuplicate × log₂(1 + count)
مثال: M SK1 بالقرب من-dupes → | | 0.15 \ × log |
يُوصي بنظام ال로그 لأن :
| المرحلة | التعقيد | الحجم الطبيعي | التأثير | |||
|---|---|---|---|---|---|---|
| التدخين | O(nM SK3 | 50-500 | أجزاء | |||
| إستخراج | O(mM SK3 | 20-100 | أجزاء |
للوثائق الكبيرة جداً (10,000+ أجزاء):
التنفيذ الحالي مُحسناً لصور مستندات نموذجية. LSH يضيف تعقيداً دون فائدة لأغلب الحالات المستخدمة.
| المقاربة | ||
|---|---|---|
| lucidRAG | ||
| م Curator NVIDIA NeMo دليل SemDeDup | ||
| MinHash LSH (standard) | ≥0.80 Jaccard MSC5 paper Google C4, GPT-3 paper | |
| SemHash | 0.90-0.95 ≥ | GitHub |
حدنا 0.90 يتوافق مع أفضل الممارسات في مجال المحاكاة الدلالية
| نوع المحتوى | السبب |
|---|---|
| متقاطعةM SK1document at ingestion | Preserves per-source resolution and attribution |
| LowM SK1Content of similarity (<0.90) | Considered semantically distinct |
| أنواع مختلفة من الأجزاء | الرؤوس مقابل الفقرة لها دورات هيكلية مختلفة |
| Cross-إقتباسات لغة | يحافظ على تنوع اللغة |
| الميزة | الحالة | موقع | |||
|---|---|---|---|---|---|
| مراحل قابلة للضبط | ✅ | تطبيق | DeduplicationConfig श्रेणी |
||
| تضخيم التدهور ( مقياس الملاحظات) | ♫✅ تم تنفيذه ♫ | BoostDecayMode.Logarithmic |
|||
| التحليلات المنقطعة/ القياسات | ✅ المطبقة | DeduplicationResult<T> سجل |
|||
| إدماج خدمة الإتصال بالإنترنت | MSC2 تم تنفيذه MSC3 IDeduplicationService |
هذه الاستراتيجية للتفكيك:
© 2026 Scott Galloway — Unlicense — All content and source code on this site is free to use, copy, modify, and sell.