前言

最近几个月,我的技术交流群里被问得最多的问题就是:“我想在Java项目里接入大模型,LangChain4j和Spring AI,到底选哪个?”

有些小伙伴可能已经发现,2025年是Java AI框架爆发的关键节点。

Spring AI在2025年5月正式发布1.0 GA版本,LangChain4j持续迭代到1.11.0并新增混合检索功能,阿里云也推出了AgentScope-Java和Spring AI Alibaba。

面对这些选择,不少Java开发者陷入了选择困难症。

今天这篇文章专门跟大家一起聊聊LangChain4j和Spring AI如何选择的话题,希望的对你会有所帮助。

更多项目实战在项目实战网:java突击队

1 设计哲学

任何技术选型,首先要理解的是设计者的初衷。

1.1 Spring AI

让AI开发像写Spring Boot一样自然。

Spring AI是Spring官方团队推出的AI应用开发框架,它的核心设计目标非常明确:将Spring生态系统的设计原则(可移植性、模块化、依赖注入)应用到AI领域

开源地址:github.com/spring-proj…

框架的核心理念是推广使用POJO作为AI应用的构建块,让开发者能用熟悉的方式开发AI应用。

Spring AI在2025年5月20日正式发布1.0 GA版本,标志着Spring生态在AI领域的重要布局。它借鉴了Python的LangChain和LlamaIndex的设计思想,同时保持了Spring特有的编程风格。

1.2 LangChain4j

把Python LangChain的威力带到Java。

LangChain4j则是LangChain在Java生态中的官方实现,始于2023年初,旨在填补Java生态缺乏与Python、JavaScript同等水平LLM库的空白。

开源地址:github.com/langchain4j…

它的设计理念是:为Java和Kotlin开发者提供完整的LLM应用开发工具链,无需Python桥接,原生支持Java。

从设计哲学的差异可以看出:Spring AI追求的是“Spring式”的开发体验,LangChain4j追求的是“LangChain式”的功能完整

2 核心特性

理论说再多,不如直接看代码。

我们用一个实际需求来对比:构建一个智能客服助手,需要能调用外部工具查询订单状态

2.1 Spring AI的实现方式

首先,Spring AI的依赖配置非常Spring风格:

xml

<dependency> <groupId>org.springframework.ai</groupId> <artifactId>spring-ai-starter</artifactId> <version>2.0.0-M2</version> </dependency>

配置文件也很简洁:

yaml

spring: ai: openai: api-key: ${OPENAI_API_KEY} chat: options: model: gpt-4

然后定义工具类:

java

@Component public class OrderTools { @Autowired private OrderService orderService; @Tool(description = "根据订单号查询订单状态") public String getOrderStatus(String orderId) { Order order = orderService.findByOrderId(orderId); if (order == null) { return "未找到订单"; } return String.format("订单状态:%s,下单时间:%s", order.getStatus(), order.getCreateTime()); } } @Service public class CustomerService { @Autowired private ChatClient chatClient; public String handleQuery(String userMessage) { return chatClient.prompt() .user(userMessage) .tools(new OrderTools()) // 注册工具 .call() .content(); } }

Spring AI 2.0.0-M2版本还加强了空安全API,整个代码库迁移到JSpecify规范,编译时就能检测空指针问题。

这种体验确实很"Spring"——声明式、配置驱动、与Spring Boot无缝集成。

2.2 LangChain4j的实现方式

再看LangChain4j,依赖配置稍显复杂但也很清晰:

xml

<dependency> <groupId>dev.langchain4j</groupId> <artifactId>langchain4j-core</artifactId> <version>1.11.0</version> </dependency> <dependency> <groupId>dev.langchain4j</groupId> <artifactId>langchain4j-open-ai</artifactId> <version>1.11.0</version> </dependency>

代码实现:

java

public class CustomerServiceAgent { public static class OrderTools { @Tool("根据订单号查询订单状态") public String getOrderStatus(@Tool("订单号") String orderId) { // 查询订单逻辑 return "订单状态:已发货"; } } public static void main(String[] args) { ChatModel model = OpenAiChatModel.builder() .apiKey(System.getenv("OPENAI_API_KEY")) .modelName("gpt-4") .build(); // 使用AiServices构建智能体 Assistant assistant = AiServices.builder(Assistant.class) .chatLanguageModel(model) .tools(new OrderTools()) .build(); String answer = assistant.chat("帮我查一下订单123456的状态"); System.out.println(answer); } interface Assistant { String chat(String userMessage); } }

LangChain4j的AiServices是它的核心抽象,从官方文档可以看到,它支持非常丰富的功能:系统消息模板、用户消息模板、会话记忆、RAG、工具调用、多种返回类型(String、POJO、枚举、TokenStream)等。

2.3 代码风格差异分析

从这两个例子能看出本质区别:

