news 2026/5/1 10:47:24

LangChain4j 项目架构分析

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
LangChain4j 项目架构分析

LangChain4j 项目架构分析

请关注公众号【碳硅化合物AI】

概述

LangChain4j 是 Java 生态里的 LLM 集成框架,2023 年初启动,当时 Java 这边还没有成熟的 LLM 库。核心思路是统一 API,降低复杂度。

不同 LLM 提供商(OpenAI、Anthropic、Google 等)的 API 格式不同,向量数据库(Pinecone、Milvus、Chroma 等)的接口也不一样。切换提供商通常需要重写代码。LangChain4j 通过统一接口抽象,让切换只需改依赖,业务代码不变。

实际使用中,这种抽象带来的好处很明显:开发阶段可以用本地模型(Ollama)快速迭代,生产环境切换到 OpenAI 或 Azure,代码几乎不用改。向量存储也是,本地开发用 InMemoryEmbeddingStore,生产用 Pinecone 或 Milvus,接口完全一致。

模块结构

项目是 Maven 多模块,分层清晰:

langchain4j-core是基础层,只定义接口,几乎无外部依赖(只有 Jackson、SLF4J)。定义了ChatModelEmbeddingStoreChatMemory等核心接口,以及DocumentChatMessage等数据模型。

langchain4j是主模块,依赖 core,提供实现:AI Services(声明式接口)、文档加载/分割、记忆实现、RAG 组件等。

集成模块有 50+ 个,分几类:

  • LLM 集成:OpenAI、Anthropic、Google Gemini、Ollama、Azure OpenAI 等 20+ 个
  • 向量存储:Pinecone、Milvus、Chroma、Qdrant、pgvector 等 30+ 个
  • 文档处理:loaders(S3、Azure Blob、GitHub)、parsers(PDF、Word、Markdown)、transformers
  • 其他:agentic(实验性)、mcp、easy-rag、http-client 抽象

这种设计的好处是:只引入需要的模块,不会拖一堆不必要的依赖。比如只用 OpenAI 和 Pinecone,就只引入这两个模块。

模块化架构

依赖关系图

模块依赖层次

  1. 最底层langchain4j-core- 只定义接口,几乎无依赖
  2. 中间层langchain4j- 依赖 core,提供实现
  3. 集成层:各种langchain4j-{provider}模块 - 依赖 core 或主模块,实现具体集成
  4. 聚合层langchain4j-aggregator- 聚合所有模块,用于构建整个项目

这种设计的好处是:

  • 松耦合:每个集成模块可以独立使用
  • 可替换:可以轻松切换不同的提供商
  • 易测试:核心抽象可以独立测试

BOM(Bill of Materials)

项目提供了langchain4j-bom模块,用于统一管理所有模块的版本。使用 BOM 后,你只需要指定 BOM 版本,各个模块的版本会自动对齐:

<dependencyManagement><dependencies><dependency><groupId>dev.langchain4j</groupId><artifactId>langchain4j-bom</artifactId><version>1.10.0</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement>

核心用法

AI Services 是框架的核心特性,用接口定义服务,框架自动生成实现(基于动态代理)。

// 定义接口interfaceAssistant{Stringchat(StringuserMessage);}// 创建服务实例ChatModelmodel=OpenAiChatModel.builder().apiKey(System.getenv("OPENAI_API_KEY")).modelName(GPT_4_O_MINI).build();Assistantassistant=AiServices.create(Assistant.class,model);Stringanswer=assistant.chat("Hello");

带记忆的多轮对话:

interfaceChatBot{@SystemMessage("You are a helpful assistant")Stringchat(@MemoryIdStringuserId,StringuserMessage);}ChatBotbot=AiServices.builder(ChatBot.class).chatModel(model).chatMemoryProvider(memoryId->newInMemoryChatMemory(memoryId)).build();bot.chat("user1","What's 2+2?");// 4bot.chat("user1","What did I just ask?");// 能记住之前的问题

RAG 流程:加载文档 → 分割 → 生成嵌入 → 存储 → 检索增强。

