Back to "RAG 图形式RAG证据段在 清晰RAG 区域包"

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

C# Knowledge Graphs lucidRAG Machine Learning Vector Search

RAG 图形式RAG证据段在 清晰RAG 区域包

Saturday, 17 January 2026

注: 备注 这不是传统博客文章 @._# 技术规格 写为具体特征的 清晰RAG 区域包. 在开发过程中,我反复将本文件输入代码- 专注的LMS, 以解释交易情况 ~- offs\ ,}验证假设=,\ 并集中到合理执行上.

本文件描述一个子系统。 清晰RAG 区域包@, @ a project I’_m 积极开发@.}

一项核心要求 清晰RAG 区域包 是提取的能力 证据的各部分 -}句子 @,}段落,}标题_,}字幕@,}框架{,}或构件块并确保这些部分是 已拆除 不销毁有用的信号@. @%

清晰RAG 区域包 通过分析和提取 最佳 从文件<,}图像> ,}音频{,}和结构化数据*.}提供的现有证据 LLM- 生成摘要,作为主要的亚麻末 . 在许多情况下,进食需要完全不使用LLM {(虽然当升级有正当理由时可以使用*).

取代, 清晰RAG 区域包 运用广泛的确定性和概率技术

  • 抽取候选部分
  • 评估其信息值
  • 并且只保留最强有力的代表

解码是此进程的关键部分 @. @%

简单的字符串等同是不够的@.}这个概念经常用不同的措辞表达,使用不同的用词 @,_ 结构,或方式.

检索时间的问题化合物@. @%

当获取结果时 {(}%via SQL,矢量嵌入=,}BM25,}或混合体MPK4}喂养一个表示相同基本想法的LLM多个区块, 产生沉闷,}重复解答 *.5个来自不同文档的接近@-的同质块 不会增加清晰度 @-}它们会稀释它□.}

要解决这个问题 @ , @ @ 清晰RAG 区域包 将重复作为 第一次-类汇编问题@,_* 不是一个文章@-} @hoc过滤器 @MS K2

本文件的其余部分说明如何设计这一脱重复战略,这是我如何与《守则》合作的一部分。 'AGIE SCPCING MS K1 适应代码LLMS=.}需要

这是确保LLM的第一个阶段。 建设正确的东西.

更多信息 清晰RAG 区域包 这里 .

刺激战略

清晰RAG 区域包 使用两个“-”的分解策略消除冗余内容,同时保存重要信号@.}这是 设置过滤器@ label@,#没有内容正常化 #.#

概览概览概览

┌─────────────────────────────────────────────────────────────────────────────┐
│                           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    │
└─────────────────────────────────────────────────────────────────────────────┘

设计担保

这些变数由分解系统维护 :

保证 1 描述 * *
维持秩序 在RRF排名@ 后, 插图永远不会改变语义顺序
无概念损失 解析从不删除概念的所有实例 @
文件边界遵守 调试在摄取时从不跨越文档边界@
内容不可更改 @ _ 解析从不改变嵌入或文字内容@ MS K1}只选择和突出分数 @
确定性 * * 依据相同的输入和配置 , * 重复产生相同的输出 * @

非- 目标

这一制度明确 尝试:

  • 查明事实矛盾 -
  • 揭露真相 - 我们选择了不同源的版本
  • 在摄入时在文档间折叠参数句式 -每份文件都有自己的部分
  • 统一术语 “- "ML"和“"机器学习MS K4”在不同文档中分别保存。
  • 替换实体分辨率 -,在不同的级别上工作

C. 可复制性

应用是完全决定性的 @: @%

  • 内嵌是不可改变的 在抽取时间计算一次
  • 排序稳定 具有同等显著度的-部分保持原有顺序
  • 无随机 无采样无近似ANN,无概率阈值
  • 无外部状态 - 卸载决定只取决于当前段设置

为什么这重要? 用户调试检索结果的用户可以相信,使用相同输入的 re- 运行能够产生相同的输出@ .% 此匹配 清晰RAG 区域包“'”和“确定性行为”相匹配的模糊


