简介
欢迎!
LangChain4j 的目标,是让在 Java 应用中集成 LLM 变得更简单。
具体来说:
- 统一 API: LLM 提供商(例如 OpenAI 或 Google Vertex AI)以及 embedding(向量)存储(例如 Pinecone 或 Milvus)都使用各自专有的 API。LangChain4j 提 供统一 API,让你无需分别学习和实现每一家厂商的专用接口。 如果你想尝试不同的 LLM 或 embedding 存储,也可以轻松切换,而不必重写代码。 LangChain4j 目前支持 20+ 主流 LLM 提供商 和 30+ embedding 存储。
- 完整工具箱: 从 2023 年初开始,社区就在持续构建大量由 LLM 驱动的应用,并逐渐提炼出常见的抽象、模式和技术。LangChain4j 将这些经验打磨成一个开箱即用的工具包。 我们的工具箱覆盖从底层的提示词模板、聊天记忆管理、函数调用, 到高层的 Agents 与 RAG 等模式。 对于每一种抽象,我们都提供接口以及多种基于常见技术的现成实现。 无论你是在构建聊天机器人,还是在开发一条完整的数据摄取到检索链路的 RAG, LangChain4j 都能提供丰富的选择。
- 大量示例: 这些示例展示了如何开始构建各种由 LLM 驱动的应用, 既能提供灵感,也能帮助你快速起步。
LangChain4j 于 2023 年初在 ChatGPT 热潮中启动开发。 我们注意到,在众多 Python 和 JavaScript 的 LLM 库与框架之外,Java 生态中缺少相应的高质量方案, 于是我们决定补上这一块。
不是 LangChain(Python)的移植版
尽管名字相似,LangChain4j 并不是 LangChain(Python)的 Java 移植版,而是为 Java 原生设计的库。 它是一套符合 Java 习惯的库,从一开始就围绕 Java 的开发约定构建: 类型安全、POJO、注解、接口、依赖注入、流式 API,以及对 Quarkus、Spring Boot、 Helidon 和 Micronaut 的一等集成支持。 它的 API、内部实现和发布节奏都独立于 Python LangChain 项目。
我们持续关注社区的新进展,并尽可能快速地引入新的技术和集成能力, 确保你能够跟上最新实践。 这个库仍在积极演进中。虽然部分特性还在持续完善, 但核心能力已经可用,你现在就可以开始构建由 LLM 驱动的应用。
为了便于集成,LangChain4j 还提供了对 Quarkus、Spring Boot、Helidon 和 Micronaut 的集成支持。
LangChain4j 特性
- 集成 20+ LLM 提供商
- 集成 30+ embedding(向量)存储
- 集成 20+ embedding 模型
- 集成 5+ 聊天记忆存储
- 集成 5+ 图像生成模型
- 集成 5+ 打分(重排序)模型
- 集成一个内容审核模型(OpenAI)
- 支持文本和图像作为输入(多模态)
- AI Services(高层 LLM API)
- Agents 与 Agentic AI
- Skills
- 提示词模板
- 持久化和内存型 聊天记忆 算法实现:消息窗口和 token 窗口
- LLM 响应流式输出
- 面向常见 Java 类型和自定义 POJO 的输出解析器
- Tools(函数调用)
- Dynamic Tools(执行动态生成的 LLM 代码)
- RAG(检索增强生成):
- Ingestion:
- 从多种来源导入多种类型的文档(TXT、PDF、DOC、PPT、XLS 等),例如文件系统、URL、GitHub、Azure Blob Storage、Amazon S3 等
- 使用多种切分算法将文档拆分为更小的片段
- 对文档和片段进行后处理
- 使用 embedding 模型为片段生成向量
- 将向量存入 embedding(向量)存储
- Retrieval(简单与高级):
- 查询变换(扩展、压缩)
- 查询路由
- 从向量存储和/或任意自定义来源进行检索
- 重排序
- Reciprocal Rank Fusion
- 定制 RAG 流程中的每一个环节
- Ingestion:
- 文本分类
- Token 切分与数量估算工具
- Kotlin 扩展:借助 Kotlin 协程能力异步、非阻塞地处理聊天交互。
两个抽象层级
LangChain4j 提供两个抽象层级:
- 低层。这个层级提供最大自由度,并允许你访问所有底层组件,例如
ChatModel、
UserMessage、AiMessage、EmbeddingStore、Embedding等。 这些都是构建 LLM 应用的“原语”。 你可以完全控制它们的组合方式,但也需要自己编写更多胶水代码。 - 高层。这个层级通过 AI Services 这样的高级 API 与 LLM 交互, 从而隐藏底层复杂性和样板代码。 你依然可以灵活调整和细化行为,只是方式变成了声明式。
