Advanced_RAG
LangChain 高级 RAG 实战教程,10 个 Notebook 从查询改写到 Agent 化全覆盖
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
LangChain 高级 RAG 实战教程,10 个 Notebook 从查询改写到 Agent 化全覆盖
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
想象这样一个场景:你在企业知识库里部署了一个聊天机器人,问它"去年Q3的技术债务是多少",它一本正经地回答了一串看似专业实则完全错误的数据。这种现象叫幻觉(Hallucination)——LLM 自信地输出不存在的信息,是当前大语言模型最头疼的痛点之一。
检索增强生成(Retrieval-Augmented Generation,RAG) 就是来解决这个问题的。它的核心思想很朴素:别让 AI 凭空编造,先去知识库里找相关资料,再基于真实内容生成回答。这就是为什么 RAG 被称为"给 AI 装上了搜索引擎的脑子"。
而 Advanced RAG 这个项目,则更进一步——它不是教你搭一个"能用"的 RAG,而是带你从最基础的 RAG 起步,一步步掌握业界最前沿的 RAG 优化技术:查询改写、多路召回、自反思、Agent 化……整整 10 个 Jupyter Notebook,覆盖了从入门到进阶的完整路径。
RAG 之所以在 2023-2024 年成为 AI 落地的标配,源于三个现实压力:
第一,模型知识有截止日期。 GPT-4 的训练数据截止到 2023 年 12 月,企业内部最新的产品文档、政策规章、代码变更,模型根本不知道。
第二,幻觉问题难以根除。 即使给出了正确的上下文,模型在长文本推理时仍可能"跑偏"。RAG 通过限制检索范围,显著降低了幻觉概率。
第三,成本比微调低得多。 用新数据微调一个模型需要 GPU 集群和大量时间,而 RAG 只需要接入一个向量数据库,改改提示词,一晚上就能上线。
这个项目作者 Nisaar Agharia 就是看到了这个趋势——市面上的 RAG 教程大多停留在"Hello World"级别,真正讲高级优化的少之又少。他把自己在多个生产项目中积累的实战经验,整理成了这一套循序渐进的教学代码。
如果说普通 RAG 是"查字典",那么 Advanced RAG 就是"带着问题去图书馆找书,还要让馆员帮你挑最相关的那几页"。
普通 RAG 的流程: 用户提问 → 转换成向量 → 在向量数据库中找相似文档 → 把文档塞给 LLM → 生成回答。这里面每一个环节都可能出问题:问得太口语化查不到、向量数据库返回的内容太宽泛、LLM 被无关内容干扰……
Advanced RAG 解决的问题: 在"查"和"生成"之间的每一个步骤,都加入智能优化——查之前先改写问题、一次查多个方向、从多个数据库同时查、查完还要自我评估质量、发现查不准就自动切换策略……每个 Notebook 解决一个具体问题。
一切从这里开始。项目用 Langchain 框架演示了 RAG 的最基本形态:用户提问,系统从向量数据库(项目中使用 Pinecone 或 Chroma)中检索相关文档片段,然后将问题和检索结果一起传给 LLM,生成最终回答。
这部分的价值在于让你理解 RAG 的数据流:Embedding(嵌入)→ Vector Search(向量检索)→ Prompt Construction(提示词构建)→ LLM Generation(生成)。每个环节的参数如何调优,哪些 Embedding 模型效果好,都在这里打基础。
这是高级 RAG 的第一把钥匙。用户的问题往往口语化、模糊甚至有歧义,直接拿去做向量检索效果很差。Query Transformations 教你怎么用 LLM 先把问题改写得更精确——比如把"那个去年发布的新功能"改写成"2023年Q4发布的AI助手新功能"。
项目展示了多种改写策略:查询扩展(Query Expansion)、查询分解(Query Decomposition)、Step-back Prompting(退后一步提问)。每种策略都有对应的 Langchain 实现代码。
企业通常不只有一个知识库——可能有产品文档、技术维基、客户工单三个不同的数据源。路由机制的作用是,根据用户问题判断"应该去哪个知识库查"。
这个 Notebook 展示了如何用 LLM 实现智能路由:通过 few-shot prompt,让模型学会区分"这个问题应该查产品文档"还是"这个问题应该查代码库"。这避免了把所有数据混在一起导致的检索噪声问题。
"同样的数据,不同的索引方式,检索效果可以差好几倍。" Notebook 04 深入讲了向量数据库的索引方法——chunk size(切分块大小)怎么选、overlap(重叠比例)设置多少、metadata(元数据)怎么加才能过滤无效结果。
项目对比了 Pinecone、Chroma、Weaviate 等主流向量数据库的使用差异,帮助读者根据数据规模、延迟要求、预算选择合适的方案。
Notebook 05 是技术密度最高的之一,涵盖了当前最流行的几种高级检索方法:
这是项目的第一个 Agent 化尝试。传统 RAG 是"查了就用",而 Self-Reflection RAG 加入了自我评估环节:检索到的文档质量够不够好?如果不够,是重新检索、扩大范围还是调整策略?
项目用 Langchain 的自省链(Self-Reflective Chain),让模型在生成回答之前先评估"我已经找到了足够的背景信息吗",如果评估结果为"不够",就触发补充检索。这大幅提升了复杂问题(需要综合多份文档)的回答质量。
Notebook 07 把 RAG 推向了真正的 Agent 架构。不再是固定的数据流,而是让 Agent 自己决定下一步该做什么:查文档、执行代码、还是直接回答?
项目展示了如何用 Langchain 的 ReAct Agent(Reasoning + Acting)框架,构建一个能够自主判断"需要查哪个数据库、查几次、什么时候停止"的 RAG Agent。这在需要跨多个数据源进行复杂推理的场景(比如"帮我对比竞品A和竞品B的定价策略")中尤为强大。
在 Agentic RAG 的基础上,Notebook 08 加入了自适应决策机制:Agent 不仅能决定"查什么",还能根据中间结果动态调整策略——发现某个方向信息充足就停止检索,发现知识不足就扩大搜索范围。
这是最接近生产级 RAG 系统的实现,展示了如何在真实业务场景中平衡"回答质量"和"查询成本/延迟"。
Notebook 09 专门处理一个实际场景:LLM 生成的回答可能包含错误信息,如何在生成后自动检测并纠正?
项目实现了一套完整 pipeline:生成回答 → 用 LLM 评估回答是否与检索到的文档一致 → 如果发现矛盾,自动触发纠错检索 → 生成修正后的回答。这解决了 RAG 系统中"检索对了但生成错了"的最后一公里问题。
最后一个 Notebook 将整个系统"去云端化"——用 Meta 的 LLAMA 3 8B 模型(Qwen/Llama.cpp 量化版可在消费级 GPU 上运行)替代 OpenAI GPT API,完全在本地运行。
这对于数据隐私要求极高的场景(医疗、金融、法律)意义重大:用户数据不会离开本地环境,成本也比调用 GPT API 低得多。项目展示了如何用 Ollama 或 LM Studio 在本地跑起 LLAMA 3,然后接入前面的 RAG Agent 链路。
适合的人群:
不太适合的人群:
环境准备:
第一,这是教学代码,不是生产代码。 项目中的 Agent 逻辑、自反思机制虽然在 Notebook 里跑得通,但直接搬到生产环境还需要大量的工程化工作:错误处理、超时控制、并发管理、日志追踪等。切勿把这里的代码直接用于生产。
第二,Langchain 版本迭代快,代码可能过时。 Langchain 2023-2024 年经历了多次重大 API 变更,部分 Notebook 中的链式调用写法在新版本中可能需要调整。读者需要有一定的代码适配能力。
第三,向量数据库选型过于理想化。 项目主要用 Pinecone 和 Chroma 演示,但在真实生产环境中,Pinecone 的成本、Chroma 的稳定性、Weaviate 的复杂性都是需要权衡的因素。
第四,缺少端到端评估体系。 10 个 Notebook 几乎都在讲"怎么查",但很少量化评估"查得好不好"。生产级 RAG 系统需要 RAGAS、Trulens 等评估框架来持续监控质量,项目没有覆盖这一点。
Advanced RAG 在 GitHub 上获得了 481 Stars(数据采集时),对于一个纯教学类仓库来说,这个数字说明了两件事:一是 RAG 技术学习需求旺盛,市场上缺乏高质量的进阶教程;二是 Langchain 生态已经足够成熟,开发者愿意围绕它构建学习内容。
从行业角度看,RAG 技术正在从"能用"向"用好"演进。2024 年初,AWS、Bedrock、Kong 等大厂纷纷推出 RAG 优化工具(如 Contextual Retrieval、Corrective RAG 框架),整个领域的技术迭代速度非常快。这个项目恰好处于这个技术浪潮的前沿位置——它不只教你搭 RAG,还教你搭"更好的 RAG"。
对于 AI 开发者而言,掌握 Advanced RAG 的各项技术,意味着你能够独立完成从需求分析、架构设计到代码实现的完整链路。对于 AI 爱好者而言,这些 Notebook 背后的设计思想——如何让 AI 更好地理解你的问题、如何找到最相关的信息、如何评估回答质量——同样具有很高的认知价值。
本报告基于 GitHub 仓库 NisaarAgharia/Advanced_RAG 的代码结构和 README 文档生成。