为什么两个阶段?

阶段 *1:摄取

目标#: 减少储存并预防在@-}文件冗余 *.

问题M: 文件通常包含重复的内容 @: @%

  • 绝版文字@(_headers @,}脚#,}拒绝声明{)}
  • 复制@- @pasted 区域
  • 同一概念解释了多种方式

解答@: @ 在索引前在每文档中复制@. @%

密钥 Insight @ : 在接近- 的重复处理中, 重要独立证据“,”不是多余的“.” 如果作者用三种不同的方式解释一个概念, 这个概念很重要, 我们通过提升突出度来捕捉这个信号 。

阶段 *2: retretval 调试

目标#: 防止LLM通过文件接收多余信息

问题M: 当在多个文档中查询时 ,\ 类似段落可能出现在不同来源 .}LLM should{'t 描述相同信息多次@.}

解答@: @ 由 RRF {(} 排序后, 它结合了语义相似性},关键词 匹配MS K2} 突出\ ,}\ 和新鲜@), 在保持最高比例的文档中进行翻版。 <-\ scolring cluction ♪.

为什么在RRFZ?之后? RRF分数是衡量相关性的最佳整体尺度 =. 在排名失去这个信号之前进行演练

为何只在摄食时才提高盐度

分离是故意的 :

它捕捉到什么 *
摄食刺激 作者强调文件有多强调一个概念
检索得分 @ 查询关联性@-内容与用户意图的匹配程度#

在检索时混合这些功能会将文档意图与用户用意连接起来.}在文件中重复 {5}% 的概念很重要 与该文档对应的,(但可能不相干) 到此查询@. 藉由增加摄取@,, 我们保留作者的信号\ ' 没有偏差查询结果_.


阶段 *1:摄取

地点位置地

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

参数

參數 默认MS K2 描述
similarityThreshold * 0.90 * @ *
salienceThreshold -=YTET -伊甸园字幕组=- 翻译:
boostPerNearDuplicate @ @ @ 0.15 @ @ * # 盐碱度在靠近@ - @ dplical 合并 @MS K4} @ I @

实例示例例子

精确复制@( @ no boost @ ) @

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)

**近端 - 复制 * * Boost Application *MS K2 ***

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)

临界阈值的理由

  • -=YTET -伊甸园字幕组=- 翻译: 在研究的基础上,NeMo在语义分解中使用了 0.90-0.92, 工业标准
  • -=YTET -伊甸园字幕组=- 翻译: 过滤器非常低@ - @ value 区块, 同时保留大多数内容
  • - - 不带超@- 加权重复概念的有意义的信号

阶段 *2: retretval 调试

地点位置地

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)

参数

參數 默认MS K2 描述
similarityThreshold ”“0.90”“ ”“Consine 类似阈值”,横跨“MS K3”“doc dedup”“Z

为何邮递@-_RRF}?#

RRF “(”对等阵营结合了四个信号“:”

  1. 高分=: 语义与查询相似
  2. **BM=25 得分 : *** 校法=/}关键字匹配
  3. 盐分=: 文件在文件中的重要性
  4. 新鲜分数: 反应增强

在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.

失败模式 @ &_ 贸易@ MS K1_ 关闭

已知限制

失败模式”“ ”描述“MS K2 缓解 ”
假正 ( @ over@ -}dedup) 两种不同但密切相关的概念可能超过“0.90 相似性”或“MS K2 接受贸易” 或“- 倾向于减少冗余”
假的负数@( @under @-_dedup}) 短片段可能会嵌入错误的语义相似性 @ @ hash-}基于精确重复检测,
内嵌漂移 变换嵌入模型将失效退出假设 @ }需要完全重新恢复-inchoduction@;}嵌入器一旦存储 *# }就不可更改
秩序灵敏度 贪婪选择”意指第一个高端“-萨利安部分”赢得了“MS K2 ” 通过稳定排序“; 最高端” -萨里部分保留着“{

接受贸易

  • 有关回想的精度:* 我们更喜欢偶尔保持近@-+_dplications 而非意外删除不同内容
  • 存储于精确度@: @% 我们储存每-% document 而不是全球降排,以保存来源归属
  • 优化的简单度@: @% O(n ²) 对于典型的文档大小可以接受 LSH 增加复杂性

多种语文的考虑

包含多语言内容的解说行为@: @%

假想”“ 行为”“ 理由”“I
同一语言 正常除尘应用 @ 嵌入式捕捉语义相似性@
CrossóM-语句 }没有被拆卸 ” @ 保存源@- 语言多样性$
混合- 语言文件 在语言群集中的 Dedup 嵌入相似性自然分离的语言

