第六篇:SpringAI 入门 06|官方核心概念全解析(Models/Prompt/Embedding/RAG/Tool Calling

导读

学习 SpringAI 实战开发前,必须吃透框架底层核心概念。本文翻译并解读 Spring AI 官方文档《AI Concepts》,系统讲解模型、提示词、向量嵌入、令牌、RAG、工具调用、内容评估等核心知识点。掌握这些基础概念,能帮你理解代码背后的设计逻辑,从容应对各类业务场景开发。

一、模型(Models)

AI 模型是模拟人类认知行为、用于信息处理与内容生成的算法。模型依托海量数据完成预训练,开发者无需从零训练模型,可直接将其集成到业务系统中。

根据能力划分,主流模型分为文本对话、文生图、语音处理三大类。其中向量嵌入模型是特殊类型,可将文本转换为数字向量,也是后续 RAG 功能的底层支撑。Spring AI 全面兼容文本、图像、音频多模态模型。

市面上存在多种 AI 模型,适配不同业务场景:ChatGPT 等生成式大模型主打文本交互;Midjourney、Stable Diffusion 则专注文生图场景。

二、提示词(Prompts)

提示词是发送给大模型的输入文本,用于引导模型按照预期生成内容。 在工程开发中,提示词会划分不同角色:

  • 系统角色(system):定义模型行为、身份与约束规则
  • 用户角色(user):终端用户的提问与交互内容

针对提示词的优化、设计技巧,被称为提示工程(Prompt Engineering),这是一个独立技术方向。合理优化提示词,能够大幅提升模型输出内容的质量与准确性。业内也存在大量提示词优化技巧与相关学术研究。

三、提示词模板(Prompt Templates)

实际开发中常需要固定提示词框架,动态填充内容,该场景由提示词模板实现。

Spring AI 基于 StringTemplate 实现模板能力,支持占位符动态替换,语法简单易用。作用类似于 Spring MVC 中的视图层,通过数据填充渲染出完整提示词,统一规范交互格式。

例如,考虑以下简单的提示词模板:

Tell me a {adjective} joke about {content}.

四、向量嵌入(Embeddings)

向量嵌入是将文本、图片、音视频 转化为浮点型数字数组(向量)的技术,向量可以表征原始内容的语义关系。向量数组的长度被称为向量维度

通过计算两组向量之间的数值距离,就能判断对应文本、素材的语义相似度。

语义相近的内容,对应向量在高维空间中距离也更近,依靠该特性可以实现语义相似度检索。 向量嵌入是 RAG 检索增强生成 的核心基石,广泛用于知识库问答、文本检索、内容分类等场景。

五、令牌(Tokens)

令牌是大模型处理文本的最小单元:输入阶段,模型会将文字拆分为令牌;输出阶段,再将令牌还原为可读文字。以英文为例,1 个令牌约对应 0.75 个单词。

它有两个关键作用:

  1. 商用大模型普遍按照输入、输出令牌数量计费;
  2. 每个模型存在上下文窗口,即单次请求可容纳的令牌上限,超长文本会被截断。

不同模型令牌上限差异较大,Spring AI 提供文本分片能力,用于适配令牌限制。举例:ChatGPT 3.5 上下文窗口为 4K 令牌;GPT-4 支持 8K/16K/32K 多档位;Claude 支持 100K 令牌,部分前沿模型甚至达到 100 万令牌。

六、结构化输出(Structured Output)

大模型默认返回纯文本字符串,若需要 JSON 等结构化数据,手动解析易出现异常。 Spring AI 提供结构化输出能力,可让模型返回规范格式数据,并自动映射为 Java 实体类,省去手动解析代码,提升系统稳定性与开发效率。

七、业务数据与 API 对接方案

预训练大模型存在知识截止时间,无法获取企业私有数据、实时业务数据。Spring AI 提供三种主流对接方案:

  1. 模型微调(Fine Tuning):这是一种传统的机器学习技术,涉及定制模型并更改其内部权重。然而,这对于机器学习专家来说是一个具有挑战性的过程,并且由于模型(如 GPT)的规模,计算资源极其昂贵。此外,某些模型可能不提供此选项。
  2. 提示词填充 (Prompt Stuffing) :一种更实用的替代方案涉及将你的数据嵌入到提供给模型的提示词中。鉴于模型的 Token 限制,需要技术将相关数据呈现给模型的上下文窗口。这种方法俗称"填充提示词 (stuffing the prompt)"。Spring AI 库可以帮助你实现基于"提示词填充"技术的解决方案,也称为 检索增强生成 (RAG)
  3. 工具调用 (Tool Calling):此技术允许注册连接大型语言模型与外部系统 API 的工具(用户定义的服务)。Spring AI 极大地简化了支持工具调用所需的代码编写。

八、检索增强生成(Retrieval Augmented Generation, RAG

RAG 是落地私有知识库问答的主流技术,核心依托ETL 流水线与向量数据库实现,分为两大阶段:

阶段 1:数据加工入库(ETL)

  1. 读取 PDF、Word、TXT 等非结构化文档;
  2. 文档切片:遵循两大规则 ------ 不割裂语义(不拆分段落、代码方法)、切片大小远小于模型令牌上限;
  3. 切片内容向量化,存入向量数据库。

阶段 2:用户问答阶段

  1. 用户问题转为向量,在向量数据库中检索语义相似的文档切片;
  2. 将检索到的私有文档内容、用户问题拼接为完整提示词;
  3. 发送给大模型,模型结合私有知识生成答案。

向量数据库是 RAG 的核心组件,擅长高效检索相似内容。Spring AI 内置 QuestionAnswerAdvisor 组件,可快速开启 RAG 能力。

RAG 是企业私有知识库问答的主流落地方案,整体分为两大阶段,精简如下:

  1. 数据加工入库:加载各类文档 → 文本语义切片 → 内容向量化 → 存入向量数据库;
  2. 问答检索使用:用户问题向量化 → 检索相似文档片段 → 拼接上下文提示词 → 大模型生成答案。

九、工具调用(Tool Calling)

大型语言模型 (LLMs) 在训练后是"冻结"的,导致知识陈旧,并且无法访问或修改外部数据。

工具调用 (Tool Calling) 机制解决了这些缺点。它允许你将自己的服务注册为工具,将大型语言模型与外部系统的 API 连接起来。这些系统可以为 LLM 提供实时数据,并代表它们执行数据处理操作。

Spring AI 极大地简化了支持工具调用所需的代码编写。它为你处理工具调用对话。你可以提供一个使用 @Tool 注解的方法作为工具,并在提示词选项中提供它,使其可供模型使用。此外,你可以在单个提示词中定义和引用多个工具。

工具调用的主要动作序列:

  1. 当我们希望模型可以使用某个工具时,我们在聊天请求中包含其定义。每个工具定义包括名称、描述和输入参数的模式 (Schema)。
  2. 当模型决定调用工具时,它会发送带有工具名称和根据定义模式建模的输入参数的响应。
  3. 应用程序负责使用工具名称来识别并使用提供的输入参数执行工具。
  4. 工具调用的结果由应用程序处理。
  5. 应用程序将工具调用结果发送回模型。
  6. 模型使用工具调用结果作为附加上下文生成最终响应。

完整流程简化如下:

注册工具 → 大模型判断并发起调用 → 本地执行业务代码 → 结果回传给模型 → 生成最终回答。

该能力也是实现业务智能助手的核心。

十、AI 响应评估(Evaluating AI responses)

用于校验大模型输出内容的质量,从相关性、逻辑性、事实准确性三个维度做检测,核心作用是抑制大模型 "幻觉"(编造虚假信息)。

一种方法是将用户请求和 AI 模型的响应都呈现给模型,并查询响应是否与提供的数据一致。

此外,利用存储在向量数据库中的信息作为补充数据可以增强评估过程,有助于确定响应的相关性。

Spring AI 内置 Evaluator 评估接口,支持直接使用与自定义扩展。

十一、本章核心思维导图

参考资料与图片来源: Spring AI 官方文档-concepts

本文原创,首发于 CSDN @空杯-javaAI手记,全网多平台本人同步分发。

相关推荐
范特西林1 小时前
Android 16 AppFunction 机制分析
android·ai编程
helloweilei1 小时前
手撸一个会“思考”的AI智能体
ai编程
会飞的蛛1 小时前
AI Coding 的终局,不是写更好的 Prompt,而是给 Agent 套上 Harness
ai编程
赛博三把手1 小时前
「2026 最新推荐」AI 大模型 API 中转站 | 国内直连 ChatGPT/Claude/Gemini 稳定优质的 API 接口服务
人工智能·github·ai编程
우리帅杰2 小时前
【AI测试】Python AI大模型介绍
开发语言·人工智能·python·ai编程
红信鸽3 小时前
Windsurf IDE实测:AI原生开发如何重构编程逻辑?
ai编程
Java知识技术分享3 小时前
node安装新版本,并解决opencode和claude code不能用问题
ai·个人开发·ai编程
放下华子我只抽RuiKe53 小时前
FastAPI 全栈后端(五):后台任务与消息队列
前端·javascript·react.js·ai·前端框架·fastapi·ai编程