👉一键直达
👉一键获取《JavaAI应用开发实战》代码仓库
👉一键获取访问密码
当前以下视频系列课程正持续更新中:
- 《做实验学 Elasticsearch》
- 《小编说 ES 教程》
- 《Java AI 应用开发实战》
- …… 更多内容陆续上线中!
💡 为什么值得订阅?
所有资料均由小编精心整理,保证代码可运行、可调试,省去你东拼西凑的时间成本,专注核心技能提升。
把公司所有文档一股脑塞给大模型,美其名曰“让它自己学”。
这就是典型的“知识污染”问题。
今天这节课,咱们就用纯Spring Boot+LangChain4j,搭一个多知识库隔离的 RAG 系统:你问差旅政策,它绝不碰考勤制度。
准备好了吗?咱们开工!
很多同学一听 “RAG” 就头大,觉得高深莫测。其实啊,它就干三件事,我管它叫 “存、找、答”:
- 存(Store):把你的文档切成小段(Chunk),每一段变成一串数字向量(Embedding),存进“向量数据库”。
- 找(Retrieve):用户问问题,我们也把问题变成坐标,去库里找最近的几段——就像在地图上搜“附近好吃的”,返回 Top 3。
- 答(Generate):把找到的这几段原文 + 用户问题,一起喂给大模型,让它组织语言回答。
关键来了:你怎么告诉 AI “今天只准访问 handbook 这个库”?
答案就是——路由(Routing)!
咱们来看整个请求是怎么流动的。记住这张图,后面代码你就全懂了:

你看, 参数就是门牌号。
Controller 收到请求,立刻去找 Registry:“嘿,给我 对应的那一套工具!”
Registry 从启动时就建好的 Map 里拿出对应的 EmbeddingStore、Augmentor……
Service 拿着这套工具干活,LLM 最后只看到“员工手册”里的内容。
全程,policy 的数据连门都没进!
豆包 大模型 教程
第一步:配置文件 —— 给知识库“分家”
打开 ,你会看到这样的结构:
这可不是随便写的!
- :切太细,上下文断了;切太粗,AI 记不住。300~500 是经验值。
- :每次只给 AI 看最相关的 3 段,避免信息过载。
- :相似度低于 0.5 的“八竿子打不着”的内容,直接丢掉——防胡扯!
第二步:配置类 —— Spring 启动时就把“向量库”建好
看 ,重点在这段:
为什么这么干?
因为加载、切分、向量化——这三个操作非常耗时!如果每次用户提问都做一遍,用户早跑了。
所以我们在 Spring 启动时一次性预热,把每个知识库的“向量库”提前建好,存进 Map。
⚠️ 注意:这里用的是 ,适合 Demo。生产环境建议换成 Qdrant / Milvus / PGVector。
第三步:Service 层 —— 两条路线,任你选
在 包里,咱们提供了两个实现:
路线 A: —— “懒人模式”
优点:一行代码搞定,内部自动检索 + 拼接 + 回答。
缺点:你看不到 AI 到底参考了哪段原文。
路线 B: —— “侦探模式”
用处在哪?
你想在前端显示:“AI 参考了《员工手册》第 3 条,匹配度 92%”——就必须走这条路!
第四步:Controller —— 别踩这个坑!
看接口定义:
准备测试素材
在 里加上:
在调用之前,咱们先看一眼这三个接口的“通用模版”:
- 普通问答(返回纯文本):
- 详细问答(返回 JSON + 相似度得分):
- 流式问答(打字机效果):
升级版测试链接清单(直接复制可用)
1. 逻辑推理测试(入职 3 个月能免费旅游吗?)
验证 AI 是否具备基本的数学计算和逻辑推导能力。
- 链接:点击或复制
- URL:
- ✅ 正确回答应该是:“需要自费 50%,因为你未满一年。”
2. 跨库隔离测试(问手册库关于机票的问题)
验证 和 两个柜子是否真的锁死了,互不串门。
- 链接:点击或复制
- URL:
- 预期:AI 应该说“不知道”或“没提到”,因为它不能偷看 柜子。
3. 细节特例测试(机场打车 150 元能报销吗?)
验证 AI 是否能从“普遍规则”中识别出“特殊豁免条件”。
- 链接:点击或复制
- URL:
- ✅ 应该答:“可以,因为赶飞机属于特殊豁免情形。”
4. 详细得分验证(查出证据和分值)
验证底层 是否拿到了真实的相似度 score。
- 链接:点击或复制
- URL:
- 看点:观察返回的 数组里, 字段的值。
5. 流式交互体验(体验打字机效果)
建议在浏览器中直接打开,感受字符一个一个跳出来的过程。
- 链接:点击或复制
- URL:
怎么像高级工程师一样分析测试结果?
当你拿到返回的 JSON 时,别只盯着 看,咱们要看“三要素”:
- 命中率(Recall): 列表里有没有包含那句关键话?如果没有,请调大 或减小 。
- 纯净度(Precision): 里是不是塞进了太多没用的废话?如果是,请调小 。
- 幻觉率(Hallucination):如果文档里没提,AI 却编了一个答案,请去 Service 里检查你的 ,把它改得更严厉点(比如:“必须逐字对照文档,文档没写的一个字都不许说!”)。
今天,咱们亲手搭了一个企业级可用的多知识库 RAG 系统。你掌握了:
- 隔离思维:通过 实现知识边界,杜绝 AI “跨库乱答”。
- 工程化能力:把 EmbeddingStore、Augmentor 封装成 Spring Bean,支持动态扩展。
- 测试方法论:用“逻辑题 + 边界 case + 得分验证”三板斧,科学评估 RAG 效果。
🎯 最后送你一句话:
“AI 不会犯错,错的是没给它划清边界的人。”
回去试试调整 ,你会发现:
- 切得细 → 精准但碎片
- 切得粗 → 完整但模糊
这就是 AI 工程的魅力——没有标准答案,只有不断调优的艺术。
发布者:Ai探索者,转载请注明出处:https://javaforall.net/273839.html原文链接:https://javaforall.net