设计选项@: @% Cross- 语言 dedup 明显不支持 @. 这样保留了在用户@' 首选语言中检索相同事实的能力, 或者比较不同来源对事物的表达方式.}

未来提升@: @cross-}语言分解可以按需要通过翻译 @-#invariant 嵌入程序进行分层


安全 & 反向考虑

重复系统包括隐性保护 :

攻击矢量 保护MS K2
重复导致的盐度通胀率 @ _BARBAR_在 1.0;}精确的复制件don@'#t push *% *
在文档之间复制-paste垃圾邮件 在检索时 cross-doc dedup 移除多余的结果 @
通过重复注射进行计分处理 Dedup 发生于排名后”“,防止得分通胀 ”“
锅炉洪水 @ _ 精确的散列匹配检测滴, 没有振动@ MS K1} @

注:: 调试不是安全边界@. @ 恶意内容, 因为通过摄取过滤器将被索引@ . @ 内容过滤会发生在上游 @ MS K2} *


与 GragraG 的相互作用

插图和图形RAG是故意垂直的\ :\

系统 @ 在 @MS K2目的上的操作@
调解 片段 @(文本块@) @# 删除多余的检索结果 @MS K4
图图RAG 建立知识图 , 解决参考文献

为何分开?

  • 提到“"Apple"”和“MS K2这家公司"可能以类似文字表示,
  • Dedup does' 不需要实体意识\ ; 它纯粹靠语义相似性运作
  • 实体-aware dedup可稍后添加,作为增强@,}不能替换

度量计

当前日志

摄取@:

[dim]Deduplication: 150 → 98 segments[/]

检索@: @%

Post-ranking deduplication: 50 → 42 segments (removed 8 cross-doc duplicates)

推荐计量

为了监测生产情况 , 考虑追踪: *

Metric 描述 * 健康距离*
dedup_ratio_ingestion @ } @ 10-40% @ @ I #
dedup_ratio_retrieval @ }%}在检索中移除的片段 *{ }\ 5-20%{MSC4@ }*
avg_salience_boost * * 根据文件应用的平均升降率* *{ } @0.05-0.20 * *
max_salience_boost @ 文档中最高振动 *{ }\fn< 0.60 _( 一种概念主宰着 MS K5 NSK6
dedup_by_doc_type Dedup比率按文档类型 @ Vories { }分隔

调试提示

  • 高摄氏消化率 文档可能有过量的锅炉板或自动@ - @% 生成
  • 低摄氏消化 文档有不同内容 @(@good_)}或嵌入功能差 #( @investiguate@)#
  • 高调检索 ddup @ (>30%): @ 查询范围可能太宽@, @% 或实体有许多类似的文件
  • 盐碱接近1.0: 概念被高度强调@;验证它#'}合法{,}不是垃圾邮件

配置配置

通过 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
      }
    }
  }
}

摄进配置

參數 默认MS K2 描述
Enabled true 启用/ disable 食用过量重复 *
SimilarityThreshold 0.90 ” 重复检测的相近阈值“
SalienceThreshold 0.05 -=YTET -伊甸园字幕组=- 翻译:
EnableSalienceBoost true BARBAR 靠近-的亮点 重复_ }
BoostPerNearDuplicate 0.15 @ _Base supplement per near@-}重复的 (+15%) MS K3
MaxSalienceBoost 1.0 最大亮度上限
BoostDecayMode Logarithmic LinearLogarithmic 衰变@ @%
LogBase 2.0 对数衰变基

检索访问配置

