Yang's blog Yang's blog
首页
Java
密码学
机器学习
命令手册
关于
友链
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

xiaoyang

编程爱好者
首页
Java
密码学
机器学习
命令手册
关于
友链
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • SpringCloud

    • 微服务架构介绍
    • SpringCloud介绍
    • Spring Cloud:生产者与消费者
    • Spring Cloud Eureka:构建可靠的服务注册与发现
    • Spring Cloud Ribbon:负载均衡
    • Spring Cloud Fegin:服务调用
    • Spring Cloud Hystrix:熔断器
    • Spring Cloud Zuul:统一网关路由
    • Spring Cloud Config:配置中心
  • Java后端框架

    • LangChain4j

      • 介绍
        • LangChain4j 功能
        • 两层抽象
        • LangChain4j库结构
        • LangChain4j 仓库
        • 使用场景
      • 快速开始
      • Chat and Language Models
      • Chat Memory
      • Model Parameters
      • Response Streaming
      • AI Services
      • Agent
      • Tools (Function Calling)
      • RAG
      • Structured Outputs
      • Classification
      • Embedding (Vector) Stores
      • Image Models
      • Quarkus Integration
      • Spring Boot Integration
      • Kotlin Support
      • Logging
      • Observability
      • Testing and Evaluation
      • Model Context Protocol
  • 八股文

    • 操作系统
    • JVM介绍
    • Java多线程
    • Java集合框架
    • Java反射
    • JavaIO
    • Mybatis介绍
    • Spring介绍
    • SpringBoot介绍
    • Mysql
    • Redis
    • 数据结构
    • 云计算
    • 设计模式
    • 计算机网络
    • 锁核心类AQS
    • Nginx
  • 前端技术

    • 初识Vue3
    • Vue3数据双向绑定
    • Vue3生命周期
    • Vue-Router 组件
    • Pinia 集中式状态存储
  • 中间件

    • RocketMQ
  • 开发知识

    • 请求参数注解
    • 时间复杂度和空间复杂度
    • JSON序列化与反序列化
    • Timestamp vs Datetime
    • Java开发中必备能力单元测试
    • 正向代理和反向代理
    • 什么是VPN
    • 正则表达式
  • Java
  • Java后端框架
  • LangChain4j
xiaoyang
2025-01-14
目录

介绍

# 介绍

欢迎!

LangChain4j 的目标是简化 LLM(大语言模型)在 Java 应用中的集成。

实现方式如下:

  1. 统一 API
    LLM 提供商(如 OpenAI 或 Google Vertex AI)和嵌入存储(如 Pinecone 或 Milvus)通常使用专有 API。LangChain4j 提供了一个统一的 API,避免了对每种服务学习和实现特定 API 的繁琐工作。
    您可以轻松切换 LLM 提供商或嵌入存储,无需重写代码。目前,LangChain4j 支持 15+ 流行的 LLM 提供商 (opens new window) 和 20+ 嵌入存储 (opens new window)。
  2. 全面工具箱
    自 2023 年初以来,社区已经开发了大量基于 LLM 的应用,总结了通用抽象、模式和技术。LangChain4j 将这些内容打磨为一个即用型包。
    工具箱包含从低级的提示模板、聊天记忆管理和函数调用,到高级模式如 Agent 和 RAG 的功能。
    每种抽象均提供接口及基于常见技术的现成实现。无论您是在构建聊天机器人,还是开发完整 RAG 管道的应用,LangChain4j 都为您提供多种选项。
  3. 丰富示例
    这些 示例 (opens new window) 展示了如何快速构建各种基于 LLM 的应用,为您提供灵感并帮助您快速上手。

LangChain4j 于 2023 年初在 ChatGPT 热潮中启动。我们注意到市面上缺乏与 Python 和 JavaScript 对应的 Java LLM 库和框架,因此决定填补这一空白!
尽管名称中有 "LangChain",本项目融合了来自 LangChain、Haystack、LlamaIndex 和社区的理念,结合了我们自己的创新。

