【AI应用开发捷径之路】第一课:SpringAi基础知识点

2025-12-29 17:58:14
文章摘要
本文主要介绍springAi的一些核心概念

文章转载自[DAT数智AI技术 ]

原创 小数先生

摘要

本文主要介绍springAi的一些核心概念:

1、提示词工程
2、对话拦截器advisors
3、对话记忆
4、tools
5、RAG技术下的ETL
6、MCP
7、langchain4j VS spring AI
8、大模型选型

1、提示词工程

可以说是大模型应用中最简单也是最核心的一个技术。他是我们跟大模型交互的媒介,提示词给的好大模型才能按你想要的方式响应。

2、对话拦截器advisors

springAI提供了一个对话拦截器,拦截到用户的提示词后,调用大模型进行推理;推理完成后,将结果返回拦截器,拦截器可以对大模型返回的结果进行检索、RAG增强等一系列业务操作后,再将包装后的结果返回给用户。


3、对话记忆

@Autowired

private ChatMemoryRepository chatMemoryRepository;

通过一个bean组件就可以让大模型拥有对话记忆功能,可谓是做到了开箱即用。

4、tools

让大模型可以跟企业业务API进行互联,这一块实现起来也是非常的优雅,

Spring AI Tools 交互流程图

简化版本(更清晰)


核心交互步骤

用户提问- 用户向应用发送自然语言问题

模型决策- 大模型分析问题,决定调用哪个工具

工具执行- Spring AI调用对应的业务工具执行具体操作

结果合成- 大模型将工具返回的数据组织成自然语言

返回答案 - 最终用户获得友好易懂的回答

技术实现示例

@Component

public class WeatherService {


    @Tool(description = “根据城市名称获取天气信息”)

    public String getWeather(@P(description = “城市的名称,例如:北京、上海”) String city) {

        // 这里调用您的业务API或服务

        return weatherApiClient.getWeatherByCity(city);

    }

}

这种设计让大模型能够智能地使用企业现有的业务API,实现真正的业务智能化。


5、RAG技术下的ETL

让大模型可以跟企业的业务数据进行互联(包括读取文件、分隔文件、向量化)向量数据库支持 ,目前支持20+种向量数据库的集成。通过 RAG ETL 流程,企业可以将散落在各处的、非结构化的业务数据,转换成了大模型可以理解和利用的“知识”,实现了大模型与企业内部数据的深度互联,有效解决了大模型的“幻觉”问题和知识陈旧问题。

RAG ETL 与企业数据互联交互图

核心组件与流程详解

第一阶段:ETL 数据准备与注入

读取文件

输入:从企业各个业务系统获取原始文档,支持多种格式:

文档类:PDF, Word, Excel, PowerPoint

文本类:TXT, Markdown

网页类:HTML, XML

代码库:Java, Python 等源代码

解析与文本提取

使用相应的解析库(如 Apache POI, PDFBox, Tika)从文件格式中提取出纯文本内容。

同时保留重要的元信息,如文件名、章节标题、创建日期等。

文档分割

这是影响检索效果的关键步骤。将长文本分割成更小的、语义完整的“文本块”。

分割策略

按固定长度:简单高效,但可能切断语义连贯性。

按语义分割:使用自然语言处理技术,在句子或段落边界进行分割,保证块内的语义完整性。

重叠分割:让相邻的文本块有部分重叠,避免信息在边界丢失。

向量化

使用Embedding 模型(如 OpenAI text-embedding, BGE, M3E等)将每个文本块转换为一个高维向量(例如 768 或 1536 维)。

这个向量在数学上代表了文本的语义信息,语义相近的文本其向量在空间中的距离也更近。

向量数据库存储

向量原始文本块以及相关的元数据一并存入向量数据库。

Spring AI 的优势:提供了统一的抽象层,支持20+ 种向量数据库,如:

云原生:Pinecone, Azure AI Search

开源:Chroma, Weaviate, Milvus/Zilliz, Qdrant

传统扩展:Redis, PostgreSQL (Pgvector), Cassandra



第二阶段:RAG 查询与增强

用户提问:用户提出一个自然语言问题。

问题向量化:使用同样的 Embedding 模型将用户问题转换为向量。

向量检索:在向量数据库中执行相似性搜索(如余弦相似度),找到与“问题向量”最相似的“文本块向量”。

提示词增强:将检索到的相关文本块作为“上下文”或“参考依据”,与原始问题一起构建成一个增强的提示词,发送给大模型。

生成答案:大模型基于提供的权威上下文(而不是仅靠自身训练时的知识)生成一个更准确、更可靠的答案。



6、MCP

让tools外部化,形成公共工具让外部开箱即用。通过 Spring AI 的 MCP 支持,企业可以构建一个标准化的、可扩展的 AI 工具生态,让大模型真正成为连接各种业务系统的智能枢纽。

Spring AI MCP (Model Context Protocol) 交互图

MCP 架构组件详解

核心组件

Spring AI MCP 客户端

集成在 Spring AI 应用中,负责与 MCP 服务端通信