// 文档处理DocumentLoaderloader=newFileSystemDocumentLoader(Paths.get("docs"));List<Document>docs=loader.load();DocumentSplittersplitter=newDocumentByParagraphSplitter(300,0);List<TextSegment>segments=splitter.splitAll(docs);// 嵌入和存储EmbeddingModelembeddingModel=newAllMiniLmL6V2EmbeddingModel();EmbeddingStore<TextSegment>store=newInMemoryEmbeddingStore<>();for(TextSegmentsegment:segments){Embeddingembedding=embeddingModel.embed(segment.text()).content();store.add(embedding,segment);}// RAG 服务interfaceRAGService{Stringanswer(Stringquestion);}RAGServiceservice=AiServices.builder(RAGService.class).chatModel(model).contentRetriever(EmbeddingStoreContentRetriever.builder().embeddingStore(store).embeddingModel(embeddingModel).maxResults(3).build()).build();

实际应用

常见场景:智能客服(带记忆)、文档问答(RAG)、内容生成、数据提取分类、Agent 系统(实验性)。

优缺点

优点:统一 API 易切换、声明式编程代码简洁、模块化按需引入、集成丰富(50+ 模块)、Java 原生。

缺点:项目较新生态还在发展、文档示例有限、动态代理有性能开销、学习曲线(特别是 RAG/Agent)、模块多需用 BOM 管理版本。

实际使用建议:开发阶段用本地模型(Ollama)快速迭代,生产环境再切换;向量存储本地用 InMemory,生产用 Pinecone/Milvus;高频调用场景注意性能,可能需要缓存或优化。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/23 15:54:27

揭秘AI原生应用中自然语言理解的技术架构

揭秘AI原生应用中自然语言理解的技术架构 关键词:自然语言理解(NLU)、AI原生应用、意图识别、实体抽取、语义解析、Transformer、多模态融合 摘要:在AI原生应用(如智能助手、AI客服、内容生成工具)中,自然语言理解(NLU)是让机器“听懂”人类语言的核心技术。本文将以“…

作者头像 李华
网站建设 2026/4/22 7:33:24

远程开发AI模型:SSH连接PyTorch-CUDA-v2.6镜像详细步骤

远程开发AI模型&#xff1a;SSH连接PyTorch-CUDA-v2.6镜像实战指南 在深度学习项目日益复杂的今天&#xff0c;一个常见的场景是&#xff1a;你手头有一台轻薄本&#xff0c;却要训练一个上亿参数的视觉模型。本地跑不动&#xff0c;环境又难配——驱动、CUDA版本、cuDNN兼容性…

作者头像 李华
网站建设 2026/5/1 0:05:30

vivado2023.2安装常见问题解析:系统学习手册

Vivado 2023.2 安装避坑指南&#xff1a;从下载到激活的实战全解析 你是不是也曾在准备开启 FPGA 开发之旅时&#xff0c;满怀期待地打开 Xilinx 官网&#xff0c;点下“下载 Vivado 2023.2”按钮&#xff0c;结果却在安装过程中被各种报错拦住去路&#xff1f;界面卡死、系统…

作者头像 李华
网站建设 2026/5/1 6:39:35

【CMake】概述

CMake 是一个跨平台的自动化构建系统&#xff0c;用于管理软件构建过程。它使用独立于编译器的配置文件&#xff08;CMakeLists.txt&#xff09;来定义构建规则&#xff0c;然后生成对应平台的本地构建文件&#xff08;如 Makefile、Visual Studio 项目等&#xff09;。 核心特…

作者头像 李华
网站建设 2026/4/28 3:35:51

es查询语法在告警系统中的调试实践:完整示例

用好 ES 查询语法&#xff0c;让告警系统不再“瞎叫”&#xff1a;一个工程师的实战手记 你有没有遇到过这样的场景&#xff1f; 凌晨三点&#xff0c;手机突然疯狂震动——又一条告警弹了出来&#xff1a;“应用出现大量 ERROR 日志&#xff01;” 你一个激灵爬起来查日志&a…

作者头像 李华
网站建设 2026/4/30 7:28:55

PyTorch-CUDA-v2.6镜像运行GPT-2文本生成模型实操

PyTorch-CUDA-v2.6镜像运行GPT-2文本生成模型实操 在深度学习项目中&#xff0c;最让人头疼的往往不是模型本身&#xff0c;而是“环境配置”这个前置环节。你有没有经历过这样的场景&#xff1a;好不容易复现一篇论文代码&#xff0c;结果 torch 和 CUDA 版本不兼容&#xff…

作者头像 李华