我们密切关注社区动态,旨在快速引入新技术和集成,确保您始终与时俱进。
该库目前正在积极开发中,尽管部分功能仍在完善,但核心功能已经就绪,您可以立即开始构建基于 LLM 的应用!

为了便于集成,LangChain4j 还提供与 Quarkus (opens new window) 和 Spring Boot (opens new window) 的集成。


# LangChain4j 功能

  • 集成 15+ LLM 提供商 (opens new window)
  • 集成 20+ 嵌入(向量)存储 (opens new window)
  • 集成 15+ 嵌入模型 (opens new window)
  • 集成 5 个图像生成模型 (opens new window)
  • 集成 2 个评分(重排序)模型 (opens new window)
  • 集成 OpenAI 的内容审核模型
  • 支持多模态输入(文本和图像)
  • AI 服务(高级 LLM API)
  • 提示模板
  • 持久化和内存型 聊天记忆 算法:消息窗口、Token 窗口
  • LLM 响应流式传输
  • 通用 Java 类型和自定义 POJO 的输出解析器
  • 工具(函数调用)
  • 动态工具(执行动态生成的 LLM 代码)
  • RAG(检索增强生成):
    • 数据摄取:
      • 导入多种文档类型(TXT、PDF、DOC、PPT、XLS 等)
      • 使用多种分割算法将文档分割为小段
      • 文档后处理
      • 嵌入分段并存储到嵌入存储
    • 检索:
      • 查询变换(扩展、压缩)
      • 向量存储检索与重排序
      • 查询路由
  • 文本分类
  • Token 化及 Token 数量估算工具
  • Kotlin 扩展:基于协程的异步非阻塞处理

# 两层抽象

LangChain4j 提供两种抽象层级:

  1. 低级抽象
    提供最大自由度,可直接使用核心组件(如 ChatLanguageModel、UserMessage、AiMessage 等)。适合需要自定义逻辑的开发者,但需要更多编写代码。
  2. 高级抽象
    提供高层 API(如 AI 服务),隐藏复杂性与样板代码,同时支持声明式调整行为。

image-20250114151747855

# LangChain4j库结构

LangChain4j 具有模块化设计,包括以下内容:

  1. langchain4j-core模块
    定义了核心抽象(例如ChatLanguageModel和EmbeddingStore)及其API。
  2. 主要langchain4j模块
    包含有用的工具,如文档加载器、聊天记忆实现,以及高级功能,例如AI服务。
  3. 各种langchain4j-{integration}模块
    每个模块提供与不同LLM提供商和嵌入存储的集成。这些模块可以独立使用。如需更多功能,只需引入主要的langchain4j依赖项。

# LangChain4j 仓库

  • 主仓库
  • Quarkus扩展
  • Spring Boot集成
  • 社区集成
  • 示例
  • 社区资源
  • 内嵌式嵌入

# 使用场景

可能会问:为什么需要这些功能?以下是一些示例:

  1. 自定义AI聊天机器人
    您希望实现一个访问您数据并按您的需求行为的自定义AI聊天机器人,例如:
    • 客户支持聊天机器人:
      • 礼貌地回答客户问题
      • 接受/更改/取消订单
    • 教育助手:
      • 教授各种主题
      • 解释不清楚的部分
      • 评估用户的理解或知识
  2. 处理大量非结构化数据
    您希望处理大量非结构化数据(文件、网页等),并从中提取结构化信息,例如:
    • 从客户评论和支持聊天记录中提取洞见
    • 从竞争对手的网站中提取有趣信息
    • 从求职者简历中提取洞见
  3. 生成信息
    例如:
    • 为每位客户定制的电子邮件
    • 应用或网站内容:
      • 博客文章
      • 故事
  4. 转换信息
    例如:
    • 总结
    • 校对和重写
    • 翻译
编辑 (opens new window)
上次更新: 2025/04/01, 01:48:12

← Spring Cloud Config:配置中心 快速开始→

最近更新
01
操作系统
03-18
02
Nginx
03-17
03
后端服务端主动推送消息的常见方式
03-11
更多文章>
Theme by Vdoing | Copyright © 2023-2025 xiaoyang | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式