阅读 Spring 英文 AI 文档 和 中文文档基于官方文档与学习资料整理了一份AI 模型 API的使用指南带你从零上手 Spring AI。1. 版本选择Spring AI 版本Spring Boot 版本Java 版本Spring AI 1.1.xSpring Boot 3.5.xJava 17版本阶段排序SNAPSHOT开发快照→ M1、M2……里程碑→ RC1……候选→ 1.0.0GA 正式版。spring-ai-bom-1.1.x-SNAPSHOT为快照版本Maven 每次拉取的内容可能都不一样今天能跑明天可能就编译失败。spring-ai-bom-1.1.x-M3.pom为里程碑版本定期发布、相对稳定一些但也存在定时更新的问题。spring-ai-bom-1.1.x已经正式 GA 发布建议使用正式版。查看更多 spring-ai-bom 版本请点击链接2. POM 文件?xml version1.0 encodingUTF-8?projectxmlnshttp://maven.apache.org/POM/4.0.0xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsdmodelVersion4.0.0/modelVersionparentgroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-parent/artifactIdversion3.5.3/versionrelativePath/!-- lookup parent from repository --/parentgroupIdcom.example/groupIdartifactIdSpringAIStart/artifactIdversion0.0.1-SNAPSHOT/versionnameSpringAIStart/namedescriptionSpringStart/descriptionpropertiesjava.version17/java.version/properties!-- 导入 Spring AI BOM用于统一管理 Spring AI 依赖的版本 引用每个 Spring AI 模块时不用再写 version只要依赖什么模块 Mavens 自动使用 BOM 推荐的版本 --dependencyManagementdependenciesdependencygroupIdorg.springframework.ai/groupIdartifactIdspring-ai-bom/artifactIdversion1.1.8/versiontypepom/typescopeimport/scope/dependency/dependencies/dependencyManagement/project若快照版本还未发布到正式库还需要声明快照仓库此处使用 1.1.8 版本已经发布到正式仓库因此无需声明快照仓库。!-- 声明仓库 用于获取 Spring AI 以及相关预发布版本--repositoriesrepositoryidspring-snapshots/idnameSpring Snapshots/nameurlhttps://repo.spring.io/snapshot/urlreleasesenabledfalse/enabled/releases/repositoryrepositorynameCentral Portal Snapshots/nameidcentral-portal-snapshots/idurlhttps://central.sonatype.com/repository/maven-snapshots//urlreleasesenabledfalse/enabled/releasessnapshotsenabledtrue/enabled/snapshots/repository/repositories智谱 AI 依赖包dependencygroupIdorg.springframework.ai/groupIdartifactIdspring-ai-starter-model-zhipuai/artifactId/dependencyDeepSeek 依赖包dependencygroupIdorg.springframework.ai/groupIdartifactIdspring-ai-starter-model-deepseek/artifactId/dependency3. 聊天模型3.1 编写 application.properties首先设置关于模型的全局默认参数。# 配置 Deepseek URL、API Key、模型 spring.ai.deepseek.base-urlhttps://api.deepseek.com spring.ai.deepseek.api-key spring.ai.deepseek.chat.options.modeldeepseek-flash # 配置温度范围 0-22 发散 spring.ai.deepseek.chat.options.temperature0.8 # 配置日志 logging.pattern.console %-5level %logger - %msg%n接下来设置关于模型的运行时参数。如下图所示DeepSeekChatModel 支持在运行时动态调整模型参数灵活应对不同场景的需求。3.2 核心APISpring AI 的 ChatModel 提供一套统一接口方便开发者在应用中集成 AI 聊天完成功能。它支持切换不同模型供应商的聊天模型如 OpenAI、Anthropic、Google Gemini、Amazon Bedrock、Ollama 等多数实现支持流式输出和函数调用等功能。Autowired// DeepSeekChatModel 为 ChatModel接口的实现类privateDeepSeekChatModelchatModel;/**Flux 是一个“可以异步地、陆续发出多个数据”的容器。 可以把它想成一条水管 - 普通 ListString所有数据一次性给你。 - FluxString数据像水流一样一个一个地流过来可能分很多次到达。 一个会陆续收到多个 ChatResponse的流。 调用模型时不是一次性返回完整回答而是一段一段地返回。每次模型吐出一点内容就产生一个 ChatResponse。 **/FluxChatResponsestreamchatModel.stream(prompt);FluxStringrespstream.map(chatResponse-chatResponse.getResult().getOutput().getText());3.3 几个主流模型供应商的差异Anthropic 与 OpenAI 的区别Anthropic 由 OpenAI 的前核心成员创立其主打产品是 Claude 系列大模型。两者最大的区别在于核心哲学OpenAI 追求更强大的通用能力和自主性而 Anthropic 则将安全、可控和可解释性置于首位。OpenAIGPT 系列如 GPT-5.4、GPT-6 Astra 等以强大的通用推理和编程能力著称。AnthropicClaude 系列如 Claude Opus 5、Claude Fable 5.1 等在编程、复杂任务分解和安全性方面表现突出。DeepSeek 与智谱DeepSeek 和智谱代表了中国 AI 力量的两极一个用开源和极致效率挑战技术霸权另一个用全面商业化和国产化生态构建产业壁垒。4. 向量模型文档会先被切成若干个 chunk。由于 Embedding 模型有最大 token 限制例如一次只能处理 8192 个 token所以长文本必须切成多个 chunk每个 chunk 送入 embedding 模型后会得到一个对应的向量并作为一行存入向量数据库因此一个 chunk 对应数据库里的一行。用户提问时问题也会被送入 embedding 模型变成一个 query 向量然后拿这 1 个 query 向量去和数据库里每一行的 chunk 向量计算相似度比如余弦相似度也就是 1 个 query 向量 vs N 个 chunk 向量。最后按相似度排序取出最相似的 top-k 个 chunk作为上下文交给大模型。4.1 编写 application.properties## 智谱 AI 相关配置 spring.ai.zhipuai.base-urlhttps://open.bigmodel.cn/api/paas spring.ai.zhipuai.api-keyyour_api_key # Embedding 模型配置 spring.ai.zhipuai.embedding.options.modelembedding-2 # chat 模型配置 spring.ai.zhipuai.chat.options.modelGLM-4-Flash4.2 核心API!-- spring-ai-client-chat 中包括 TokenTextSplitter、TextReader、Document 等工具 --dependencygroupIdorg.springframework.ai/groupIdartifactIdspring-ai-client-chat/artifactIdversion1.0.0/version/dependencySpring AI 通过其 EmbeddingModel 接口提供一套统一、简单、可替换的访问方式支持多种底层模型如 OpenAI、Titan、Azure、Ollama、智谱等这样可以统一接口切换模型仅需要改配置不改调用逻辑。privateEmbeddingModelembeddingModel;privatefinalListfloat[]docVectors;//准备知识库文本内容privatefinalListStringdocsList.of(美食非常美味服务员也很友好,这部电影既刺激又令人兴奋,阅读书籍是扩展知识的好方法);/** * 根据用户输入的 query从已向量化的文档中找出最相似的一条文本 * * param query 用户输入的查询文本 * return 与 query 最相似的文档原文若无文档则返回 null */publicStringqueryBestMatch(Stringquery){// 0. 边界检查文档为空直接返回 null避免后面 bestIdx 一直为 -1 导致越界if(docVectorsnull||docVectors.isEmpty()){returnnull;}// 1. 对用户传入的 query 进行向量化float[]queryVecembeddingModel.embed(query);// 1.1 提前计算 query 向量的模长避免在循环里重复计算doublequeryNormnorm(queryVec);// 用于记录当前最大相似度和对应的下标doublebestSim-1;intbestIdx-1;// 2. 遍历所有文档向量逐个计算余弦相似度找出最相似的一个for(inti0;idocVectors.size();i){float[]docVecdocVectors.get(i);// 计算 query 与该文档向量的余弦相似度doublesimcosineSimilarity(queryVec,queryNorm,docVec);// 更新最大值if(simbestSim){bestSimsim;bestIdxi;}}// 3. 返回最相似文档的原文returndocs.get(bestIdx);}/** * 计算两个向量的余弦相似度 * * param a 向量 a * param normA 向量 a 的模长提前算好避免重复计算 * param b 向量 b * return 余弦相似度范围 [-1, 1]若任一向量模长为 0 则返回 0 */privatedoublecosineSimilarity(float[]a,doublenormA,float[]b){// 先算 b 的模长doublenormBnorm(b);// 防止除零任一向量为零向量时认为相似度为 0if(normA0||normB0){return0;}// 计算点积doubledot0;for(inti0;ia.length;i){dota[i]*b[i];}// 余弦相似度 点积 / (模长a * 模长b)returndot/(normA*normB);}/** * 计算向量的模长L2 范数 */privatedoublenorm(float[]v){doublesum0;for(floatx:v){sumx*x;}returnMath.sqrt(sum);}float[] queryVec embeddingModel.embed(query); 这行代码返回的float[]是一个普通的 Java 数组它被存储在当前应用程序的内存中即 JVM 的堆内存里。它只是一个临时变量一旦方法结束这个数组就可能被垃圾回收不会自动被存入任何数据库。4.3 几个主流向量数据库的比较阶段这个阶段在干什么推荐方案核心理由关键提醒个人学习跑通 RAG 基本流程文档 → chunk → embedding → 向量库 → 检索 → 交给大模型Chroma安装最简单支持内存模式几行代码就能跑教程多和 LangChain 等集成成熟是理解 RAG 的最佳起点适合本地实验和小数据量不要用于大规模或生产原型验证快速做一个小样验证想法、技术路线、检索效果是否可行Qdrant 或 pgvectorQdrant性能好、元数据过滤强、单个 Docker 就能跑pgvector已有 PostgreSQL 时最省事数据量小可直接用 SQL 统一管理原型验证不是“测试环境里的正式应用”它追求快和验证最好用真实业务数据子集测试别只看玩具数据生产环境正式上线要考虑规模、稳定、运维、合规、成本Milvus / Pinecone / pgvectorMilvus大规模、私有化部署、功能全面Pinecone全托管 SaaS免运维pgvector小规模或已有 PostgreSQL成本低、架构简单必须做压测、监控、备份、权限和成本评估根据数据规模、团队运维能力和合规要求权衡
企业数字化 ERP 产品动态
相关推荐
2026 年了,AI Agent 框架到底怎么选?一张表说清主流方案 2026 年了,AI Agent 框架到底怎么选?一张表说清主流方案摘要:别再收藏第 11 篇框架对比了。本文按「单 Agent 快速上手 / 多 Agent 编排 / 低代码接入」三个真实场景分档,一张表说清 LangChain、LangGraph、AutoGen、CrewAI、Dify… · 2026/9/24 17:53:55
子VI数据实时回传主VI:控制引用、命名队列与全局变量 阅读时间:约5分钟适用人群:需要使用子VI或并行循环向主VI前面板实时推送数据显示的LabVIEW开发者,以及正在为跨VI数据通信方式选型的中级用户。一、背景与问题现象在电机控制、数据采集等应用中,经常出现这样一种需求:… · 2026/9/24 17:53:55
0.6MB俄罗斯犯罪数据集:从数据清洗到时序预测的完整流程 简介:面向机器学习初学者的俄罗斯刑事犯罪数据分析与预测实战包,以2008至2023年俄罗斯犯罪统计数据为基础,覆盖数据清洗、回归建模、趋势拟合、KMeans聚类等常见任务,适合希望借助真实项目掌握Python数据分析全流程的读者。压缩包… · 2026/9/24 18:29:00
AI做PPT返工难题:从生成到可编辑的工程实践 1. 为什么“返工”成了 AI 做 PPT 的死穴1.1 一个让人又爱又恨的现状我大概从两年前开始,陆续把市面上能叫得上名字的 AI 做 PPT 工具试了个遍。从最早那种“输入一句话,吐出一整份带图带排版的幻灯片”的惊艳,到后来“生成五分钟,… · 2026/9/24 18:29:00
从re1到可持续维护:个人文件与知识库重构实战指南 说实话,当我第一次看到项目标题写着“re1,,,,”的时候,我还愣了一下。这串字符既像一个还没写完的版本号,又像思路断线后在键盘上敲出来的占位符。但稍微代入一下我的工作习惯,就立刻… · 2026/9/24 18:29:00
Python+OpenCV实现七段数码管实时识别与稳定输出 简介:一套基于Python的数码管实时检测与识别设计源码,定位面向图像处理与深度学习方向的开发者和高校学生,可快速落地数字识别类课程设计或项目实战。压缩包共包含192个文件、总体积98.12MB,其中110张JPG与24张BMP图片用作训练和测… · 2026/9/24 18:29:00
UDP广播实战:从设备发现到多网卡与去重全解析 看到“(200分) - 发广播”这个题的时候,我第一反应是:这有什么好考的,不就是往UDP套接字里塞一个255.255.255.255目标地址,然后sendto一发嘛。直到我第一次在真实局域网上做设备发现广播,连续踩了“广播发不出去”“自… · 2026/9/24 18:29:00
OA与SAP集成实战:通过RFC接口实现报销凭证自动生成 做报销的同事天天在OA里提申请、走审批,完了还要把单子重新录入一遍SAP做凭证,两边数据经常对不上,月底财务对账对到怀疑人生。这个项目要解决的就是这么个事儿:让OA里的报销单,审批一通过,直接调用SAP的RF… · 2026/9/24 18:28:54
基于YOLOv8的渔船作业监控系统:从环境搭建到边缘部署全流程 简介:这是一套面向计算机、人工智能、自动化等专业学生与教师的毕业设计级项目资源,围绕YOLOv8实现渔船作业监控系统,可用于毕设、课程设计、大作业或项目立项演示。压缩包共97个文件,约24.21MB,以70个Python源码文件为… · 2026/9/24 0:00:13
1D-CNN时间序列建模实战:从Conv1d原理到工业落地 简介:面向时间序列数据建模的一维卷积神经网络完整实现,适合深度学习入门者及需要快速验证时序模型的研究者,能够从音频、文本、传感器或股价等序列中挖掘局部特征与时间依赖。压缩包体积很小,只有3KB,内含3个Python脚… · 2026/9/24 0:00:26
柔软的L:汉语语流中被忽视的舌肌张力控制 1. 这个“L”不是字母表里的L,而是舌尖上的L最近在几个方言群和语音教学社群里,反复看到有人发一句:“也说字母L:柔软的长舌”。初看以为是英语发音课笔记,点开才发现全是方言爱好者、播音系学生、语言康复师甚至戏曲演… · 2026/9/24 0:00:44