RAG 时间线
本文按时间顺序整理仓库中 RAG 相关策略的演进。重点关注检索、切块、向量化、排序、上下文装配与可观测性,不展开纯前端重构或展示层调整。
相关当前态文档:
纳入范围
本页优先记录:
- 检索策略变化
- chunking / embedding / rerank 的能力边界变化
- 调试、可观测性、运行时默认值这类会改变排障方式的节点
本页不单独记录:
- 纯管理台页面改版
- 不改变运行策略的文档整理
- 仅影响 demo 的展示层提交
当前结论
当前落地形态可以概括为:
向量召回优先 + 按 Agent 挂载 source 过滤 + 托管纠错 source 定向召回并提权 + 可选 multi-query 扩展 + 可选 rerank + 短查询关键词 fallback 补位
这条主链路在 当前 RAG 全链路 中有完整说明。
演进时间线
| 日期 | Commit | 主题 | 变化 |
|---|---|---|---|
| 2026-02-05 | ebcc227 |
初始知识库上传与摄取 | RAG 基础链路落地,形成“上传文档 -> ingestion -> 检索”的最小闭环。 |
| 2026-02-09 | a4191d7 |
第一轮 chunking 策略升级 | 引入 fixed_size、sentence、paragraph、semantic、recursive 等策略,把切块从固定方案变成可配置能力。 |
| 2026-02-09 | 03aa5e9 |
Embedding portability | 支持本地模型目录、离线部署与 Docker bake-in,解决 embedding 供给形态问题。 |
| 2026-02-12 | 7303018 |
Embedding / rerank 分层 | 新增独立 [rerank] 配置,RAG 从单纯向量召回演进到“召回后可重排”。 |
| 2026-02-12 | 13e6083 |
Embedding backend 双栈 | 新增 embedding.backend_type = api/local,让 embedding provider 与运行环境解耦。 |
| 2026-03-08 | 6dafeb5 |
上下文长度策略调整 | 移除硬编码 context length limit,不再默认把 RAG 上下文强截断到固定长度。 |
| 2026-03-12 | e786b95 |
第二轮 chunking 升级 | 用 regex 替代 NLTK,并加入 LlamaIndex sentence_window / semantic_splitter 与 docling parse。 |
| 2026-03-25 | 6df926e |
Semantic splitter 兼容性修复 | 对不受支持的 semantic splitter 参数做安全处理,减少配置可写但运行失败的情况。 |
| 2026-03-26 | ebbc3a2 |
Chunking capability 校验 | 增加策略可用性校验与 UI 集成,把“策略存在”与“当前环境可运行”区分开。 |
| 2026-03-27 | a9f602d |
Multi-query retrieval | 引入 query expansion,多 query 召回后合并去重,提升语义改写场景的 recall。 |
| 2026-03-27 | d220570 |
托管纠错检索策略 | 引入 managed_correction source,检索时执行定向召回,并在最终排序里优先考虑纠错来源。 |
| 2026-03-27 | fc73415 |
检索日志与指标 | 为 retrieval 过程补充日志和指标,开始强化 RAG 可观测性。 |
| 2026-03-30 | aab6c66 |
Keyword fallback | 为短查询引入关键词回退路径,但保持整体 vector-first,而非直接改成全量 hybrid retrieval。 |
| 2026-03-31 | 82af7cd |
RAG 运行时默认值与 debug 可见性 | 新增 [rag] 配置,显式暴露 top_k 与 score_threshold,并把 keyword fallback eligibility / provenance 纳入 debug。 |
| 2026-03-31 | ee9ddf3 |
当前态文档固化 | 新增 当前 RAG 全链路,把当前生效方案写成一份面向运维与开发的说明。 |
分阶段理解
第一阶段:先把知识摄取和向量召回跑通
这个阶段以 2026-02-05 到 2026-02-12 为主。
- 先有知识源、文档上传、摄取与基础召回
- 很快发现“切块策略”和“embedding 供给形态”不能写死
- 因此先后引入多 chunking 策略、本地 embedding、双 backend、rerank 配置
这一阶段解决的是“RAG 能不能稳定运行”。
第二阶段:把切块和上下文管理做细
这个阶段以 2026-03-08 到 2026-03-26 为主。
- 去掉硬编码上下文长度限制
- 把切块策略扩展到更贴近语义与复杂文档结构的方案
- 补齐 capability 校验与 inspect 体系
这一阶段解决的是“知识被怎样切开、怎样进入可检索状态,以及为什么某些策略在当前环境不能直接跑”。
第三阶段:针对检索命中率做补强
这个阶段以 2026-03-27 到 2026-03-31 为主。
multi_query解决单 query 语义表达不稳的问题managed_correction解决运营纠错无法稳定优先命中的问题keyword fallback解决短术语、产品名、缩写类 query 的召回空洞- debug 可见性补齐后,RAG 从“黑盒命中/未命中”变成可解释链路
这一阶段解决的是“为什么有知识却命不中,以及怎么让修正过的知识优先生效”。
当前仍保留的边界
- 当前不是全量 hybrid retrieval,关键词检索只是 fallback,不是主召回面。
- rerank 已进入正式配置,但文档仍把真实模型接入视为继续演进方向。
- chunking 影响的是“知识如何切开”,不直接决定运行时 query 是否命中。
与其他时间线的关系
- 这条线与 编排器时间线 的交点主要在:RAG 何时被接入 chat runtime、上下文如何注入最终生成、以及 debug / observability 如何暴露。
- 这条线与 MCP 时间线 的交点较少,但在“最终回复如何融合多种上下文”这一层会通过编排器发生耦合。
参考来源
- 当前 RAG 全链路
- RAG 设计
- RAG 知识库管理
git log --grep='rag|retriev|embedding|rerank|chunk|qdrant|vector|knowledge'