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前缀)。创建社区是为了分离某些集成的维护工作,从而简化主仓库的维护。

相关推荐
聚铭网络1 小时前
狂飙的AI,失控的安全……
人工智能·安全
wgego1 小时前
基础的反序列化一些总结(php和java)
java·开发语言·笔记
imbackneverdie2 小时前
写文献综述,时间脉络和主题分类到底怎么选?
人工智能·ai·aigc·论文·科研·ai写作·医学
weixin_446260852 小时前
生成式与智能体AI认知能力缺陷分类体系
人工智能·分类·数据挖掘
网渡科技2 小时前
GEO搜索优化:大模型引用率提升的六大实战策略
人工智能·搜索引擎·chatgpt
机建狂魔2 小时前
Codex 接入第三方模型 API 实战:以 Mimo 为例
java·服务器·数据库·ai·ai编程·codex
万少2 小时前
用 TraeWork 给小孩做一个家庭工作台
前端·人工智能·后端
tech讯息2 小时前
风冷、液冷、风液融合数据中心制冷方案品牌怎么挑?结合负载工况与项目场景筛选
人工智能
2601_963870182 小时前
【计算机毕业设计】基于Vue + Spring Boot的社区养老服务管理平台设计与实现
spring boot·后端·课程设计
孙启超2 小时前
【AI应用开发】ReAct 原理是什么?和普通直接提问 LLM 差别在哪?
前端·人工智能·llm·agent·react·rag·ai应用开发