參數 默认MS K2 描述
Enabled true 启用/ 残疾检索重复 *
SimilarityThreshold 0.90 @ _Consocial 相似的阈值@ _Q#
MinRelevanceScore 0.25 最低RRF分数包括

分析配置

參數 默认MS K2 描述
EnableLogging true 日志重复操作 @
EnableMetrics true ”收集监测指标“
HighIngestionDedupThreshold 0.50 Warn 如果@>50%在摄取时被切除
HighRetrievalDedupThreshold 0.30 @ _ 警告@ MS K1} 在检索时解码@ I
HighSalienceBoostThreshold 0.60 @ @ 警告, 如果推力超过 @ @ 60% @ @ * #

加速衰减模式

线性模式 @(_sproo@,}可预见=):

boost = boostPerNearDuplicate × count

靠近@- @dupes @×} @0.15# =_ @#+45%#促进

对对数模式 @ (_ diminishing recorrunts *% 1} 默认@ MS K2\ {

boost = boostPerNearDuplicate × log₂(1 + count)

靠近@- @dupes @ →} @0.15 @ ×log_₂(4){=#+30%

推荐对数模式是因为 @:

  • 前几个复制品有最强烈的信号 ( 作者强调
  • 许多重复文件可能显示锅炉板 # ,# 不重要
  • 防止失控的显著通货膨胀

业绩考量

复杂程度

-=YTET -伊甸园字幕组=- 翻译: |-------|------------|--------------|--------| @| | @OQ( @nQ²)}#|# 50-500#片段 @MS K6_ @ @<#%100#ms @MSC9# @|#20-100}片段: | @ < @ZK8 @| @

缩放路径

用于非常大文档的 & M(10,000+ @ section@ ):

  1. LSH ( 地方性 MS K1 敏感散列 NSK2 O(n ) 近似丁度
  2. 批量比较@: @% 用于减少内存的块中进程
  3. 早期过滤@: @% 更具侵略性的显著阈值

目前对典型文档大小的当前实施进行优化,使 LSH 增加复杂性,而对大多数使用的案例没有好处@.


与研究的比较

源於 @
=清晰的RAG @ [email protected]}# =本次执行={ }
NVIDIA NEMO Crator MS K2 NSK3 SemDeup 文档
MinHash LSH(标准}) MS K3 NSK4 计分卡 Google C4,GPTMPK1纸
{\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080} 吉特胡布

我们的“0.90”阈值与关于语义重复的行业最佳做法相一致。


哪些非重复

@| 内容类型@|}原因#| |--------------|--------| -来源分辨率和属性 类似内容 @(<0.90)}#|_ @| 不同的片段类型\ |}标题与段落具有不同的结构角色 “| cross- 语言副句子”“| 保留了语言多样性 ” @|


实施情况执行情况

-=YTET -伊甸园字幕组=- 翻译: |---------|--------|----------| “|”可配置阈值“|” 已执行“MSC3” DeduplicationConfig 类中 @| @% @|BARBAR 鼠标衰变=%(_log 缩放=#)}|}{✅}已执行 *|} BoostDecayMode.Logarithmic | |Dedup分析仪/ 度量| MSSK3已执行 @| DeduplicationResult<T> 记录@| @% |DI服务整合 IDeduplicationService |

未来增强能力

  1. Dedup 分析仪表板@: @ 每个文件类型比率的目视跟踪
  2. Crossó- 语言选项@: @% 译文-不易嵌入多语种脱丁字
  3. 实体- - 知情的didup - : 使用 GraphRAG 实体作为附加信号@ ( @ non replace\ )
  4. **普罗米修斯 / 开放远程测量 MS K1 *** 监测仪表板的出口指标

摘要摘要

此重复策略@ : @

  • 保存信号 @ - @ near@-# 重复会提高重要性而不是被丢弃
  • 尊重边界 -文件保持独立部分集
  • 排级然后过滤器 - 使用完整的 RRF 信号
  • 安全失灵 -prefers保持内容超过攻击性清除
  • 保持确定性 - 同样的投入总是产生相同的产出
logo

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