  • Spring AI:充分利用Spring的依赖注入和自动配置,代码量更少,对Spring开发者极其友好
  • LangChain4j:更注重功能的完整性,AiServices提供了丰富的配置选项,但需要手动装配

3 功能丰富度

在功能覆盖面上,LangChain4j目前有明显优势。

3.1 模型与向量存储支持

LangChain4j支持30多个主流LLM模型(OpenAI、Claude、Gemini、Qwen等)和20多个嵌入存储(Elasticsearch、Pinecone、Weaviate、Qdrant等)。

Spring AI也在快速追赶,但支持的模型和存储数量相对较少。

3.2 RAG(检索增强生成)能力

LangChain4j 1.11.0版本刚刚发布了PgVector混合检索功能,支持向量检索和关键词检索的融合,大幅提升RAG准确率。

从源码看,它通过一个CTE查询同时执行向量检索和全文检索,再用RRF算法融合结果:

sql

WITH vector_search AS ( -- 向量检索,按余弦距离排序 SELECT embedding_id, text, RANK() OVER (ORDER BY embedding <=> :referenceVector) AS rnk FROM embeddings ORDER BY embedding <=> :referenceVector LIMIT :candidateCount ), keyword_search AS ( -- 关键词检索,PostgreSQL原生全文检索 SELECT embedding_id, text, RANK() OVER (ORDER BY ts_rank( to_tsvector(:config, coalesce(text, '')), plainto_tsquery(:config, :query) ) DESC) AS rnk FROM embeddings WHERE to_tsvector(:config, coalesce(text, '')) @@ plainto_tsquery(:config, :query) ORDER BY ts_rank(...) DESC LIMIT :candidateCount ) -- FULL OUTER JOIN合并,RRF公式算最终分数 SELECT COALESCE(v.embedding_id, k.embedding_id) AS embedding_id, COALESCE(1.0 / (:rrfK + v.rnk), 0.0) + COALESCE(1.0 / (:rrfK + k.rnk), 0.0) AS score FROM vector_search v FULL OUTER JOIN keyword_search k ON v.embedding_id = k.embedding_id ...

这种深度集成的能力,体现了LangChain4j在功能细节上的用心。

3.3 智能体(Agent)能力

在Agent领域,LangChain4j提供了更丰富的模式。

Devoxx的workshop专门讨论了从LLM编排到自主Agent的演进,涵盖动态决策、记忆、工具使用、MCP和A2A集成等高级主题。

Spring AI虽然也支持工具调用,但在多智能体协作、自主决策等复杂场景上,功能相对基础。

功能对比表格

维度

Spring AI

LangChain4j

模型支持

主流模型

30+模型,更丰富

向量存储

部分支持

20+存储,更全面

RAG能力

基础功能

混合检索、高级RAG

Agent能力

工具调用

链、智能体、多智能体协作

记忆管理

基础

多种内存策略

流式处理

支持

支持

函数调用

支持(@Tool)

支持(@Tool)

4 生态集成

虽然功能上LangChain4j领先,但生态集成是Spring AI的绝对主场。

4.1 Spring生态深度集成

Spring AI与Spring Boot、Spring Cloud无缝集成,提供自动配置、Actuator监控、依赖注入等特性。

对于已有Spring技术栈的企业,引入Spring AI几乎零成本。

4.2 阿里云的增强版本

阿里巴巴基于Spring AI推出了Spring AI Alibaba,进一步增强了多智能体编排能力(SupervisorAgent、SequentialAgent、LoopAgent),并与阿里云的模型、工具、Nacos、Higress AI网关等深度集成。

对于国内企业,这意味着更完善的技术支持和企业级特性。

4.3 LangChain4j的多框架支持

LangChain4j虽然也支持Spring Boot(社区提供Starter),但它更注重框架中立性,同样可以无缝集成到Quarkus、Micronaut等其他Java框架中。

如果你的项目不是Spring技术栈,LangChain4j会是更灵活的选择。

5 社区成熟度与学习曲线

5.1 社区成熟度

LangChain4j基于Python LangChain的设计理念,在AI应用开发模式上积累了丰富的实践经验。它的社区更早起步,功能迭代更激进。

Spring AI虽然相对较新,但有Spring官方团队背书,社区活跃度增长迅速。Spring AI 2.0.0-M2版本包含94项变更,包括36项改进和16个bug修复,展现出稳健的迭代节奏。

5.2 学习曲线

Spring AI的学习曲线更平缓:如果你熟悉Spring Boot,上手Spring AI可能只需要半天。它的设计理念就是让开发者用熟悉的方式开发AI应用。

LangChain4j的学习曲线相对陡峭:需要理解Chain、Tool、Memory、Agent等一系列新概念。但一旦掌握,能驾驭更复杂的AI应用场景。

6 选型指南

根据上面的分析,我给出以下选型建议:

6.1 选Spring AI的场景

