ARTICLE · 1330043
文档不出本机:Spring Boot + Ollama,5 分
文档不出本机:Spring Boot + Ollama,5 分
最近接了十来个活儿,十个有八个最后都绕到 RAG 上。给团队做文档问答、搭客服机器人,最后总卡在同一件事:市面上的开源方案要么太重,要么太黑盒。
LangChain 生态虽全,但 Java 团队得硬养一套 Python 服务;那些号称“开箱即用”的项目,装完向量库、对象存储、关系库三件套才算能跑,核心逻辑还封在 JAR 包里看不到源码。真正能拉下来改两行的,切片不是硬切就是重启丢数据。我干脆自己写了一个——Doc-Mind-Agent,纯 Spring 技术栈,核心代码几百行,每个细节都摆在明面上。
这套东西主打一个轻量透明。技术上非常克制:Spring Boot 3.3.5 + Spring AI 1.0,本地用 Ollama 跑 bge-m3 模型做 Embedding,云端大模型负责生成答案。文档解析交给 Apache Tika,向量库直接用官方的 SimpleVectorStore,零外部依赖,拉下来改两行配置就能跑。
真正决定好不好用的,是文档入库那几步。文件传上来先算 SHA-256 去重,再用 Tika 把 PDF、Word 等格式统一抽成文本。切片绝不粗暴按字数硬切,而是先按段落、再按句子边界切,实在太长才硬切,块与块之间还留 100 字符重叠,保证上下文不断。每个切片也单独算哈希,不同文件里的重复内容只存一份,省空间又提质量。
问答链路也很直白:问题转成向量后,在库里算余弦相似度取最相关的 Top-K 切片,拼进 Prompt 让大模型基于资料回答。为了防幻觉,System Prompt 里必须明确写死“不要编造”。输出用的是 Flux 流式,第一帧先告诉你答案参考了哪几个文件,后面一个字一个字打出来,体验比干等一整段强得多。
不过这玩意儿也有明确的边界。它只适合个人或小团队的本地知识库,百万级文档、分布式部署、多租户隔离这些场景它扛不住。说白了,这就是给 Java 团队准备的快速 Demo 和教学示例,想上生产还得换 Milvus 这类专业数据库。















































































