rag-techniques-playbook
lamhotsiagian/rag-techniques-playbook加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
你在开发一个企业内部知识库问答系统。系统上线第一天效果还不错,用户问"我们公司的年假制度是什么",AI 能准确给出答案。但第二天,有人问"张三的绩效评分和李四比怎么样",AI 开始一本正经地胡说八道——它根本不认识张三和李四是谁,也不知道这两个人的数据根本不应该被检索出来。
这不是 AI 的问题,而是检索出了问题。
检索增强生成(Retrieval-Augmented Generation,RAG)正是解决这类问题的核心技术。它的思路很朴素:让 AI 在回答问题之前,先去知识库里"查一查"相关资料,再基于查到的资料作答。这比让 AI 凭空编造答案靠谱得多。
但 RAG 的坑远比你想象的深。检索的时机、检索的方式、检索结果的排序、上下文的管理、幻觉的消除……每一个环节都有大量工程细节。Lamhot Siagian 的 RAG Techniques Playbook 正是为解决这些痛点而生——它用一份手册收录了 34 种 RAG 技术的原理、伪代码、优缺点和适用场景,从最基础的经典 RAG 一直覆盖到微软 GraphRAG、RAPTOR、Self-RAG 等前沿方法。
截至目前,这个仓库在 GitHub 上已获得 70 Stars,收录的技术数量在同类项目中属于相当全面的级别。
这是一份纯文档型的技术手册,作者是印尼开发者 Lamhot Siagian。项目于 2026 年 2 月创建,仅包含一个 README.md 文件(约 5 万字),系统性地整理了 34 种 RAG 技术。
每一项技术都遵循统一的结构:快速概览(Quick Facts) → 技术定义(What It Is) → Python 伪代码(Python Pseudocode) → 优点(Pros) → 缺点(Cons)。这种结构让读者可以快速定位自己需要的信息——如果只需要了解原理,看 Quick Facts 就够了;如果想动手实现,看伪代码是最快的路径。
项目没有正式的开源许可证,默认适用 GitHub 的标准服务条款。仓库仅包含文档内容,无可执行代码、无容器化配置。
这 34 种技术并非随意堆叠,而是按照 RAG 系统构建的逻辑层次来组织。整体可以分为以下几个类别:
基础层(Foundational):5 种
这部分覆盖了 RAG 的入门必备知识,包括经典 RAG(Basic RAG)、针对 CSV 结构化数据的 RAG、可靠性增强(Reliable RAG)等。经典 RAG 的工作流程非常简单:接收用户问题 → 向向量数据库检索 top-k 相关文档块 → 将检索结果和问题一起注入提示词 → 交给大语言模型生成答案。
Basic RAG 的伪代码只用 20 行左右就勾勒出了完整流程,展示了从检索到生成的闭环。它是后续所有高级技术的基础参照。
检索优化层(Advanced Retrieval / Context Enrichment):13 种
这是手册中最"硬核"的部分,涵盖了从分块策略(Chunking)到重排序(Reranking)再到混合检索(Fusion Retrieval / Ensemble Retrieval)的完整技术栈。
在分块策略上,项目对比了固定窗口分块(Optimizing Chunk Sizes)、语义分块(Semantic Chunking)、命题分块(Proposition Chunking)等多种方案。重排序环节则覆盖了 Reranking 和 Multi-faceted Filtering,解释了如何通过二次排序和元数据过滤来提升最终检索质量。
特别值得关注的包括:HyDE(Hypothetical Document Embedding)——先用 LLM 生成一个"假设性答案文档",再对这个假设文档做嵌入和检索,而不是直接对用户问题做检索,实验证明这种方法在某些场景下能显著提升召回率。Contextual Compression——对检索到的上下文块进行压缩,去除冗余信息,只保留与问题最相关的部分,从而在有限的上下文窗口内塞入更多有效信息。
多跳推理与图增强层(Advanced Architecture):5 种
这是当前 RAG 研究最活跃的方向,也是手册最有价值的部分。
Graph RAG(章节29)——将知识图谱与向量检索结合。在多跳问题场景下("A 和 B 有什么关系?B 和 C 有什么关系?"),纯向量检索往往只能找到直接关联的节点,而图结构能天然支持多跳遍历。Graph RAG 的实现思路是:先从用户问题中提取实体,用 LLM 生成实体列表,再通过图数据库查询这些实体的 N 跳邻居,最后把图遍历结果和向量检索结果融合后交给 LLM 生成答案。
Microsoft GraphRAG(章节30)——微软在开源 GraphRAG 基础上进一步发展的版本,核心创新是引入了"社区摘要"机制。传统的 Graph RAG 在回答"全局性问题"(如"公司文档中讨论最多的主题是什么?")时效果不佳,因为这类问题不需要检索特定实体,而是需要理解文档的全局语义结构。微软 GraphRAG 的解决方案是:先对文档构建实体图谱,再通过社区检测算法(如 Leiden)将图谱划分为多个社区,每个社区生成一份摘要——这些社区摘要有双重作用:既能在全局性问题中直接提供高层语义,又能在局部问题中作为上下文补充局部检索结果。
RAPTOR(章节31)——由 UC Berkeley 等机构提出的一种树形索引检索方法。与传统平铺的向量检索不同,RAPTOR 构建一棵多层级的递归摘要树:叶子节点是原始文档块,向上每一层都是对下一层节点的聚类摘要。用户查询时,先在高层摘要中做粗粒度定位,再逐层向下钻取,最终召回最相关的叶子节点。这种结构特别适合需要跨文档做多主题综合分析的场景。
自反思与自我纠正层(Iterative / Corrective):3 种
Self-RAG(章节32)——由卡内基梅隆大学等机构提出,核心思想是让模型学会"自我判断"。Self-RAG 在生成答案后,会显式地评估答案的质量:检索是否必要?答案是否被检索到的资料充分支撑?通过这种自反思机制,模型可以决定是否需要重新检索、是否需要改写问题、或直接使用已有知识作答。
Corrective RAG(CRAG,章节33)——另一种纠正思路,侧重于检索质量的事后检测。CRAG 的流程是:先做常规检索,然后用一个专门的评估模型给检索结果打分(0-1),如果分数低于某个阈值(如 0.6),就触发纠正流程——对问题进行rewrite(重新组织问题表述),或切换到备用数据源重新检索。相比 Self-RAG 的模型内省,CRAG 更侧重于流程层面的工程化纠正。
Agentic RAG(章节1 / 章节34)——这是当前最前沿的方向,也是手册的开篇和压轴技术。Agentic RAG 将 RAG 系统框架化为一个 Agent 驱动的工具调用过程:Agent 负责决定调用哪个检索工具(语义搜索、关键词搜索、图查询等)、调用几次、是否需要多步推理。章节34提到的 "Sophisticated Controllable Agent" 更进一步,支持通过配置文件或提示词来定制 Agent 的行为轨迹,实现高度可控的 RAG 编排。
评估与可解释性层(Evaluation / Explainability):4 种
这部分覆盖了 RAG 系统的评测和可解释性需求。DeepEval 是一个类似 Pytest 的 RAG 评测框架,支持幻觉检测、答案相关性、检索召回等指标。Explainable Retrieval 则关注检索结果的可解释性——不仅告诉用户检索到了什么,还解释"为什么检索到的是这些内容",这在医疗、法律等高风险场景中非常重要。
从手册中出现的工具和框架,可以一窥当前 RAG 技术栈的全貌。
模型层:几乎所有伪代码示例都使用 OpenAI 的 GPT-4o-mini 作为默认 LLM,同时 Pydantic AI 是最常见的 Agent 开发框架(Self-RAG、Agentic RAG、CRAG 等均基于 Pydantic AI 实现)。这反映了一个现实:当前 RAG 生态中,OpenAI 模型 + Pydantic AI 组合是事实标准。
向量数据库:手册中没有指定具体的向量数据库实现,伪代码中使用 db.match_chunks() 和 db.upsert_chunk() 做抽象化处理,读者需要自行对接 ChromaDB、Qdrant、Pinecone、Weaviate 等具体数据库。
知识图谱:Graph RAG 和 Microsoft GraphRAG 需要图数据库支持,常见选项是 Neo4j。
评测框架:DeepEval 是手册中推荐的 RAG 评测工具,与 LangChain 有良好的集成。
LangChain:虽然手册中部分章节提到了 LangChain(如 Graph RAG with LangChain),但整体来看,LangChain 并不是主要依赖。这是因为手册聚焦于技术原理和伪代码,而非具体框架实现,LangChain 更多作为"参考选项"出现。
适合的场景:作为 RAG 学习者的系统性参考手册使用。你不需要安装任何东西,只需要打开 GitHub 仓库的 README,逐章阅读即可。每种技术都有清晰的 Python 伪代码实现,开发者可以快速将伪代码迁移到自己的项目中。
不适合的场景:如果你需要的是可直接运行的代码库、完整的开源实现或生产级 RAG 系统,这个项目就无法满足需求——它本质上是一份结构化笔记,而非一个可部署的代码项目。
前置知识:手册假设读者对向量嵌入(Embedding)、大语言模型(LLM)和基本的 Python 异步编程有基础了解。
这份手册也有一些值得注意的局限:
伪代码的抽象层级:所有代码示例都是"概念性伪代码",省略了向量数据库连接、错误处理、并发控制等工程细节。直接复制粘贴到生产环境是不现实的,需要大量的工程化填充工作。
缺乏真实 Benchmark:手册对每种技术的描述依赖作者的理解和总结,没有提供与其他技术的横向性能对比数据,读者无法直接判断哪种技术在特定场景下表现更好。
许可不明确:项目没有明确的开源许可证,这意味着在使用和分发内容时需要谨慎,最好联系作者确认。
知识新鲜度:RAG 是一个快速发展的领域,2025 年之后出现的一些新技术(如 HippoRAG、Co-STaR 等)尚未收录在当前版本中。
RAG Techniques Playbook 的核心价值在于系统性。在 RAG 技术碎片化的今天,很难找到一份文档能同时覆盖 HyDE、GraphRAG、RAPTOR、Self-RAG、CRAG 这些横跨多个子类别的技术,并提供统一格式的原理说明和伪代码实现。对于需要快速了解 RAG 全景的技术决策者、正在构建 RAG 系统的工程师、或希望拓展 RAG 知识面的研究者,这份手册都是一份值得收藏的参考资料。
它的局限也很明显——纯文档形态决定了它只能提供方向性指导,真正的工程落地还需要结合具体框架(如 LangChain、LlamaIndex)和具体向量数据库来做深入实践。