RAG入门-让大模型学会“开卷考试“ 一、大模型的三大知识痛点1.1 痛点一知识效率低你以为大模型读了那么多书应该记得很牢实际上模型对知识的记忆效率惊人地低发现 数据记住一个知识点需要的曝光次数 约1000次GPT-4 Turbo本科知识测试准确率 仅73.6%类比大模型就像一个记忆力很差的学生读了100遍才记住一个知识点而且还会记错。1.2 痛点二知识是静态的大模型的知识来自预训练数据有一个致命问题时效性。举例问“2024年世界杯冠军是谁”GPT-4训练数据截止2023年“我无法回答这个问题…”模型不知道实时新闻最新数据训练后发生的事件1.3 痛点三幻觉问题严重最可怕的问题幻觉Hallucination模型会编造看似合理但完全错误的内容真实案例问“请介绍一下《星际穿越》这部电影”模型错误回答“这部电影由詹姆斯·卡梅隆执导…”实际克里斯托弗·诺兰执导模型自信地说出错误信息用户很难辨别二、RAG从闭卷考试到开卷考试2.1 什么是RAGRAGRetrieval-Augmented Generation检索增强生成的核心思想不要让模型死记硬背而是让它现场查资料类比对比类型 比喻 特点传统LLM 闭卷考试 只能依赖记忆可能忘、可能错RAG 开卷考试 可以查资料答案有据可查2.2 RAG的工作原理基本流程image数学表示f: Q × D → AQ 用户问题QueryD 数据源DocumentsA 答案Answer2.3 RAG解决了什么问题 RAG如何解决知识效率低 不需要记住直接检索知识过时 数据库可以实时更新幻觉严重 答案基于真实文档可溯源三、RAG的任务分级3.1 四个难度层级研究人员把RAG任务分为四个层级层级 名称 特点 例子L1 显性事实查询 答案直接在文档中 “复旦大学有几个校区”L2 隐性事实查询 需要推理信息分散在多个文档 “复旦计算机学院和法学院在一个校区吗”L3 可解释推理查询 需要领域推理过程 “根据症状判断可能的疾病”L4 隐性推理查询 缺乏明确推理指导需要深层专业知识 “国际经济形势如何影响公司发展”3.2 难度递增L1最简单问题“公司成立于哪年”文档“公司成立于2010年…”回答“2010年”直接找到L2需要聚合问题“复旦计算机学院和法学院在一个校区吗”文档A“计算机学院在张江校区”文档B“法学院在邯郸校区”回答“不在一个校区计算机学院在张江法学院在邯郸”L3需要推理问题“患者发热、咳嗽、乏力可能是什么病”文档A“流感症状包括发热、咳嗽…”文档B“新冠症状包括发热、咳嗽、乏力…”回答“可能是流感或新冠建议就医确诊”L4最难问题“当前经济形势如何影响公司发展”需要宏观经济知识 行业分析 公司具体情况回答需要深层专业知识可能涉及多步推理四、RAG系统的六大模块4.1 模块概览image4.2 模块一索引模块作用把文档划分成可管理的片段Chunk为什么需要切分文档太长直接检索效率低切分后检索更精准切分方法方法 说明 优点固定长度切分 每块固定字数 简单高效滑动窗口 相邻块有重叠 保持语义连贯语义切分 根据内容逻辑划分 质量高小到大 检索用小块生成用大块 兼顾精准和丰富4.3 模块二检索前优化作用让用户查询更精准更容易找到相关文档优化方法查询扩展原问题“Python如何读取文件”扩展后“Python文件读取方法”“Python open函数用法”“Python读取txt文件”查询改写原问题模糊“那个东西怎么弄”改写后“如何在Python中读取文本文件”3. HyDE方法有趣原问题“什么是机器学习”先让模型脑补一个假设答案然后拿这个假设答案去检索文档为什么因为答案和答案比问题和答案语义更相似4.4 模块三检索模块作用从知识库中找到相关文档三种检索技术类型 原理 优点 缺点稀疏检索 统计关键词匹配TF-IDF/BM25 快、精确词匹配 不理解语义稠密检索 向量语义匹配 深层语义理解 计算成本高混合检索 结合两者 效率与效果兼顾 实现复杂稀疏检索示例文档A“人工智能是一门重要技术”文档B“机器学习是人工智能核心技术”词汇表[“人工智能”, “机器学习”, “技术”]查询“人工智能技术”向量[1, 0, 1]文档A向量[1, 0, 1] → 完全匹配文档B向量[1, 1, 1] → 匹配度较高稠密检索原理查询向量[0.2, 0.8, -0.3, …]语义向量文档A向量[0.21, 0.79, -0.28, …]文档B向量[0.1, 0.5, 0.3, …]计算相似度A比B更相似即使文档A没有机器学习这个词但因为语义接近也能检索出来4.5 模块四检索后优化作用精炼检索结果提升质量为什么要优化检索结果可能包含噪声不相关内容模型对长文本有中间遗忘问题上下文窗口有限优化方法重排序检索结果[文档3, 文档1, 文档5, 文档2]按相似度排序用更精细的模型重新排序[文档1, 文档2, 文档3, 文档5]把最相关的放前面2. 内容压缩原始文档1000字“人工智能是…发展历程…应用领域…”压缩后200字“人工智能是模拟人类智能的技术应用包括…”3. MMR算法在相关性和新颖性之间平衡避免返回内容都太相似。4.6 模块五生成模块作用基于检索结果生成答案核心职责整合多个文档片段控制幻觉不编造忠实于检索内容4.7 模块六编排模块作用智能调度决定流程走向功能路由根据问题类型选择不同处理流程调度动态调整检索和生成融合整合多个分支的结果五、四种设计模式5.1 线性模式最简单image适用简单直接的查询任务5.2 条件模式智能路由image例子医学问题 → 选择可靠来源 严格约束闲聊问题 → 允许创意回答 宽松约束5.3 分支模式并行处理image优点提高全面性和多样性5.4 循环模式迭代优化image适用需要多轮完善的复杂问题六、RAG的评估体系6.1 评估的挑战挑战 说明检索质量难衡量 如何判断找到的文档是否相关生成质量主观 开放式问题没有唯一答案整体协作复杂 检索和生成如何配合6.2 评估指标检索指标指标 说明MRR 平均倒数排名最相关文档排第几Recallk 前k个结果中找到多少相关文档Precision 检索结果中有多少是真正相关的生成指标指标 说明事实准确率 回答是否符合检索文档相关性 回答是否针对问题流畅性 语言是否自然连贯七、RAG的应用场景7.1 企业知识库问答场景企业内部文档、手册、政策查询价值员工快速找到答案减少重复咨询答案有据可查7.2 智能客服场景产品FAQ、售后支持价值自动回答常见问题减少人工客服成本答案准确可溯源7.3 法律/医疗专业问答场景法律条文查询、医学文献检索价值专业领域知识支持减少错误风险提供引用来源7.4 个人知识管理场景个人笔记、文档检索工具Obsidian RAG插件、Notion AI等八、RAG工具推荐8.1 开源框架工具 特点 适用场景LangChain 灵活、组件丰富 自定义RAG系统LlamaIndex 专注数据索引 文档处理Haystack 生产级框架 企业应用8.2 向量数据库数据库 特点Milvus 高性能、开源Pinecone 云服务、易用Chroma 轻量级、嵌入简单Weaviate 支持混合检索8.3 快速实践方案最简单的RAG用LangChain实现简单RAGfrom langchain.vectorstores import Chromafrom langchain.embeddings import OpenAIEmbeddingsfrom langchain.llms import OpenAI1. 加载文档documents load_documents(“my_docs/”)2. 向量化存储vectorstore Chroma.from_documents(documents,OpenAIEmbeddings())3. 创建检索器retriever vectorstore.as_retriever()4. 创建RAG链qa RetrievalQA.from_chain_type(OpenAI(),retrieverretriever)5. 查询answer qa.run(“我的问题是什么”)九、RAG的局限与挑战9.1 检索质量依赖数据如果知识库数据质量差RAG效果也差。常见问题数据不完整数据有错误数据格式不规范9.2 检索效率问题大规模知识库检索可能很慢。解决使用高效向量数据库优化索引结构分层检索策略9.3 多模态扩展困难目前RAG主要处理文本图片、视频检索还不成熟。十、总结RAG的价值RAG让大模型从死记硬背变成开卷考试对比 传统LLM RAG增强LLM知识来源 模型参数 外部知识库更新方式 重新训练 更新数据库答案可信度 可能幻觉 有据可查适用场景 通用知识 专业/实时知识一句话总结