LangChain4j 是一款面向 Java 生态的开源框架,专注于简化大语言模型(LLM)应用开发。它借鉴 LangChain 核心理念,适配 Java 技术栈特性,支持集成 OpenAI、Claude 等商业模型及 Llama 2 等开源模型,提供 Prompt 管理、对话记忆、工具调用、Chain/Agent 编排等能力,可结合向量数据库实现 RAG 功能,且兼容 Spring Boot 等主流框架,助力开发者快速构建智能对话、知识库问答等 LLM 应用。
LangChain4j 的目标是简化将大语言模型(LLMs)集成到 Java 应用程序中的过程。具体方式如下:
大语言模型(LLM)提供商(如 OpenAI 或谷歌 Vertex AI)以及嵌入(向量)存储(如 Pinecone 或 Milvus)都使用专有接口。
LangChain4j 提供了一个统一的接口,这样就无需为每一个提供商或存储学习和实现特定的接口。要试用不同的大语言模型或嵌入存储时,你可以轻松地在它们之间切换,而无需重写代码。
目前,LangChain4j 支持15 多家主流的大语言模型提供商和 20 多个嵌入存储。
自 2023 年初以来,社区一直在构建众多由大语言模型驱动的应用程序,确定了常见的抽象概念、模式和技术。
LangChain4j 已将这些提炼成一个可直接使用的包。我们的工具库包含多种工具,既有低层级的提示词模板、聊天记忆管理和函数调用,也有高层级的模式,如智能体(Agents)和检索增强生成(RAG)。
对于每一种抽象概念,我们都提供了一个接口,以及多个基于常见技术、可直接使用的实现。
无论你是在构建聊天机器人,还是开发具有从数据摄入到检索完整流程的检索增强生成(RAG)系统,LangChain4j 都能提供多种选择。
LangChain4j 提供丰富的示例,这些示例展示了如何着手创建各种由大语言模型驱动的应用程序,既能带来灵感,也能让你快速开始构建。
集成 15+ 个嵌入模型
集成 5 个图像生成模型
集成 2 个评分(重排序)模型
集成一个审核模型(OpenAI)
支持文本和图像作为输入(多模态)
AI 服务(高级 LLM API)
提示模板
实现持久化和内存中的聊天记忆算法:消息窗口和令牌窗口
用于常见 Java 类型和自定义 POJO 的输出解析器
动态工具(执行动态生成的 LLM 代码)
摄取:
从多个来源(文件系统、URL、GitHub、Azure Blob Storage、Amazon S3 等)导入各种类型的文档(TXT、PDF、DOC、PPT、XLS 等)
使用多种分割算法将文档分割成更小的段落
文档和段落的后处理
使用嵌入模型嵌入段落
在嵌入(向量)存储中存储嵌入
检索(简单和高级):
查询转换(扩展、压缩)
查询路由
从向量存储和/或任何自定义源检索
重排序
倒数排名融合
自定义 RAG 流程中的每个步骤
文本分类
用于分词和估算令牌数的工具
Kotlin 扩展:使用 Kotlin 的协程功能异步非阻塞处理聊天交互。
LangChain4j 在两个抽象层次上运行:
低层次:在这个层次上,您拥有最大的自由度和访问所有低级组件的权限,如 ChatLanguageModel、UserMessage、AiMessage、EmbeddingStore、Embedding 等。 这些是您的 LLM 驱动应用程序的 "原语"。 您可以完全控制如何组合它们,但需要编写更多的粘合代码。
高层次:在这个层次上,您使用高级 API(如 AI 服务)与 LLM 交互, 它隐藏了所有复杂性和样板代码。 您仍然可以灵活地调整和微调行为,但是以声明式方式完成。

LangChain4j 采用模块化设计,包括:
langchain4j-core 模块,定义核心抽象(如 ChatLanguageModel 和 EmbeddingStore)及其他 API。
主要的 langchain4j 模块,包含有用的工具,如文档加载器、聊天记忆实现以及 AI 服务等高级功能。
大量的 langchain4j-{integration} 模块,每个模块提供与各种 LLM 提供商和嵌入存储的集成到 LangChain4j。 您可以独立使用 langchain4j-{integration} 模块。要获得额外功能,只需导入主要的 langchain4j 依赖项。

参考资料:
