LangChain4j / Introduction

原文地址:https://docs.langchain4j.dev/intro

引言

欢迎!

LangChain4j 的目标是简化将大语言模型(LLM)集成到 Java 应用程序中的过程。具体方式如下:

统一API:LLM提供商(如OpenAI或Google Vertex AI)和嵌入(向量)存储(如Pinecone或Milvus)使用专有的API。LangChain4j提供统一API,避免了学习和实现每个特定API的需要。为了试验不同的LLM或嵌入存储,您可以轻松地在它们之间切换,无需重写代码。LangChain4j目前支持20多个流行的LLM提供商和30多个嵌入存储。

全面的工具箱:自2023年初以来,社区一直在构建众多基于LLM的应用程序,识别出了常见的抽象、模式和技术。LangChain4j已将这些提炼成一个即用型包。我们的工具箱涵盖了从低层次的提示模板、聊天记忆管理和函数调用,到高层次模式如Agent和RAG(检索增强生成)的各种工具。对于每个抽象,我们都提供了一个接口以及基于常见技术的多种即用型实现。无论您是在构建聊天机器人,还是开发一个包含从数据摄入到检索的完整RAG流程,LangChain4j都提供了广泛的选择。

丰富的示例:这些示例展示了如何开始创建各种基于LLM的应用程序,提供灵感并使您能够快速开始构建。

LangChain4j的开发始于2023年初,正值ChatGPT热潮之际。我们注意到缺乏Java版的Python和JavaScript LLM库及框架,我们必须改变这一点!

并非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多个嵌入(向量)存储集成
  • 与20多个嵌入模型集成
  • 与5个以上聊天记忆存储集成
  • 与5个以上图像生成模型集成
  • 与5个以上评分(重排序)模型集成
  • 与1个审核模型(OpenAI)集成
  • 支持文本和图像作为输入(多模态)
  • AI服务(高阶LLM API)
  • Agent和代理式AI
  • 技能(Skills)
  • 提示模板
  • 实现了持久化和内存中的聊天记忆算法:消息窗口和令牌窗口
  • LLM响应流式传输
  • 针对常见Java类型和自定义POJO的输出解析器
  • 工具(函数调用)
  • 动态工具(执行动态生成的LLM代码)
  • RAG(检索增强生成):
    • 数据摄入:
      • 从多种来源(文件系统、URL、GitHub、Azure Blob存储、Amazon S3等)导入各种类型的文档(TXT、PDF、DOC、PPT、XLS等)
      • 使用多种分割算法将文档分割成更小的段落
      • 文档和段落后处理
      • 使用嵌入模型对段落进行嵌入
      • 将嵌入存储到嵌入(向量)存储中
    • 检索(简单和高级):
      • 查询转换(扩展、压缩)
      • 查询路由
      • 从向量存储和/或任何自定义来源检索
      • 重排序
      • 倒数排名融合
      • RAG流程中每个步骤的自定义
  • 文本分类
  • 用于分词和估算令牌数量的工具
  • Kotlin扩展:利用Kotlin的协程功能,实现聊天交互的异步非阻塞处理。

2个抽象层次

LangChain4j在两个抽象层次上运作:

  • 低层次 。在这个层次上,您拥有最大的自由度,可以访问所有低层次组件,如ChatModelUserMessageAiMessageEmbeddingStoreEmbedding等。这些是您基于LLM的应用程序的"原语"。您完全控制如何组合它们,但需要编写更多的"胶水"代码。
  • 高层次。在这个层次上,您使用像AI服务这样的高级API与LLM交互,它为您隐藏了所有复杂性和样板代码。您仍然可以灵活地调整和微调行为,但这是以声明方式完成的。

LangChain4j库结构

LangChain4j采用模块化设计,包括:

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

LangChain4j代码仓库

  • 主仓库
  • Micronaut集成
  • Quarkus扩展
  • Spring Boot集成
  • 社区集成
  • 示例
  • 社区资源

应用场景

您可能会问,为什么我需要所有这些?以下是一些示例:

  • 您想要实现一个定制的AI驱动聊天机器人,它可以访问您的数据并按照您期望的方式运行:
    • 客户支持聊天机器人,能够:
      • 礼貌地回答客户问题
      • 处理下单/更改/取消订单
    • 教育助手,能够:
      • 教授各种学科
      • 解释不清楚的部分
      • 评估用户的理解/知识水平
  • 您想要处理大量非结构化数据(文件、网页等)并从中提取结构化信息。例如:
    • 从客户评论和支持聊天记录中提取洞见
    • 从竞争对手网站提取有趣信息
    • 从求职者的简历中提取洞见
  • 您想要生成信息,例如:
    • 为每位客户量身定制的电子邮件
    • 为您应用/网站生成内容:
      • 博客文章
      • 故事
  • 您想要转换信息,例如:
    • 总结
    • 校对和重写
    • 翻译

社区集成

LangChain4j在社区仓库中维护了一些集成。它们支持与主仓库中集成相同的功能。它们之间的唯一区别在于,社区集成的工件和包名与主仓库不同(即工件和包名中带有community前缀)。创建社区是为了分离某些集成的维护工作,从而简化主仓库的维护。

相关推荐
AI备案指南-满满38 分钟前
人工智能拟人化互动服务安全自评估报告的评估要点有哪些?
人工智能·算法·安全·机器人·大模型备案·算法备案
考虑考虑38 分钟前
Java三元表达式注意
java·后端·java ee
围炉聊科技1 小时前
OpenAdapt 源码拆解:录制一次,如何实现确定性回放
人工智能
SLD_Allen1 小时前
字节跳动飞连(Feilian)AI智能体零信任安全治理深度技术研究报告
网络·人工智能·安全·智能体安全
IT_陈寒1 小时前
Redis的DEL命令居然没删干净数据?这个坑我爬了半天
前端·人工智能·后端
程序员小八7771 小时前
Java 快速转 Go
java·python·golang
熊猫钓鱼>_>2 小时前
鸿蒙ArkUI全手势操作实战指南:6大基础手势从原理到落地避坑
人工智能·深度学习·华为·架构·harmonyos·arkui·tapgesture
职场的momo2 小时前
11个后端与AI岗位同时开放:Java、网关、推理优化怎么匹配
java·开发语言·人工智能
微石科技2 小时前
社区卫生中心慢病管理怎么做?宁波微石科技智慧医康系统:一个平台管住趋势、随访、患者
大数据·人工智能·科技
AI模型调用笔记2 小时前
GPT-5.4 8月31日退出 Codex?先分清 ChatGPT 登录与 API Key,再迁移 Terra/Luna
人工智能·gpt·chatgpt·ai编程