ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

RAG_Techniques 高级检索增强生成实战图谱:46 个可运行 Notebook 从基础检索到生产级 RAG 架构的系统指南

RAG_Techniques 高级检索增强生成实战图谱:46 个可运行 Notebook 从基础检索到生产级 RAG 架构的系统指南 示例工程【免费下载链接】RAG_TechniquesThis repository showcases various advanced techniques for Retrieval-Augmented Generation (RAG) systems. Each technique has a detailed notebook tutorial.项目地址https://gitcode.com/GitHub_Trending/ra/RAG_Techniques点击查看免费下载本指南基于开源仓库 RAG_Techniques 的 README.md 编写系统梳理了该仓库收录的 46 个可运行 Jupyter Notebook 与 21 个可直接执行的 Python 脚本覆盖从基础 RAG 管道、分块与索引优化、查询改写到多模态检索、图 RAG、自纠正架构与全链路评估的完整技术栈。读者将能按图索骥定位每一项技术的概览、实现要点与配套源码文件并借助共享工具函数与测试基础设施在自己的项目中快速复现与扩展这些进阶方案。一、仓库定位与整体结构RAGRetrieval-Augmented Generation检索增强生成通过将信息检索与生成式 AI 结合为 LLM 提供外部知识支撑从而产出更准确、更具上下文相关性的回答。RAG_Techniques 正是一个围绕该主题的教学型仓库它不是一个提供公共 API 的库而是以每项技术一个自包含 Notebook的形式完整呈现技术直觉 → 完整实现 → 出处文献的闭环。仓库作者在 README.md 中将其定位为从 RAG 原型到生产环境的社区驱动资源库。仓库顶层结构如下目录/文件职责all_rag_techniques/41 个技术 Notebook按分类组织含 索引 READMEevaluation/5 个评估专项 Notebook 与 evalute_rag.py 评估脚本all_rag_techniques_runnable_scripts/21 个可直接运行的 Python 脚本是 Notebook 的可运行版helper_functions.py跨 Notebook 共享的加载器、分块器、检索与重试工具data/演示数据集PDF、CSV、TXT、JSONtests/pytest 测试基建导入检查与共享 fixturellms.txt、AGENTS.md、CONTRIBUTING.md、LICENSE面向 LLM/Agent 的仓库索引、AI 编码约定、贡献指南与自定义非商用许可需要说明README 中标注42 个可运行 Notebook且持续增长按当前仓库实际盘点all_rag_techniques/ 下有 41 个技术 Notebookevaluation/ 下有 5 个评估 Notebook合计 46 个.ipynb同时配套 21 个_runnable_scripts脚本。每项技术均配有独立的 Notebook 教程与文字版实现讲解。二、快速开始克隆仓库并运行第一个 RAG 管道2.1 克隆与导航git clone https://gitcode.com/GitHub_Trending/ra/RAG_Techniques.git克隆后可直接打开 all_rag_techniques/simple_rag.ipynb 按 Notebook 内的说明逐单元执行也可运行配套的脚本版 simple_rag.py。绝大多数方案依赖 OpenAI 接口如gpt-4-turbo、text-embedding-3运行前需在.env中配置OPENAI_API_KEY脚本内部通过load_dotenv()与os.environ[OPENAI_API_KEY]完成加载。2.2 Simple RAG 脚本的命令行参数simple_rag.py 封装了最基础的加载 PDF → 分块 → 向量化 → 检索全流程其parse_args()simple_rag.py暴露了以下可调参数参数默认值含义--path../data/Understanding_Climate_Change.pdf待编码的 PDF 路径--chunk_size1000每个文本块的目标字符数--chunk_overlap200相邻分块间的重叠字符数--n_retrieved2每次查询返回的块数top-k--queryWhat is the main cause of climate change?测试检索的查询语句--evaluateFalse布尔开关是否追加运行 evalute_rag.py 的评估流程对应示例cd all_rag_techniques_runnable_scripts python simple_rag.py --path ../data/Understanding_Climate_Change.pdf --chunk_size 800 --chunk_overlap 150 --n_retrieved 3 --query What is the main cause of climate change? --evaluate脚本中的SimpleRAG类simple_rag.py会分别计时分块编码与检索两个阶段并打印耗时便于直观对比不同分块参数下的性能。validate_args()还会对chunk_size、chunk_overlap、n_retrieved做正数校验防止非法输入。三、共享工具箱helper_functions.py 源码级解读绝大多数 Notebook 都会from helper_functions import *该文件helper_functions.py是整个仓库的公共地基主要包括encode_pdf(path, chunk_size1000, chunk_overlap200)helper_functions.py用PyPDFLoader加载 PDF经RecursiveCharacterTextSplitter递归字符分块再用OpenAIEmbeddings生成向量并存入 FAISS 向量库。默认分块 1000、重叠 200是仓库中几乎所有管道的主干分块策略。encode_from_string(content, ...)helper_functions.py对字符串内容做同样处理并为每个块注入relevance_score1.0元数据对非法输入会抛ValueError编码失败则包装为RuntimeError。retrieve_context_per_question(question, retriever)helper_functions.py调用 retriever 取回相关文档返回块内容列表是查询 → 上下文的标准桥接函数。结构化回答链路helper_functions.py基于 Pydantic 的QuestionAnswerFromContext定义输出结构配合仅依据给定上下文作答的提示模板通过prompt | llm.with_structured_output(...)组成链式问答管道。bm25_retrieval(bm25, cleaned_texts, query, k5)helper_functions.py基于rank_bm25的关键词检索用于与向量检索做融合Fusion Retrieval时提供稀疏信号。指数退避重试helper_functions.py针对 OpenAIRateLimitError实现带 jitter 的指数退避(2^attempt) random默认最多重试 5 次是长时间批量索引时的稳定保障。多供应商抽象helper_functions.pyEmbeddingProvideropenai/cohere/bedrock与ModelProvideropenai/groq/anthropic/bedrock两个枚举以及get_langchain_embedding_provider()工厂函数让各 Notebook 可平滑切换嵌入供应商。四、技术全景按类别逐项解析 37 项高级 RAG 技术README 将全部技术按基础 → 查询 → 上下文 → 检索 → 迭代 → 评估 → 记忆 → 可解释 → 架构的进阶路径组织本节逐项继承其 Overview 与 Implementation 要点并结合仓库源码深化。4.1 基础 RAGFoundationalSimple RAGLangChain 与 LlamaIndex 双实现完整的加载、分块、嵌入、检索、生成基线管道。LangChain 版见 simple_rag.ipynbLlamaIndex 版见 simple_rag_with_llamaindex.ipynb脚本版为 simple_rag.py。适合新手建立端到端直觉。Simple CSV RAG将表格行转换为带标签的一行一句文本后按语义检索。典型场景是问哪些客户在南美国家时即使原文不含南美字样也能通过语义空间命中智利客户记录。LangChain 版 simple_csv_rag.ipynbLlamaIndex 版 simple_csv_rag_with_llamaindex.ipynb演示数据见 data/customers-100.csv。Reliable RAGreliable_rag.ipynb在 Simple RAG 之上加入校验与精炼检查检索文档与问题的相关性并高亮实际用于回答的文档片段让答案是否来自文档可被读者核验。对应了三个检查点的思路——在上下文进入前拦截坏块在答案输出前拦截无证据支撑的论断。Choose Chunk Size分块大小选择choose_chunk_size.ipynb、choose_chunk_size.py固定分块大小需在上下文完整性与检索效率之间权衡本技术通过多组实验对比不同 chunk_size 下的检索质量帮助为特定用例找到最优值。仓库默认参数1000/200即为可复现的起点。Proposition Chunking命题分块proposition_chunking.ipynb把段落改写为独立、完整、自洽的命题语句规避段落嵌入是多种语义的混合体、指向不够明确的问题。实现含两步命题生成LLM 结合定制提示词从文档块中抽取事实性陈述质量把关对生成的命题按准确性、清晰度、完整性、简洁性进行分级评分过滤低质命题。Simple RAG with JSONJSON 文档 RAGjson_rag.ipynb数据加载与抽取加载含多字段的 JSON 条目合并最相关的文本字段生成嵌入检索基于用户查询召回最相关的 JSON 条目。配套样例数据见 data/q_a.json。4.2 查询增强Query EnhancementQuery Transformations查询变换query_transformations.ipynb、query_transformations.py当问题措辞与文档措辞无法对齐时与其修索引不如修问题。三种变换分别为Query Rewriting改写将原始问题改写得更具体、更易命中相关信息Step-back Prompting退步提问生成更宽泛的背景问题先召回全局上下文Sub-query Decomposition子查询分解把复杂问题拆成 2~4 个可独立回答的子问题再汇总。可运行脚本RAGQueryProcessorquery_transformations.py给出完整实现三个独立的ChatOpenAI(temperature0, model_namegpt-4o)实例分别负责改写、退步、分解各自绑定专用提示模板decompose_query()还会过滤掉Sub-queries:前缀行并把子问题拆成列表。HyDEHypothetical Document Embedding假设文档嵌入HyDe_Hypothetical_Document_Embedding.ipynb、HyDe_Hypothetical_Document_Embedding.py短问题与长文档在嵌入空间中即便语义相同也相距甚远HyDE 的做法是先生成一段假设性答案不必正确再对这段答案做嵌入去检索从而拉近查询与文档的距离。其代价是查询期需要额外 LLM 调用。HyPEHypothetical Prompt Embeddings假设提示嵌入HyPE_Hypothetical_Prompt_Embeddings.ipynb、HyPE_Hypothetical_Prompt_Embeddings.pyHyDE 的索引期对调版本——在索引阶段预计算每个块的多个假设查询检索时不做任何运行时合成答案将任务转换为问题-问题匹配。仓库说明引自其 SSRN 预印本给出上下文精度最高提升 42 个百分点、主张召回率最高提升 45 个百分点且因查询期零 LLM 调用而更快更省。4.3 上下文与内容增强Context and Content EnrichmentContextual Chunk Headers上下文块头contextual_chunk_headers.ipynb块脱离原文档后常因代词丢失语境而排名垫底。CCH 的做法是构造文档级与章节级上下文在嵌入前把块头前缀到每个块上显著提升检索准确性。仓库指出该技术对扁平化、无章节结构的知识库收益有限需结合场景评估。Relevant Segment Extraction相关段提取relevant_segment_extraction.ipynb检索后处理——分析最相关块动态拼接更长的多块文本段为 LLM 提供更完整的上下文而非孤立块。Context Enrichment Window上下文窗口增强LangChain 版 context_enrichment_window_around_chunk.ipynb、LlamaIndex 版 context_enrichment_window_around_chunk_with_llamaindex.ipynb、脚本 context_enrichment_window_around_chunk.py以句子为最小嵌入单元命中目标句后同时取回原文中其前后相邻句兼顾检索粒度与上下文连续性。Semantic Chunking语义分块semantic_chunking.ipynb、semantic_chunking.py用 NLP 技术识别主题边界按语义连贯性而非固定字符数划分文档产出更有意义的检索单元。Contextual Compression上下文压缩contextual_compression.ipynb、contextual_compression.py用 LLM 对召回块做压缩/摘要仅保留与查询相关的关键信息降低送入生成器的 token 噪音。Document Augmentation文档增强document_augmentation.ipynb、document_augmentation.py用 LLM 为每个文本片段生成可能被问到的所有问题与原文一并入库显著提高相关文档被召回的概率。4.4 高级检索方法Advanced RetrievalFusion Retrieval融合检索LangChain fusion_retrieval.ipynb、LlamaIndex fusion_retrieval_with_llamaindex.ipynb、脚本 fusion_retrieval.py关键词BM25见 helper_functions.py与向量检索的结果做融合兼顾词面匹配与语义匹配。Intelligent Reranking智能重排LangChain reranking.ipynb、LlamaIndex reranking_with_llamaindex.ipynb、脚本 reranking.py三种打分路线LLM-based Scoring用语言模型逐块打分相关性Cross-Encoder Models把查询与文档拼接后联合编码做相似度打分Metadata-enhanced Ranking把元数据日期、来源等纳入打分。Multi-faceted Filtering多面过滤multi_faceted_filtering.ipynb、multi_faceted_filtering.py四类过滤手段叠加——按日期/来源/作者/文档类型的元数据过滤、按相似度阈值的分数门槛、按内容关键词的内容过滤、以及剔除近重复条目的多样性过滤。Hierarchical Indices层级索引hierarchical_indices.ipynb、hierarchical_indices.py双层结构——先检索文档摘要层再下钻到摘要命中的详细块层两层元数据均指向同一处原文。Dartboard Retrieval飞镖板检索dartboard.ipynb把相关性与多样性合并为单一评分函数并直接优化Relevant Information Gain仓库附 POC 证明在稠密知识库中简单 RAG 表现劣于 Dartboard 检索。Multi-modal Retrieval多模态检索两条技术路线Multimedia Captioning多媒体字幕化multi_model_rag_with_captioning.ipynb将 PDF、PPT 等多媒体内容生成文本描述后与文本一起入向量库统一检索ColPali 方案multi_model_rag_with_colpali.ipynb不做字幕化把文档转为图像检索最相关图像后交给视觉大模型理解。4.5 迭代与自适应技术Iterative and AdaptiveRetrieval with Feedback Loop反馈闭环检索retrieval_with_feedback_loop.ipynb、retrieval_with_feedback_loop.py收集用户对检索结果与生成答案的相关性反馈用于微调检索与排序模型实现越用越准。Adaptive Retrieval自适应检索adaptive_retrieval.ipynb、adaptive_retrieval.py先把查询按类型分类再为每类配置专属检索策略并纳入用户上下文与偏好。4.6 评估EvaluationREADME 单列四个评估 Notebook仓库还提供了统一的评估脚本 evalute_rag.py其中create_deep_eval_test_cases()evalute_rag.py用deepeval的LLMTestCase组装问题-标准答案-生成答案-检索上下文测试对三类内置指标evalute_rag.py为基于GEval的Correctness、阈值 0.7 的Faithfulness忠实度与阈值 1 的ContextualRelevancy上下文相关性。evaluate_rag()evalute_rag.py还会自动生成测试问题并让 LLM 按 1-5 分评估检索结果的相关性、完整性、简洁性。四个专项 NotebookDeepEval 评估evaluation_deep_eval.ipynb覆盖正确性、忠实度、上下文相关性等多个指标并构造测试用例。GroUSE 评估evaluation_grouse.ipynb用grouse包以 GPT-4 在 GroUSE 框架的 6 项指标上评估 grounded LLM 生成并可用单元测试元评估自定义的 Llama 3.1 405B 评判器。端到端 RAG 评估end-2-end_rag_evaluation.ipynb完整教程覆盖评估标准选择、LLM-as-a-judge 指标、RAGAS 集成与整条评估流水线组装基于 RAG-12000 数据集自建完整性、相关性、幻觉检测自定义指标。Open-RAG-Evalopen-rag-eval-example.ipynb演示开源open-rag-eval库使用 UMBRELA 打分、AutoNuggetizer 与引用/幻觉检测并在 FIQA 金融数据集上跑多指标评测。4.7 记忆增强与可解释性Memory ExplainabilityMemoRAG记忆增强检索memorag.ipynb从零实现的记忆增强 RAG含键值对抽取、替代查询生成与多查询检索核心是构建带 FAISS 检索的完整MemoryStore并与标准 RAG 做对比评估。仓库另附 data/wealth_retrieved_passages_from_original_memorag.csv 作为对照数据。Explainable Retrieval可解释检索explainable_retrieval.ipynb、explainable_retrieval.py解释为什么召回这些信息、它们与查询如何相关提升用户信任并辅助系统迭代。4.8 高级架构Advanced ArchitecturesAgentic RAG with Contextual AIAgentic_RAG.ipynb面向金融文档分析的 Agentic RAG 生产级管道组件包括支持复杂表格/图表/多页文档的视觉文档解析器、具备指令跟随能力的重排器处理相互冲突的信息、面向 RAG 场景抑制幻觉的Grounded Language Model (GLM)以及用于评估优化 RAG 性能的自然语言单元测试框架LMUnit。Graph RAG with Milvusgraphrag_with_milvus_vectordb.ipynb在 Milvus 中分别存储文本段落与主-谓-宾关系三元组两个集合双路检索后由 LLM 按相关性重排关系再据最相关关系召回最终段落显著提升多跳复杂问题的表现。Knowledge Graph IntegrationLangChain 版 Graph RAGgraph_rag.ipynb、graph_rag.py从知识图谱中检索与查询相关的实体及其关系把结构化数据与非结构化文本结合产出信息更丰富的回答。Microsoft GraphRAGMicrosoft_GraphRag.ipynb开源版微软 GraphRAG——从文本单元抽取实体与关系自底向上生成每个社区及其成员的摘要。RAPTOR递归抽象树状检索raptor.ipynb、raptor.py用抽象式摘要递归处理文档、按树形组织信息支持多粒度层级的上下文检索。Self-RAGself_rag.ipynb、self_rag.py融合检索式与生成式自适应决定是否检索、如何利用检索结果。实现为多步流程检索决策 → 文档检索 → 相关性评估 → 响应生成 → 支撑度评估 → 效用评估。Corrective RAGCRAGcrag.ipynb、crag.py动态评估并纠正检索过程整合检索评估器、知识精炼、网页搜索查询改写器与响应生成器依据相关性分数自适应切换信息来源必要时多源合并。Local Graph RAG with Verifiable Attributiongraph_rag_local_attribution.ipynb完全本地化的隐私优先方案NetworkX Ollama从文档抽取实体关系构建带完整溯源的知识图谱把向量相似度检索入口点与图遍历多跳扩展结合生成带内联引用的答案——每个主张都可回溯到源文档的句子级出处优于向量 RAG 的块级出处。LightRAGlight_rag.ipynb、light_rag.py简单快速的图 RAG——逐块抽取实体关系并入合并后的知识图谱将实体/关系档案嵌入两个向量索引查询时拆分低层与高层关键词再取回匹配实体与关系及其源块构建上下文支持低成本增量更新。4.9 特殊高级技术SpecialSophisticated Controllable Agent for Complex RAG Tasks仓库外项目见 README.md 描述面向纯语义相似度检索无法解决的复杂问题以确定性图作为大脑构建高度可控的自治 Agent多步流程包括问题匿名化 → 高层规划 → 任务分解 → 自适应信息检索与问答 → 持续重规划 → 严格答案校验保证回答有据可依。五、数据资产、测试与工程约定5.1 演示数据data/ 目录为各 Notebook 提供真实可复现的输入气候变化主题 PDFUnderstanding_Climate_Change.pdf、客户表 CSVcustomers-100.csv、Nike 2023 年报文本nike_2023_annual_report.txt以及多个 QA JSON 文件q_a.json 等。5.2 测试基建tests/conftest.py 提供了跨会话共享的 pytest fixtureChatOpenAIgpt-4-turbo-preview、temperature0、OpenAIEmbeddings、CharacterTextSplitter1000/200以及基于示例文本构建的 FAISSvector_store与retrieverk2并支持--exclude参数按文件名排除指定 Notebook/脚本便于增量验证。配合 tests/test_imports.py 可批量校验 41 个 Notebook 与 21 个脚本的导入健康度。5.3 面向 Agent/LLM 的工程约定仓库同时提供 AGENTS.md面向 AI 编码 Agent 的仓库约定与 llms.txt面向 LLM 的标准化索引并建议引用时参考 CITATION.cff。六、贡献方式与许可说明欢迎社区贡献新技术或改进Fork → 新建特性分支 → 提交 → 推送 → 发起 Pull Request 即可详细流程与 PR 清单见 CONTRIBUTING.md。需要特别留意的是本仓库采用自定义非商用许可见 LICENSE任何商业复用前务必先阅读许可全文。综上RAG_Techniques 提供了一个从直觉到代码再到出处文献完整对齐的高级 RAG 学习与实践体系先以 README.md 的 37 项技术清单做全局索引再借 helper_functions.py 与all_rag_techniques_runnable_scripts/中的可运行脚本快速落地最后通过 evaluation/ 与 tests/ 完成效果验证即可按原型 → 生产路径逐步构建更准确、更可靠的检索增强系统。赞分享示例工程【免费下载链接】RAG_TechniquesThis repository showcases various advanced techniques for Retrieval-Augmented Generation (RAG) systems. Each technique has a detailed notebook tutorial.项目地址https://gitcode.com/GitHub_Trending/ra/RAG_Techniques点击查看免费下载相关推荐构建企业级RAG系统基于Milvus的检索增强生成实践构建企业级RAG系统基于Milvus的检索增强生成实践 本文深入探讨了基于Milvus向量数据库构建企业级RAG检索增强生成系统的完整技术方案。文章详细介数据库向量数据库分布式数据库后端如何永久保存微信聊天记录WeChatMsg一站式数据管理解决方案如何永久保存微信聊天记录WeChatMsg一站式数据管理解决方案 你是否曾担心珍贵的微信聊天记录会因手机丢失而永远消失那些与亲友的温馨对话、重要的工作沟通、基于 PocketFlow 的百行级 RAG 检索增强生成实战从文档索引到 LLM 问答基于 PocketFlow 的百行级 RAG 检索增强生成实战从文档索引到 LLM 问答 导读 本文以仓库 cookbook/pocketflow rag h人工智能大模型AI Agent工作流自动化RAG上一篇解密ECAPA-TDNN核心原理通道注意力机制如何提升说话人特征提取能力下一篇Fresh 框架仓库开发指南Monorepo 结构、架构原理与贡献工作流Deno Preact创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表