别再迷信 Python 了!Java + Spring + Milvus,这才是企业级 RAG 的终极形态!

在企业数字化转型的浪潮中,PDF、Word 等海量文档往往沉睡在各个业务系统中,形成“数据孤岛”,难以被智能系统高效利用。

那么,如何构建一个真正面向企业场景落地的 AI 应用,让 AI 成为企业的“智能助手”?本项目提供一套基于 Spring 框架的完整解决方案,结合文档 ETL、向量检索与 RAG 问答技术,覆盖从数据导入到智能对话的全链路实践。

与其他演示不同,本项目强调企业级能力建设——包括 API 安全控制、指标可观测性等工程化特性。借助 Spring 强大的生态系统与 Java 社区对“高可维护、高可扩展系统”的成熟支持,我们将打造一个真正适合在企业环境中上线运行的 AI 应用。

技术栈速览

  • 框架:Spring Boot 3.5.0 + Spring AI 1.0.0
  • 语言:Java 17(长期支持)
  • AI 模型:百度千帆(OpenAI 接口兼容)
  • 向量存储:Milvus(高性能语义检索)
  • 工具链:Docker、Micrometer、Testcontainers

环境配置避坑指南

示例代码仓库 https://github.com/topikachu/spring-ai-rag

# 验证 Docker 是否正常运行 $ docker version $ docker ps

为什么选百度千帆?

  • 免费额度友好:ernie-3.5-128k 和 tao-8k 均可免费试用
  • 接口兼容:与 Spring AI 的 OpenAI 接口高度兼容,几乎零开发成本切换
  • 在线模型列表: https://console.bce.baidu.com/qianfan/ais/console/onlineService
  • 申请模型API Key: https://console.bce.baidu.com/iam/#/iam/apikey/list

关键配置(application.properties)

spring.ai.openai.base-url=https://qianfan.baidubce.com spring.ai.openai.chat.completions-path=/v2/chat/completions spring.ai.openai.chat.options.model=ernie-3.5-128k spring.ai.openai.embedding.embeddings-path=/v2/embeddings spring.ai.openai.embedding.options.model=tao-8k spring.ai.openai.api-key=${OPENAI_API_KEY} spring.ai.model.embedding=openai

实操建议

  • 用在线模型API工具验证密钥有效性,再接入项目。
  • tao-8k 嵌入模型仅支持单条输入,需调整分块逻辑,确保每次请求一个文档段落,下文有代码示例。
  • 不要在代码或者配置文件里硬编码API KEY,更不要提交到代码仓库,在生产中考虑使用环境变量。

文档 ETL:非结构化数据结构化处理

处理流程:
  • DocReader:使用TikaDocReader读取 PDF/Word 等
  • TextSplitter:基于 token 分块,控制上下文长度
  • 向量生成:调用tao-8k接口
  • 存入向量库:Milvus 自动管理

