跳到主要内容

分支② 扎根知识

这条分支补主干的哪块缺口: 原始模型「只知道训练时见过的、和你这次塞进去的那点文字」。这条分支(RAG / 上下文工程)在模型回答前,先去外部资料里检索相关片段、拼进上下文,让答案扎根在真实材料而非模型的模糊记忆上。


1. 这条分支是什么(第一性原理)

模型的知识是「训练时冻结的 + 你这次塞进上下文的」。你公司的文档、此刻的网页、那份 PDF,它都不知道。直接问 → 它要么说不知道,要么编一个

RAG(检索增强生成)的思路极简单:先检索,再生成

文档/网页/PDF/视频 用户问题
│ │
▼ (离线:切块 → 嵌入 → 存索引) ▼ (在线)
┌─────────────┐ ┌──────────────┐
│ 知识索引 │◄──────检索────│ 把问题向量化 │
│ (向量/图/KV) │──相关片段──┐ └──────────────┘
└─────────────┘ ▼
┌────────────────────────┐
│ 把「相关片段 + 问题」一起 │──► 模型基于真材料作答
│ 拼进上下文喂给模型 │
└────────────────────────┘

分支里的库,差别在三件事:怎么切块/解析索引建成什么结构(向量?图?)检索和拼装的流程怎么组织


2. 分支内有哪几种做法(流派)

扎根知识 (RAG)

┌────────────────┼─────────────────┬──────────────────┐
▼ ▼ ▼ ▼
通用 RAG 框架 图增强 RAG 多模态 RAG 长文研究型
「向量检索为主」 「实体/关系图」 「PDF/表/图/视频」 「拆成研究流程」
langchain hkuds-lightrag hkuds-rag-anything storm
llamaindex hkuds-videorag
haystack
  • 通用 RAG 框架:以向量检索为主,提供切块/加载/检索/合成的通用积木,生态最广。
  • 图增强 RAG:不止切块嵌入,还从文档抽实体和关系建图,按局部实体 / 全局主题双层检索。
  • 多模态 RAG:把 PDF、表格、公式、图片、视频当一等检索单元处理。
  • 长文研究型:把「写一篇有引用的长文」拆成「多视角检索 → 提纲 → 成文」的研究流程。

3. 对比矩阵(子库区别,逐格接地)

索引/检索结构组织方式一句话差异代码锚点
langchain向量检索 + 最广的检索器/加载器/切块器抽象链(LCEL)+ 海量 provider 集成生态最广的「积木总店」;现推荐 agent 面用 create_agent / 底层 LangGraph(TODO: 待 langchain 子库 doc;libs/corelibs/partners)
llamaindex索引 + 查询引擎(node 解析 → 检索 → 响应合成)路由 + 子问题分解主打「文档 QA / 文档 agent」,索引/查询引擎抽象最完整(TODO: 待 llamaindex 子库 doc;llama-index-core/)
haystack检索器/阅读器/生成器分解显式 DAG 流水线,组件类型化连接流水线显式、可序列化、偏生产;「显式而啰嗦」是特性不是缺点(TODO: 待 haystack 子库 doc;haystack/core/pipeline/pipeline.py)
hkuds-lightrag实体/关系 + 向量 + KV 多后端naive/local/global/hybrid/mix 多查询模式比微软 GraphRAG 更轻更快的图 RAG;查询模式差异极大,引用要点名模式(TODO: 待 hkuds-lightrag 子库 doc;lightrag/)
hkuds-rag-anything在 LightRAG 图索引之上 + 多模态解析解析(MinerU/Docling)→ 模态感知切块 → 图+向量索引把表格/公式/图片当一等检索单元,端到端多模态文档管线(TODO: 待 hkuds-rag-anything 子库 doc;raganything/)
hkuds-videorag视频的图+向量索引融合转写/视觉字幕/音频信号 → 检索单元把数百小时长视频索引成可查结构;查询时跨模态路由(TODO: 待 hkuds-videorag 子库 doc;monorepo 包在 VideoRAG-algorithm/videorag/)
storm在 DSPy 上的研究流水线多视角发现 → 模拟访谈 → 提纲 → 成文,全程引用接地不是「查一段答一句」,而是把长文写作拆成研究循环(Co-STORM 加人协作)(TODO: 待 storm 子库 doc;knowledge_storm/)

4. 模式与权衡

  • 向量检索 vs 图检索:纯向量简单、覆盖广,但答不好「跨多个实体的全局问题」;图 RAG(lightrag)抽实体关系能答全局,但建图有抽取成本、schema 易变。这正是 RAG 与分支③记忆(graphiti 也用图)在「图」上的交汇点。
  • 显式 vs 隐式流水线:haystack 的 DAG 显式啰嗦但可序列化、可部署、易调试;langchain/llamaindex 更高层省事但「魔法」多,排错更难。
  • 解析质量决定上限:多模态 RAG 里,解析器选择(MinerU vs Docling)直接决定抽取质量——卡片明确要求记录用了哪个。
  • 「检索 → 生成」只是最简形态:storm 证明,长文任务需要把检索拆进一个多阶段研究流程,而非一次检索。

5. 趋势

  • 从「切块+向量」走向「图 + 多模态 + 多阶段」:HKUDS 系(lightrag → rag-anything → videorag)是这条演进线的清晰样本。
  • RAG 与 agent 循环融合:llamaindex 的「文档 agent」、langchain 的 create_agent 表明 RAG 正从「静态管线」变成「agent 在循环里主动决定检索什么」——回到分支①。
  • 评测成刚需:RAG 质量难肉眼判断,催生了分支⑥的 ragas(忠实度/相关性指标)。

6. 代表作 + 深入

  • 入门通用 RAG / 要最广生态langchain;要文档 QA 的索引/查询引擎llamaindex
  • 要可部署、可序列化的显式管线haystack
  • 要图增强、能答全局问题hkuds-lightrag(并连到分支③的 graphiti 看「图」的另一面)。
  • 要吃 PDF/表/图/视频hkuds-rag-anything / hkuds-videorag
  • 要写长篇有引用的研究文storm