一、大模型的三大"知识痛点"

1.1 痛点一:知识效率低

你以为大模型读了那么多书,应该记得很牢?

实际上,模型对知识的记忆效率惊人地低:

发现数据
记住一个知识点需要的曝光次数约1000次!
GPT-4 Turbo本科知识测试准确率仅73.6%

类比

大模型就像一个"记忆力很差的学生",读了100遍才记住一个知识点,而且还会记错。

1.2 痛点二:知识是静态的

大模型的知识来自预训练数据,有一个致命问题:时效性

举例


问:"2024年世界杯冠军是谁?"
GPT-4(训练数据截止2023年):"我无法回答这个问题..."

模型不知道:

  • 实时新闻
  • 最新数据
  • 训练后发生的事件

1.3 痛点三:幻觉问题严重

最可怕的问题:幻觉(Hallucination)

模型会编造看似合理但完全错误的内容

真实案例


问:"请介绍一下《星际穿越》这部电影"
模型错误回答:"这部电影由詹姆斯·卡梅隆执导..."
实际:克里斯托弗·诺兰执导!

模型自信地说出错误信息,用户很难辨别!


二、RAG:从闭卷考试到开卷考试

2.1 什么是RAG?

RAG(Retrieval-Augmented Generation,检索增强生成)的核心思想:

不要让模型死记硬背,而是让它"现场查资料"!

类比对比

类型比喻特点
传统LLM闭卷考试只能依赖记忆,可能忘、可能错
RAG开卷考试可以查资料,答案有据可查

2.2 RAG的工作原理

基本流程

image

数学表示


f: Q × D → A
Q = 用户问题(Query)
D = 数据源(Documents)
A = 答案(Answer)

2.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 模块概览

image

4.2 模块一:索引模块

作用:把文档划分成可管理的片段(Chunk)

为什么需要切分?

  • 文档太长,直接检索效率低
  • 切分后检索更精准

切分方法

方法说明优点
固定长度切分每块固定字数简单高效
滑动窗口相邻块有重叠保持语义连贯
语义切分根据内容逻辑划分质量高
小到大检索用小块,生成用大块兼顾精准和丰富

4.3 模块二:检索前优化

作用:让用户查询更精准,更容易找到相关文档

优化方法

1. 查询扩展


原问题:"Python如何读取文件"
扩展后:
- "Python文件读取方法"
- "Python open函数用法"
- "Python读取txt文件"

2. 查询改写


原问题(模糊):"那个东西怎么弄"
改写后:"如何在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 模块四:检索后优化

作用:精炼检索结果,提升质量

为什么要优化?

  • 检索结果可能包含噪声(不相关内容)
  • 模型对长文本有"中间遗忘"问题
  • 上下文窗口有限

优化方法

1. 重排序


检索结果:[文档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平均倒数排名(最相关文档排第几)
Recall@k前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实现简单RAG
from langchain.vectorstores import Chroma
from langchain.embeddings import OpenAIEmbeddings
from langchain.llms import OpenAI
# 1. 加载文档
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(),
retriever=retriever
)
# 5. 查询
answer = qa.run("我的问题是什么?")

九、RAG的局限与挑战

9.1 检索质量依赖数据

如果知识库数据质量差,RAG效果也差。

常见问题

  • 数据不完整
  • 数据有错误
  • 数据格式不规范

9.2 检索效率问题

大规模知识库检索可能很慢。

解决

  • 使用高效向量数据库
  • 优化索引结构
  • 分层检索策略

9.3 多模态扩展困难

目前RAG主要处理文本,图片、视频检索还不成熟。


十、总结:RAG的价值

RAG让大模型从"死记硬背"变成"开卷考试":

对比传统LLMRAG增强LLM
知识来源模型参数外部知识库
更新方式重新训练更新数据库
答案可信度可能幻觉有据可查
适用场景通用知识专业/实时知识

更多推荐