示例代码:
return documentReader.getDocuments() .flatMap(document -> { var processChunks = Mono.fromRunnable(() -> { var chunks = textSplitter.apply(List.of(document)); vectorStore.write(chunks); // expensive operation }).subscribeOn(Schedulers.boundedElastic()); return Flux.concat( Flux.just(document), processChunks.then(Mono.empty()) ); }) .doOnComplete(() -> log.info("RunIngestion() finished")) .doOnError(e -> log.error("Error during ingestion", e)); }

注意:百度千帆嵌入 API 仅支持单文档请求,需确保 ETL 实现为“单文档单请求”。

@Bean BatchingStrategy singleDocumentBatchingStrategy() { return documents -> documents.stream().map(List::of).toList(); }

向量存储:用 Milvus 实现“秒级语义检索”

配置示例:
spring.ai.vectorstore.milvus.initialize-schema=true spring.ai.vectorstore.milvus.embedding-dimension=1024
说明:例如用户问“刘备结义排第几”,Milvus 会返回相关文档段落,再由语言模型生成自然语言答案。

RAG 对话:结合知识库与上下文的智能问答

核心逻辑:
  • 用户提问
  • 向量检索相关段落
  • 加载对话记忆(Redis)
  • 生成 AI 回答

对话向量检索与记忆集成示例:
public ChatClient.ChatClientRequestSpec input(String userInput, String conversationId) { return ChatClient.builder(chatModel) .build().prompt() .advisors( new QuestionAnswerAdvisor(vectorStore), MessageChatMemoryAdvisor.builder(chatMemory).build() ) .advisors(spec -> spec.param(CONVERSATION_ID, conversationId)) .user(userInput); }

提升前端体验:使用stream接口返回Flux,通过SSE实现打字机效果:

public Flux<String> stream(String userInput, String conversationId) { return input(userInput, conversationId) .stream().content(); }
@PostMapping(path = "/chat", produces = MediaType.TEXT_EVENT_STREAM_VALUE) public Flux<String> chat(@RequestBody ChatRequest chatRequest, @RequestParam() String conversationId, Principal principal) { var conversationKey = String.format("%s:%s", principal.getName(), conversationId); return chatService.stream(chatRequest.userInput, conversationKey) .doOnError(exp -> log.error("Error in chat", exp)); }

API 安全加固

权限控制示例:
@Override protected void configure(HttpSecurity http) throws Exception { http .httpBasic() .and() .authorizeRequests(authz -> authz .antMatchers("/api/v1/index").hasRole("ADMIN") .anyRequest().authenticated() ); }
企业级加固:在正式的生产环境中建议升级为OAuth2/JWT认证方案。 系统可观察性 链路追踪:本项目使用OpenTelemetry JavaAgent,覆盖Chat → Milvus → 模型调用的全链路调用追踪(grpc调用链关键) -javaagent:<path/to/opentelemetry-javaagent.jar> \ -Dotel.metrics.exporter=none \ -Dotel.logs.exporter=none 指标监控:使用Micrometer自动暴露Prometheus指标,比如: 模型响应时间 # HELP gen_ai_client_operation_seconds # TYPE gen_ai_client_operation_seconds summary gen_ai_client_operation_seconds_count{...} 1 向量检索耗时 # HELP db_vector_client_operation_seconds # TYPE db_vector_client_operation_seconds summary db_vector_client_operation_seconds_count{...} 1 配置:
management.endpoints.web.exposure.include=prometheus
Tip:Spring Boot 3.2 引入 OTEL starter,但由于不能覆盖 gRPC(Milvus client)调用链,本项目采用 JavaAgent 接入方式,以确保完整链路追踪。
export OPENAI_API_KEY=<百度千帆APIKEY> mvn clean test package docker compose up -d java -javaagent:target/otel/opentelemetry-javaagent.jar -Dotel.metrics.exporter=none -Dotel.logs.exporter=none -Dinput.directory=$PWD/src/test/resources/corpus -jar target/rag-0.0.1-SNAPSHOT.jar curl --location 'localhost:8080/api/v1/index' \ --user "admin:password" \ --header 'Content-Type: application/json' \ --data '{}' curl --location 'localhost:8080/api/v1/chat?conversationId=liubei' \ --header 'Content-Type: application/json' \ --user "user:password" \ --data '{ "userInput": "刘备结义时排第几?" }' curl --location 'localhost:8080/api/v1/chat?conversationId=liubei' \ --header 'Content-Type: application/json' \ --user "user:password" \ --data '{ "userInput": "他哪里人?" }' curl --location 'localhost:8080/api/v1/chat?conversationId=guanyu' \ --header 'Content-Type: application/json' \ --user "user:password" \ --data '{ "userInput": "关羽结义时排第几?" }' curl --location 'localhost:8080/api/v1/chat?conversationId=guanyu' \ --header 'Content-Type: application/json' \ --user "user:password" \ --data '{ "userInput": "他哪里人?" }' curl "http://localhost:8080/actuator/prometheus"

打开trace 界面 http://localhost:16686/,可以查看调用的tracing情况,如下图

从文档解析到智能对话,这个项目不仅仅是技术的堆叠,更是一次工程实践与 AI 认知的结合。通过 Spring AI + 向量数据库 + 企业级安全与可观测性,真正打通了“知识沉淀 → 智能服务”的链路。

如果你也在探索 AI 与企业系统的融合,欢迎留言交流,一起构建更智能、更可靠的未来系统。

如何学习大模型 AI ?

由于新岗位的生产效率,要优于被取代岗位的生产效率,所以实际上整个社会的生产效率是提升的。

但是具体到个人,只能说是:

“最先掌握AI的人,将会比较晚掌握AI的人有竞争优势”。

这句话,放在计算机、互联网、移动互联网的开局时期,都是一样的道理。

我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。

我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。

第一阶段(10天):初阶应用

该阶段让大家对大模型 AI有一个最前沿的认识,对大模型 AI 的理解超过 95% 的人,可以在相关讨论时发表高级、不跟风、又接地气的见解,别人只会和 AI 聊天,而你能调教 AI,并能用代码将大模型和业务衔接。

  • 大模型 AI 能干什么?
  • 大模型是怎样获得「智能」的?
  • 用好 AI 的核心心法
  • 大模型应用业务架构
  • 大模型应用技术架构
  • 代码示例:向 GPT-3.5 灌入新知识
  • 提示工程的意义和核心思想
  • Prompt 典型构成
  • 指令调优方法论
  • 思维链和思维树
  • Prompt 攻击和防范

第二阶段(30天):高阶应用

该阶段我们正式进入大模型 AI 进阶实战学习,学会构造私有知识库,扩展 AI 的能力。快速开发一个完整的基于 agent 对话机器人。掌握功能最强的大模型开发框架,抓住最新的技术进展,适合 Python 和 JavaScript 程序员。

  • 为什么要做 RAG
  • 搭建一个简单的 ChatPDF
  • 检索的基础概念
  • 什么是向量表示(Embeddings)
  • 向量数据库与向量检索
  • 基于向量检索的 RAG
  • 搭建 RAG 系统的扩展知识
  • 混合检索与 RAG-Fusion 简介
  • 向量模型本地部署

第三阶段(30天):模型训练

恭喜你,如果学到这里,你基本可以找到一份大模型 AI相关的工作,自己也能训练 GPT 了!通过微调,训练自己的垂直大模型,能独立训练开源多模态大模型,掌握更多技术方案。

到此为止,大概2个月的时间。你已经成为了一名“AI小子”。那么你还想往下探索吗?

  • 为什么要做 RAG
  • 什么是模型
  • 什么是模型训练
  • 求解器 & 损失函数简介
  • 小实验2:手写一个简单的神经网络并训练它
  • 什么是训练/预训练/微调/轻量化微调
  • Transformer结构简介
  • 轻量化微调
  • 实验数据集的构建

第四阶段(20天):商业闭环

对全球大模型从性能、吞吐量、成本等方面有一定的认知,可以在云端和本地等多种环境下部署大模型,找到适合自己的项目/创业方向,做一名被 AI 武装的产品经理。

  • 硬件选型
  • 带你了解全球大模型
  • 使用国产大模型服务
  • 搭建 OpenAI 代理
  • 热身:基于阿里云 PAI 部署 Stable Diffusion
  • 在本地计算机运行大模型
  • 大模型的私有化部署
  • 基于 vLLM 部署大模型
  • 案例:如何优雅地在阿里云私有部署开源大模型
  • 部署一套开源 LLM 项目
  • 内容安全
  • 互联网信息服务算法备案

学习是一个过程,只要学习就会有挑战。天道酬勤,你越努力,就会成为越优秀的自己。

如果你能在15天内完成所有的任务,那你堪称天才。然而,如果你能完成 60-70% 的内容,你就已经开始具备成为一名大模型 AI 的正确特征了。

这份完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1124646.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

三菱FX5U七轴标准程序解析

三菱FX5U七轴标准程序&#xff0c;包含轴点动&#xff0c;回零&#xff0c;相对与绝对定位&#xff0c;整个项目的模块都有:主控程序&#xff0c;复位程序&#xff0c;手动&#xff0c;生产计数&#xff0c;只要弄明白这个程序&#xff0c;就可以非常了解整个项目的程序如何去编…

从人类智能到智能体:Agent的发展与治理

AI Agent&#xff08;智能体&#xff09;已从技术概念加速走向产业落地。作为早在20世纪80-90年代就被提出的概念&#xff0c;智能体到近两年才迎来真正落地。 解构智能体的核心构成与发展逻辑&#xff0c;需聚焦其“智能内核”与“呈现形态”两大维度。作为人工智能的一种发展…

别被高大上的名词吓跑!AI Agent 到底是个啥?这篇指南太良心了,一看就懂!

什么是 AI Agent &#x1f916; AI Agent 是人工智能领域中的一个概念&#xff0c;它是一种能够自主执行任务的智能体它具有以下特点&#xff1a; 自主性 AI Agent 能够自主执行任务&#xff0c;不需要人工干预例如智能扫地机器人&#xff0c;只需要设定"每天下午3点打扫客…

全网最全10个AI论文工具,自考毕业论文轻松搞定!

全网最全10个AI论文工具&#xff0c;自考毕业论文轻松搞定&#xff01; 自考论文写作的“隐形助手” 对于自考生来说&#xff0c;撰写毕业论文往往是一个充满挑战的过程。从选题到结构搭建&#xff0c;再到内容撰写和查重修改&#xff0c;每一个环节都需要耗费大量时间和精力。…

2.37 时间序列预测入门:什么是时间序列?从股票价格到销售预测

2.37 时间序列预测入门:什么是时间序列?从股票价格到销售预测 引言 时间序列是按时间顺序排列的数据序列,广泛应用于股票价格、销售预测、天气预测等领域。本文将介绍时间序列的基本概念,并通过实例演示时间序列预测。 一、时间序列概述 1.1 什么是时间序列? 时间序列…

Arbess速成手册(14) - 集成GitLab实现Java项目自动化Gradle构建并主机部署

Arbess 是一款开源免费的 CI/CD 工具&#xff0c;工具支持免费私有化部署&#xff0c;一键安装零配置&#xff0c;页面设计简洁明了。本文将详细介绍如何安装Arbess、GitLab&#xff0c;并创建配置流水线实现 Java 项目Gradle构建并部署主机。 1、GitLab 安装与配置 本章节将…

消防应急款手持气象仪:在突发事故现场快速获取关键气象参数

消防应急手持气象站是专为消防救援、灾害应急等场景设计的便携式气象监测设备&#xff0c;能够在突发事故现场快速获取关键气象参数&#xff0c;为救援指挥提供实时数据支持。该设备集成了多项气象传感器&#xff0c;具备轻量化、高精度、快速响应等特点&#xff0c;适用于火灾…

基于Spring Boot框架的医疗废弃物收运管理系统的设计与实现

第3章 系统分析 系统分析是软件开发的关键。但在实际工作中却往往容易被人们忽视或误解。其实需求分析在软件开发过程中起着重要作用&#xff0c;它不仅为软件产品提供了一个基本框架和基础结构&#xff0c;而且还能够提高软件开发效率及质量。大多数软件的故障都是由于需求分…

2.38 AR、MA、ARMA、ARIMA模型详解:时间序列分析的四大经典模型

2.38 AR、MA、ARMA、ARIMA模型详解:时间序列分析的四大经典模型 引言 AR、MA、ARMA、ARIMA是时间序列分析的四大经典模型,是理解时间序列预测的基础。本文将深入解析这四种模型的原理、区别和应用场景。 一、模型概述 1.1 四种模型 #mermaid-svg-PDybQovWhPr1VYff{font-f…

程序员必看!Google最新报告:AI不是来替代你的,而是来给你发升级包的!

那天下午&#xff0c;95后实习生突然跑来问&#xff1a;“我是不是该转行了&#xff1f;” 她刚看完一则新闻&#xff1a;某互联网大厂用AI客服系统替代了80%的人工客服。 我笑了笑&#xff0c;给她看了Google刚发布的《2026年AI Agent趋势报告》。看完后&#xff0c;她眼睛亮 …

收藏!小白程序员必看:智能体工程入门指南,把LLM打造成生产级可靠应用

智能体工程&#xff0c;本质是把“不确定性”的大语言模型&#xff08;LLM&#xff09;&#xff0c;通过持续迭代优化成“可靠可用”的生产级应用的过程。它不是单一技术&#xff0c;而是产品思维、工程技术与数据科学三大能力的融合体。和传统软件开发相比&#xff0c;它的核心…

Java程序员如何备战金三银四?

很多人都说八股文没用&#xff0c;这里聊一下我对八股文的一些看法吧&#xff1a;一个知识点&#xff0c;你能把使用以及原理说出来&#xff0c;我称之为八股&#xff0c;但是你能把底层关联以及业务使用&#xff0c;优化历程也能搞清楚&#xff0c;我称之为能力&#xff1b;这…

基于Spring Boot的城市郊野公园管理系统的设计与实现

2系统分析 2.1需求分析 需求分析做为手机软件整体规划环节和项目生命周期的关键一部分&#xff0c;应当是“实现什么东西”而不是“实现”[5]。根据开发者对调研分析关键点、作用、特性、稳定性的掌握&#xff0c;将用户的无形要求转换为有形的界定&#xff0c;以便确定系统的运…

2.39 ARIMA实战:用Python对沪市指数进行预测,附完整代码

2.39 ARMA/ARIMA实战:用Python对沪市指数进行预测,附完整代码 引言 本文通过沪市指数预测实战案例,演示如何使用ARMA/ARIMA模型进行时间序列预测。从数据获取、模型训练到预测,提供完整的代码实现。 一、数据准备 1.1 获取股票数据 # 获取沪市指数数据 def get_stock_…

Arbess速成手册(15) - 集成GitLab实现Java项目自动化构建并多主机同时部署

Arbess 是一款国产开源免费的 CI/CD 工具&#xff0c;工具轻量、简洁。本文将详细介绍如何安装Arbess、GitLab&#xff0c;并创建配置流水线实现多主机同时部署。 1、Gitlab 安装与配置 本章节将介绍如何使用CentOS9搭建Gitlab服务器&#xff0c;并将代码存放在Gitlab服务器&…

AI也要“外挂“?揭秘Agent架构三大神器,让ChatGPT秒变项目经理,小白也能秒变大神!

为什么 ChatGPT 有时候像个只会背书的书呆子&#xff0c;而 AutoGPT 或 Devin 却像个能干活的项目经理&#xff1f; 区别不在于模型本身&#xff08;大脑都差不多&#xff09;&#xff0c;而在于外挂系统的设计。 让我们潜入 Agent 的机箱内部。01. Planning&#xff08;规划&a…

基于Spring Boot的博客系统的设计与实现

3 系统需求分析 在当今的社会生活中&#xff0c;互联网已经变得非常普遍和重要。充分利用互联网大数据等技术可以解决很多问题。目前&#xff0c;博客管理也面临着自身的问题。根据这一普遍现象&#xff0c;该系统可以很好地解决这些问题[7]。系统中这二类用户的数据在系统中非…

Arbess速成手册(17) - 集成GitLab、SonarQube实现代码扫描通过后自动化构建并主机部署

Arbess 是一款开源免费的 CI/CD 工具&#xff0c;支持免费私有化部署&#xff0c;一键安装零配置。本文将详细介绍如何安装配置使用GitLab、SonarQube、Arbess系统&#xff0c;使用流水线拉取GitLab源码、使用SonarQube进行代码扫描&#xff0c;构建安装包并部署到远程主机。 …

科技赋能清洁升级 绿色守护厂区环境——靖江庆润固废引入明诺MN-S1800四轮扫地车助力环保作业

作为一家专注于固体废物治理、水污染治理、大气污染治理等领域的环保企业&#xff0c;靖江庆润固废处置有限公司始终秉持“绿色发展、环保先行”的经营理念&#xff0c;在致力于各类固废无害化处置与资源回收利用的同时&#xff0c;高度重视厂区作业环境的优化提升。近日&#…

基于大数据的热门旅游景点推荐系统

第3章 系统需求分析 3.1 可行性分析 本章着重于进行可行性分析&#xff0c;旨在全面评估现有技术实现预期目标的可能性&#xff0c;以及系统能否满足用户的具体需求。通过多维度考量&#xff0c;我们能够及时发现并修正项目中的潜在风险&#xff0c;从而有效减少不必要的损耗&a…