📖 本章预览
本章为预览版本,展示部分核心内容。完整内容包含详细源码解析、实战代码和面试要点,加入知识星球即可解锁全部章节。
第9章 RAG 入门:让 AI 不再胡说八道
9.1 RAG 原理
9.1.1 为什么 LLM 需要外部知识
LLM 的知识有三个致命缺陷:
- 时效性:训练数据有截止日期,不知道最新信息
- 私有性:不知道你公司的内部文档、数据库内容
- 幻觉:对不确定的问题会"一本正经地胡说八道"
RAG(Retrieval-Augmented Generation)的解决思路:先从外部知识库中检索相关内容,再把检索结果作为上下文喂给 LLM,让它基于真实资料回答。
传统 LLM: 用户问题 → LLM → 回答(可能有幻觉)
RAG 模式: 用户问题 → 检索知识库 → 相关文档 + 用户问题 → LLM → 回答(基于事实)
9.1.2 深入理解:RAG 为什么能解决幻觉
很多人以为 RAG 就是"给 LLM 喂资料",但背后的原理比这深一层。
幻觉的根本原因:LLM 是概率模型,它生成的每个 Token 都是"最可能的下一个词"。
当它不确定答案时,它不会说"我不知道",而是会生成一个"看起来合理但实际错误"的回答。
这就像一个学生考试时不会的题也要编一个答案——它宁可编也不留空。
RAG 解决幻觉的机制:
1. 缩小生成空间:把相关文档塞进 Prompt 后,LLM 的注意力被"锚定"在这些文档上,
生成的内容大概率来自文档而不是"编造"
2. 提供事实依据:LLM 从"凭记忆回答"变成"开卷考试",准确率自然提升
3. 可追溯:每个回答都能追溯到具体的文档片段,出了问题能查
但 RAG 不是银弹:
- 检索不到相关文档 → LLM 还是会编(所以检索质量是关键)
- 检索到了但文档本身有错 → 垃圾进垃圾出
- 文档太多塞不进 Prompt → 需要重排序和截断(第10章详解)
RAG 的本质是一个信息检索问题,不是生成问题。
检索质量决定了 RAG 的上限,LLM 只是把检索到的信息"翻译"成自然语言。
所以优化 RAG 的重点在检索侧(切分策略、Embedding 质量、重排序),而不是换更大的模型。
9.1.3 RAG 全链路
离线阶段(索引构建):
原始文档 → DocumentReader(加载) → DocumentTransformer(清洗)
→ TextSplitter(切分) → EmbeddingModel(向量化) → VectorStore(存储)
在线阶段(检索生成):
用户问题 → EmbeddingModel(向量化) → VectorStore(相似度搜索)
→ 相关文档片段 → 注入 Prompt → ChatModel → 回答
9.2 DocumentReader 体系
@Service
public class DocumentLoadService {
/** PDF 文档加载 */
public List<Document> loadPdf(Resource resource) {
PagePdfDocumentReader reader = new PagePdfDocumentReader(resource,
PdfDocumentReaderConfig.builder()
.withPagesPerDocument(1)
.build()
);
return reader.get();
}
/** Tika 通用加载(Word、HTML、PPT 等) */
public List<Document> loadWithTika(Resource resource) {
return new TikaDocumentReader(resource).get();
}
/** JSON 文档加载 */
public List<Document> loadJson(Resource resource) {
JsonReader reader = new JsonReader(resource, "content", "metadata");
return reader.get();
}
}
9.3 VectorStore 配置与 Document 写入检索实战
9.3.0 VectorStore Bean 定义
Spring AI 的 VectorStore 是接口,需要选择具体实现并注册为 Bean。以下是常见的几种方式:
/**
* VectorStore 配置类
*/
@Configuration
public class VectorStoreConfig {
/**
🔒 完整内容
以上为本章部分预览,完整内容包含更多源码解析、实战代码和面试要点。
加入知识星球你将获得:
- ✅ 全部 26 章完整内容 + 持续更新
- ✅ 配套源码 + 实战项目
- ✅ 技术答疑交流
📚 本章完整目录
以下为本章完整目录结构,加入知识星球即可解锁全部内容。