自动发现和注册远程工具到本地的 AI 上下文

提供统一的工具调用接口

MCP 传输层

支持多种传输协议:Stdio、HTTP、WebSocket

处理消息的序列化/反序列化

管理连接的生命周期

MCP 服务端

托管和暴露一组相关的工具函数

可以是独立的进程或服务

实现工具的具体业务逻辑

外部工具集

公共工具库:可复用的通用工具(天气、计算、翻译等)

企业工具:内部业务系统的标准化接口

第三方服务:SaaS 服务的标准化连接器

MCP 认证授权

基于 Token 的身份验证

工具级别的访问权限控制

传输层的数据加密


Spring MCP Agent 项目架构

技术实现价值

1. Tools 外部化优势

开箱即用:公共工具库可以直接引入使用

标准化:统一的工具定义和调用规范

语言无关:不同语言实现的 MCP Server 可以互相调用

生态共享:形成工具市场,避免重复造轮子


2. Spring MCP Agent 特性

@Configuration

@EnableMcpClient

public class McpConfig {


    @Bean

    public McpServerConfig databaseServer() {

        return McpServerConfig.builder()

        .name(“database-tools”)

        .url(“stdio:///path/to/database-mcp-server”)

        .authentication(AuthConfig.token(“secret-token”))

        .build();

    }


    @Bean 

    public McpServerConfig apiGatewayServer() {

        return McpServerConfig.builder()

        .name(“api-gateway”)

        .url(“http://api-gateway-mcp:8080”)

        .build();

    }

}


3. 企业级特性

工具治理:版本管理、熔断降级、监控告警

安全管控:细粒度的权限控制、审计日志

性能优化:连接池、缓存策略、批量操作

7、langchain4j VS spring AI

8、大模型选型

选择合适的AI大模型确实是个需要仔细考量的问题,它就像是为企业挑选一位合适的“数字员工”。下面这个表格汇总了主流模型及其特点它们的关键信息:

明确你的选择方向除了具体模型,还可以从以下几个宏观方向来规划选型路径:

开源 vs 闭源

开源模型(如LLaMA, Qwen):提供更高的可控性、灵活性和数据安全性,适合进行私有化部署和深度定制。它们通常能降低授权成本,拥有活跃的社区支持。

闭源模型(如GPT-4):通常由大公司维护,开箱即用,能力全面且更新频繁,但需要依赖API调用,可能存在数据隐私方面的考虑。

通用 vs 垂直领域

通用大模型:能力全面,旨在处理各种任务。

垂直领域模型:针对特定行业(如医疗、法律、金融)进行优化,在专业任务上表现更精准可靠。例如,在法律辅助判案系统中,通过对通用模型进行领域知识的微调,可以显著提升法条引用的准确率。

参数规模与效率

模型参数并非越大越好。目前,7B至13B参数级别的模型已成为实用主流,在性能与资源消耗间取得了良好平衡。对于大多数应用场景,可以从这些规模的模型开始尝试。



模型排行榜(20251201):https://rank.opencompass.org.cn/home



🧭 五步找到合适模型

可以遵循以下五个步骤,来找到最适合自己需求的模型:

定义核心需求

首先要问自己:我用这个模型来解决什么问题?是创作文案、解答专业问题、分析长文档,还是编写代码?清晰的目标是选型的第一步。同时,也需要考虑预算、数据敏感性以及对响应速度的要求

评估关键能力

根据你的需求,重点关注模型在相应维度的表现:

语言能力:特别是中文的理解与生成质量。

专业领域知识:例如,在医疗诊断或金融分析场景中,模型的输出必须准确可靠,避免产生误导。

逻辑与推理:处理复杂任务和数学问题的能力。

代码能力:代码生成和调试的水平。

上下文长度:模型单次能处理的文本量,对于分析长文档至关重要。

权衡资源与成本

模型越大,功能通常越强,但所需的计算资源和部署成本也越高。你需要评估自身的硬件条件和技术实力,选择能够负担且便于部署的模型。对于中小团队,从开源模型入手是不错的选择。

进行实际测试

“是骡子是马,拉出来遛遛。”在缩小范围后,一定要用你业务中的真实数据去测试候选模型。观察它们在相同提示词(Prompt)下的输出质量、稳定性和逻辑性。

关注合规与安全

如果您的应用涉及金融、医疗、教育等高监管行业,必须特别关注模型的合规性。这包括数据隐私保护、算法的可解释性、输出内容的公平性以及是否符合行业法规等。


💡 值得关注的趋势

轻量化与效率提升:模型的训练和推理效率越来越受重视,轻量化技术能让大模型在更小的设备上运行。

AI for Science:大模型正被用于加速科学研究,例如在材料科学、天文学等领域进行数据分析和推理。

智能体(Agent)生态:大模型作为“大脑”,驱动自主智能体完成复杂任务(如规划、调用工具)正成为重要方向。



声明:该内容由作者自行发布,观点内容仅供参考,不代表平台立场;如有侵权,请联系平台删除。
标签:
开发平台与工具
模型部署
企业级大模型