  1. 项目基于Spring Boot/Cloud:希望以最低成本引入AI能力
  2. 快速原型开发:需要快速搭建智能客服、内容生成等相对标准的AI应用
  3. 企业级需求:需要Spring的监控、安全、配置管理等企业特性
  4. 团队对Spring生态熟悉:希望复用现有技术积累
java

// Spring AI快速实现RAG示例 @Service public class RagService { @Autowired private VectorStore vectorStore; @Autowired private ChatClient chatClient; public String query(String question) { // 1. 向量检索 List<Document> documents = vectorStore.similaritySearch(question); // 2. 增强提示 String prompt = """ 基于以下资料回答问题: %s 问题:%s """.formatted(documents, question); // 3. 生成答案 return chatClient.prompt(prompt).call().content(); } }

6.2 选LangChain4j的场景

  1. 需要复杂AI工作流:构建自主决策、多工具协作的智能体
  2. 项目非Spring技术栈:使用Quarkus、Micronaut等框架
  3. 深度定制需求:需要更底层控制或扩展性
  4. 熟悉Python LangChain:希望保持类似设计模式
java

// LangChain4j多工具Agent示例 public class ResearchAgent { interface Researcher { @SystemMessage("你是一个研究助手,可以联网搜索、查阅文档、总结信息") String research(@UserMessage String query); } public static void main(String[] args) { Researcher researcher = AiServices.builder(Researcher.class) .chatLanguageModel(model) .tools(new WebSearchTool(), new DocumentReaderTool(), new SummaryTool()) .chatMemory(MessageWindowChatMemory.withMaxMessages(10)) .build(); // 智能体会自主决定调用哪些工具 String result = researcher.research("Spring AI和LangChain4j的优缺点对比"); } }

6.3 混合使用方案

还有一种折中方案:用Spring AI管理模型调用和基础设施,用LangChain4j实现复杂链和智能体

两者可以共存于同一个项目中,发挥各自优势。

更多项目实战在项目实战网:java突击队

7 未来展望

从最近的发展看,两个框架都在快速进化:

  • Spring AI:2.0版本加强空安全API、MCP协议支持、更多向量存储集成
  • LangChain4j:1.11.0版本强化混合检索、Agentic模式支持流式和多模态
  • Spring AI Alibaba:提供Graph工作流编排、AgentScope集成、企业级解决方案
  • AgentScope-Java:以Agentic为核心设计,提供ReActAgent、ReMe记忆管理等

未来12个月,两者在功能上的差距会逐渐缩小,但设计哲学的根本差异会持续存在。

总结

回到最初的问题:LangChain4j和Spring AI,哪个更好?

我的答案是:没有绝对的好坏,只有适合与否

  • Spring AI像“官方配餐”——如果你在Spring生态中、需要快速落地标准AI应用,它能让开发效率最大化
  • LangChain4j像“自助餐”——如果你需要构建复杂AI智能体、深度定制、跨框架支持,它提供更丰富的选择

有些小伙伴可能会纠结:我们团队用Spring Boot,但未来可能需要复杂AI能力。

我的建议是:先用Spring AI快速验证业务价值,遇到复杂工作流时引入LangChain4j作为补充

两者不是非此即彼的关系,而是可以共存的工具。

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