介绍
欢迎使用!
LangChain4j 的目标是简化在 Java 应用中集成大语言模型(LLM)的过程。
具体方式如下
- 统一 API
各类 LLM 提供商(如 OpenAI、Google Vertex AI)以及向量数据库(如 Pinecone、Milvus)通常采用各自的专有 API。LangChain4j 提供了统一的 API,使您无需为每个服务单独学习和实现其 API。
在尝试不同的 LLM 或向量数据库时,您可以轻松切换,无需重写代码。
LangChain4j 目前已支持 15+ 主流 LLM 提供商 和 20+ 向量数据库。 - 全面工具箱
自 2023 年初以来,社区开发了大量基于 LLM 的应用,逐渐沉淀出常见的抽象、模式和方法。LangChain4j 将这些内容整合成一个开箱即用的工具包。
工具箱涵盖从底层的提示模板、聊天记忆管理、函数调用,到高层的 Agents 和 RAG 等模式。
每个抽象都配备接口和多种常用实现,便于直接使用。无论是开发聊天机器人,还是构建涵盖数据导入到检索的完整 RAG 流程,LangChain4j 都能提供丰富选择。 - 丰富示例
这些 示例 展示了如何快速开始构建不同的 LLM 应用,既能提供灵感,也能帮助您高效上手。
LangChain4j 于 2023 年初在 ChatGPT 热潮中启动。我们发现市面上缺乏 Java 生态的 LLM 框架,而 Python 与 JavaScript 却已有大量方案,因此决定填补这一空白。
虽然名字中有 “LangChain”,但本项目融合了 LangChain、Haystack、LlamaIndex 以及更广泛社区的理念与经验,并加入了我们自身的创新。
我们会持续跟踪社区最新进展,快速引入新的技术与集成,确保您始终保持前沿。
该库目前正积极迭代,尽管部分功能仍在开发中,但核心能力已可稳定使用,您可以立即开始构建基于 LLM 的应用。
为了便于集成,LangChain4j 还支持与 Quarkus、Spring Boot、Helidon 和 Micronaut 的集成。
LangChain4j 功能
支持集成 15+ LLM 提供商
支持集成 20+ 向量数据库
支持集成 15+ 向量模型
支持集成 5 个图像生成模型
支持集成 2 个排序(重排序)模型
集成 1 个审核模型(OpenAI)
支持文本和图像作为输入(多模态)
AI 服务(高层 LLM API)
提示模板
持久化与内存型 聊天记忆 算法实现,包括消息窗口和 Token 窗口
常见 Java 类型及自定义 POJO 的输出解析器
动态工具(执行 LLM 动态生成的代码)
数据导入
- 从多种来源(文件系统、URL、GitHub、Azure Blob、Amazon S3 等)导入 TXT、PDF、DOC、PPT、XLS 等文档
- 使用多种算法将文档分割为小片段
- 对文档及片段进行后处理
- 使用嵌入模型生成向量
- 将向量存储至数据库
检索(基础与高级)
- 查询扩展、压缩等转换
- 查询路由
- 从向量库及自定义数据源检索
- 结果重排序
- Reciprocal Rank Fusion 算法
- 可定制 RAG 流程的每个步骤
文本分类
Token 分词与 Token 数量估算工具
Kotlin 扩展:基于 Kotlin 协程的异步非阻塞聊天交互
两个抽象层次
LangChain4j 提供两层抽象
- 底层。在该层中,您可以使用全部基础组件,如 ChatModel、
UserMessage
、AiMessage
、EmbeddingStore
、Embedding
等。
这些是构建 LLM 应用的原始单元,您拥有最大自由度,但需要编写更多代码。 - 高层。在该层中,您通过 AI 服务 等高层 API 与 LLM 交互,屏蔽了底层复杂性与样板代码。
您仍可灵活调整和优化其行为,但以声明式方式进行。

LangChain4j 库结构
LangChain4j 采用模块化设计,包括
langchain4j-core
模块:定义核心抽象(如ChatModel
、EmbeddingStore
)及其 API。- 主
langchain4j
模块:提供文档加载器、聊天记忆 实现及 AI 服务 等高层功能。 - 多个
langchain4j-{integration}
模块:提供与不同 LLM 提供商和向量数据库的集成。
您可以单独使用这些模块,如需额外功能,只需引入主langchain4j
依赖即可。
LangChain4j 仓库
使用场景
为什么需要这些功能?以下是一些典型示例
您希望实现一个自定义 AI 聊天机器人,可以访问您的数据并按照设定的方式运行
客服机器人:
- 礼貌回答客户问题
- 处理订单变更或取消
教学助手:
- 授课不同学科内容
- 解释难点
- 评估用户的理解与知识水平
您希望处理大量非结构化数据(文件、网页等),并提取结构化信息
- 从客户评价和客服对话中提取洞察
- 从竞争对手网站提取有价值信息
- 从应聘者简历中提取关键信息
您希望生成信息
- 为客户生成个性化邮件
- 为应用或网站生成内容,如博客文章、故事等
您希望对信息进行转换
- 总结
- 校对与改写
- 翻译
社区集成
LangChain4j 在 社区仓库 中维护部分集成。
这些集成功能与主仓库保持一致,唯一区别是其构件与包名不同(带有 community
前缀)。
社区仓库的设立旨在分担部分集成的维护,使主仓库的管理更加高效。