前言

最近几个月,我的技术交流群里被问得最多的问题就是:“我想在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如何选择的话题,希望的对你会有所帮助。

1.设计哲学

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

1.1 Spring AI

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

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

开源地址:https://github.com/spring-projects/spring-ai

框架的核心理念是推广使用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库的空白。

开源地址:https://github.com/langchain4j/langchain4j

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

图片

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

2.核心特性

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

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

2.1 Spring AI的实现方式

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

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

配置文件也很简洁:

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

然后定义工具类:

@Component
publicclass 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
publicclass 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,依赖配置稍显复杂但也很清晰:

<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>

代码实现:

public class CustomerServiceAgent {
    
    publicstaticclass 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算法融合结果:

WITH vector_search AS (
-- 向量检索,按余弦距离排序
SELECT embedding_id, text, 
    RANK() OVER (ORDERBY embedding <=> :referenceVector) AS rnk
FROM embeddings
ORDERBY embedding <=> :referenceVector
LIMIT :candidateCount
),
keyword_search AS (
-- 关键词检索,PostgreSQL原生全文检索
SELECT embedding_id, text,
    RANK() OVER (ORDERBY 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)
ORDERBY ts_rank(...) DESC
LIMIT :candidateCount
)
-- FULL OUTER JOIN合并,RRF公式算最终分数
SELECTCOALESCE(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
FULLOUTERJOIN 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的场景
    • 项目基于Spring Boot/Cloud:希望以最低成本引入AI能力
    • 快速原型开发:需要快速搭建智能客服、内容生成等相对标准的AI应用
    • 企业级需求:需要Spring的监控、安全、配置管理等企业特性
    • 团队对Spring生态熟悉:希望复用现有技术积累
    // Spring AI快速实现RAG示例
    @Service
    publicclass 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的场景
      • 需要复杂AI工作流:构建自主决策、多工具协作的智能体
      • 项目非Spring技术栈:使用Quarkus、Micronaut等框架
      • 深度定制需求:需要更底层控制或扩展性
      • 熟悉Python LangChain:希望保持类似设计模式
      // LangChain4j多工具Agent示例
      publicclass 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实现复杂链和智能体。

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

      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作为补充。

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

        学习资源推荐

      如果你想更深入地学习大模型,以下是一些非常有价值的学习资源,这些资源将帮助你从不同角度学习大模型,提升你的实践能力。

      一、全套AGI大模型学习路线

      AI大模型时代的学习之旅:从基础到前沿,掌握人工智能的核心技能!​

      因篇幅有限,仅展示部分资料,需要点击文章最下方名片即可前往获取

      二、640套AI大模型报告合集

      这套包含640份报告的合集,涵盖了AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示

      ​因篇幅有限,仅展示部分资料,需要点击文章最下方名片即可前往获取

      三、AI大模型经典PDF籍

      随着人工智能技术的飞速发展,AI大模型已经成为了当今科技领域的一大热点。这些大型预训练模型,如GPT-3、BERT、XLNet等,以其强大的语言理解和生成能力,正在改变我们对人工智能的认识。 那以下这些PDF籍就是非常不错的学习资源。

      因篇幅有限,仅展示部分资料,需要点击文章最下方名片即可前往获取

      四、AI大模型商业化落地方案

      作为普通人,入局大模型时代需要持续学习和实践,不断提高自己的技能和认知水平,同时也需要有责任感和伦理意识,为人工智能的健康发展贡献力量。

      Logo

      更多推荐