RAG 知识库问答系统实践
让 AI 回答公司内部文档的问题——RAG(检索增强生成)是当前最主流的方案,不需要微调模型。
一、RAG 的核心原理
- 1.1 为什么需要 RAG——大模型的训练数据截止日期问题
- 1.2 RAG 流程——检索 → 增强 → 生成
- 1.3 与微调的区别——RAG 是”查资料”,微调是”背下来”
二、文档处理——把文档变成向量
- 2.1 文档切片——太长会丢失上下文,太短会丢失连贯性
- 2.2 Chunk Size 的选择——500-1000 Token
- 2.3 Overlap——块之间的重叠,防止语义断裂
- 2.4 文档格式处理——PDF / Word / Markdown
- 2.5 Spring AI 的
DocumentReader接口
三、向量化与存储
- 3.1 Embedding 模型选型——OpenAI
text-embedding-3-small - 3.2 向量数据库选型——Milvus / Elasticsearch / pgvector
- 3.3 Spring AI 的
VectorStore抽象 - 3.4 写入向量——
vectorStore.add(documents)
四、检索——找到最相关的文档
- 4.1 语义检索——查询向量 → 相似度搜索
- 4.2 混合检索——关键词 + 语义
- 4.3 检索重排序(ReRank)——提高准确率
- 4.4
topK的选择——返回几个文档
五、生成——把检索结果喂给大模型
- 5.1 Prompt 模板——“根据以下资料回答问题:{context} \n 问题:{question}”
- 5.2 引用来源——告诉用户答案来自哪里
- 5.3 不知道就说不知道——不要瞎编
六、优化策略
- 6.1 查询重写——把口语化问题变成搜索友好的查询
- 6.2 多轮对话记忆——记住上下文
- 6.3 评估——RAGAS 评估框架
七、完整案例——公司制度问答系统
- 7.1 资料准备——员工手册 PDF
- 7.2 代码实现——Spring AI + Milvus
- 7.3 效果演示
八、总结
- RAG = 文档切片 + 向量化 + 检索 + 生成
- Spring AI 的抽象让 RAG 开发变得简单
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 谜思录!