初识LangChain4j

LangChain4j旨在简化大型语言模型(LLM)与Java应用程序的集成。以下是我们的实现方法:
● 统一API: 不同的LLM提供商(如OpenAI或Google Vertex AI)和向量数据库(如Pinecone或Milvus)各自采用专有API。LangChain4j提供了一套通用API,使得开发者无需为每个服务单独学习或实现特定接口。您可以轻松地在不同的LLM或向量数据库之间切换,而无需重写现有代码。截至目前,LangChain4j已经支持超过15种主流LLM提供商及20多种向量数据库。
Amazon Bedrock Anthropic Azure OpenAI
ChatGLM DashScope (Qwen) GitHub Models
Google AI Gemini Google Vertex AI Gemini Google Vertex AI PaLM 2
Hugging Face Jlama LocalAI
MistralAI Ollama OpenAI
OpenAI Official SDK Qianfan Cloudflare Workers AI
ZhiPu AI Xinference
● 全面工具箱: 自2023年初以来,社区围绕构建LLM应用积累了丰富的抽象概念、模式和技术实践。LangChain4j将这些知识精华提炼成一系列开箱即用的工具集,覆盖从低层次的提示模板设计、对话历史管理、函数调用支持到高层次智能体(Agent)创建以及检索增强生成(RAG)等应用场景。每项功能均通过定义清晰的接口及其多样化的现成实现来体现,无论是开发简单的聊天机器人还是构建复杂的包含数据导入、分割、向量化处理及信息检索在内的RAG系统,LangChain4j都能为您提供广泛的选择空间。
● 丰富示例: 我们提供了大量实例,展示了如何高效快速地搭建各种类型的LLM应用程序,旨在激发您的创意并加速项目进展。
LangChain4j起源于2023年ChatGPT热潮期间。鉴于当时Java生态系统中缺乏相应的LLM库,相较于Python和JavaScript领域内已有的丰富资源,我们决定填补这一空白地带。尽管项目名称中带有”LangChain”字样,但其设计理念融合了来自LangChain、Haystack、LlamaIndex等多个开源项目的灵感,并结合了自身独创性成果。
我们密切关注技术社区的发展趋势,迅速采纳新兴技术和整合方案,确保用户能够始终享受到最前沿的功能特性。目前,该项目正处于积极开发阶段,部分功能尚待完善,但核心组件已经稳定可用,您可以立即着手构建自己的LLM应用。
为了进一步促进与现有架构的兼容性,LangChain4j还特别针对Quarkus和Spring Boot两大流行框架进行了优化支持。
LangChain4j核心功能
● 集成支持:
○ 15+ LLM提供商
○ 20+ 向量数据库
○ 15+ 嵌入模型
○ 5 图像生成模型
○ 2 评分(重排序)模型
○ 1 内容审核模型(OpenAI)
● 多模态:支持文本和图像输入
● AI服务:高层级LLM API
● 提示模板
● 对话记忆管理:支持持久化与内存式实现,包括消息窗口和令牌窗口算法
● LLM响应流式传输
● 输出解析:支持常见Java类型及自定义POJO
● 工具(函数调用)
● 动态工具:执行LLM动态生成的代码
● RAG(检索增强生成):
○ 数据导入:
■ 支持多种文档格式(TXT、PDF、DOC、PPT、XLS等)及来源(文件系统、URL、GitHub、Azure Blob Storage、Amazon S3等)
■ 多种分块算法
■ 文档与分块后处理
■ 嵌入模型向量化
■ 向量存储
○ 检索(基础与高级):
■ 查询转换(扩展、压缩)
■ 查询路由
■ 从向量库或自定义源检索
■ 重排序
■ Reciprocal Rank Fusion
■ 支持RAG全流程定制
● 文本分类
● 分词与令牌计数工具
● Kotlin扩展:利用协程实现异步非阻塞的对话交互
两级抽象层级
LangChain4j提供两种抽象层级:

- 底层:
○ 提供最大自由度,可直接操作ChatLanguageModel、UserMessage、AiMessage、EmbeddingStore、Embedding等基础组件。
○ 这些是构建LLM应用的”原语”,您需自行编排它们,但需编写更多胶水代码。 - 高层:
○ 通过如AI Services等高阶API与LLM交互,隐藏复杂性与样板代码。
○ 仍支持通过声明式配置调整行为。
模块化架构
LangChain4j采用模块化设计:
● langchain4j-core:定义核心抽象(如ChatLanguageModel、EmbeddingStore)及其API。
● 主模块langchain4j:包含文档加载器、对话记忆实现及AI服务等高阶功能。
● langchain4j-{integration}模块:为各类LLM提供商和向量数据库提供独立集成。您可单独使用这些模块,如需更多功能,只需引入主依赖。
应用场景
定制AI聊天机器人:
● 客服机器人:
○ 礼貌回答客户问题
○ 处理订单创建/修改/取消
● 教育助手:
○ 教授多学科知识
○ 解释难点
○ 评估用户理解程度
非结构化数据处理:
● 从客户评价和支持聊天记录中提取洞察
● 抓取竞品网站关键信息
● 分析求职者简历
内容生成:
● 为每位客户定制邮件
● 为应用/网站生成内容:
○ 博客文章
○ 故事
信息转换:
● 摘要生成
● 校对与改写
● 翻译
社区集成
LangChain4j将部分集成维护在社区仓库中。这些集成与主仓库功能相同,仅artifactId和包名不同(带有community前缀)。社区仓库旨在分离部分集成的维护工作,减轻主仓库压力。