LangChain4j 的目标是简化将 LLM 集成到 Java 应用程序中的过程。
官网地址
源码地址
开源协议:Apache License 2.0
实现方法
- 统一 API:LLM 提供程序(如 OpenAI 或 Google Vertex AI)和嵌入(矢量)存储(如 Pinecone 或 Milvus)使用专有 API。LangChain4j 提供了一个统一的 API,以避免为每个 API 学习和实现特定的 API。要试验不同的 LLM 或嵌入存储,您可以轻松地在它们之间切换,而无需重写代码。LangChain4j 目前支持 15+ 个流行的 LLMproviders 和 20+ 个 embedding store。
- Comprehensive Toolbox:自 2023 年初以来,社区一直在构建许多 LLM 驱动的应用程序,识别常见的抽象、模式和技术。LangChain4j 已将这些优化为现成的包。我们的工具箱包括从低级提示模板、聊天内存管理和函数调用到 Agent 和 RAG 等高级模式的工具。对于每个抽象,我们提供了一个接口以及多个基于通用技术的即用型实现。无论您是构建聊天机器人还是开发具有从数据摄取到检索的完整管道的 RAG,LangChain4j 都提供了多种选择。
- 大量示例:这些示例展示了如何开始创建各种 LLM 驱动的应用程序,提供灵感并使您能够快速开始构建。
LangChain4j 于 2023 年初在 ChatGPT 的炒作中开始开发。我们注意到许多 Python 和 JavaScript LLM 库和框架缺乏 Java 对应项,我们必须解决这个问题!虽然我们的名字里有“LangChain”,但这个项目融合了来自 LangChain、Haystack、LlamaIndex 和更广泛社区的想法和概念,并融入了我们自己的创新。
我们积极关注社区的发展,旨在快速整合新技术和集成,确保您了解最新信息。该库正在积极开发中。虽然一些功能仍在开发中,但核心功能已经到位,让您现在可以开始构建 LLM 驱动的应用程序了!
为了更轻松地集成,LangChain4j 还包括与 Quarkus、Spring Boot 和 Helidon。
LangChain4j的功能
- 与 15+ LLM 提供商集成
- 与 20+ 嵌入(向量)存储集成
- 与 15+ 嵌入模型集成
- 与 5 个图像生成模型集成
- 与 2 个评分(重新排名)模型集成
- 与一个审核模型 (OpenAI) 集成
- 支持将文本和图像作为输入(多模态)
- AIServices(高级 LLM API)
- 持久和内存中聊天内存算法的实现:消息窗口和令牌窗口
- 来自 LLM 的响应流
- 常见 Java 类型和自定义 POJO 的输出解析器
- 工具 (函数调用)
- 动态工具(执行动态生成的 LLM 代码)
- RAG(检索增强生成):
-
- 摄入:
-
-
- 从多个来源(文件系统、URL、GitHub、Azure Blob 存储、Amazon S3 等)导入各种类型的文档(TXT、PDF、DOC、PPT、XLS 等)
-
-
-
- 使用多个拆分算法将文档拆分为更小的段
-
-
-
- 文档和句段的后处理
-
-
-
- 使用嵌入模型嵌入段
-
-
-
- 将嵌入存储在嵌入(向量)存储中
-
-
- 检索(简单和高级):
-
-
- 查询转换(扩展、压缩)
-
-
-
- 查询路由
-
-
-
- 从(向量)存储和/或任何自定义源中检索
-
-
-
- 重新排名
-
-
-
- 倒数 RankFusion
-
-
-
- 自定义 RAG 流程中的每个步骤
-
- 文本分类
- 用于标记化和估计标记计数的工具
- 使用 Kotlin 的协程功能对聊天交互进行异步非阻塞处理。
2 个抽象级别
- 低级别。在这个级别,你有最大的自由度和访问所有低级组件,比如 ChatModel、 UserMessage 、、 AiMessage EmbeddingStore Embedding 等。这些是 LLM 支持的应用程序的 “基元”。您可以完全控制如何组合它们,但您需要编写更多的 glue 代码。
- 高级别。在此级别,您可以使用 AIServices 等高级 API 与 LLM 进行交互,从而对您隐藏了所有复杂性和样板。您仍然可以灵活地调整和微调行为,但这是以声明方式完成的。
LangChain4j 库结构
LangChain4j 采用模块化设计,包括:
- langchain4j-core 模块,用于定义核心抽象(如 ChatModel 和 EmbeddingStore)及其 API。
- 主 langchain4j 模块,包含有用的工具,如文档加载器、聊天内存实现以及 AIServices 等高级功能。
- 各种各样的 langchain4j-{integration} 模块,每个模块都提供与各种 LLM 提供程序的集成,并将 store 嵌入到 LangChain4j 中。您可以独立使用这些 langchain4j-{integration} 模块。对于其他功能,只需导入 main langchain4j 依赖项。
LangChain4j工程结构
- 主仓库
- Quarkus拓展
- SpringBoot集成
- 社区集成
- 例子
- 社区资源
- 进程内嵌入
使用案例
你可能会问,我为什么需要所有这些?以下是一些示例:
- 您希望实施一个自定义的 AI 驱动的聊天机器人,该机器人可以访问您的数据并按照您希望的方式运行:
-
- 客户支持聊天机器人可以:
-
-
- 礼貌地回答客户的问题
-
-
-
- 接受/更改/取消订单
-
- 教育助理可以:
-
-
- 教授各种科目
-
-
-
- 解释不清楚的部分
-
-
-
- 评估用户的理解/知识
-
- 您希望处理大量非结构化数据(文件、网页等)并从中提取结构化信息。例如:
-
- 从客户评论中提取见解并支持聊天记录
-
- 从竞争对手的网站中提取有趣的信息
-
- 从求职者的简历中提取见解
- 您想要生成信息,例如:
-
- 为您的每位客户量身定制的电子邮件
-
- 您的应用/网站内容:
-
-
- 博客文章
-
-
-
- 故事
-
- 您想要转换信息,例如:
-
- 总结
-
- 校对和重写
-
- 翻译