Quarkus LangChain4J扩展允许开发者在Quarkus应用中集成LLM

Quarkus 团队开发基于 LangChain4J 的扩展

Quarkus 团队近期开始开发一个基于 LangChain4J 库的扩展,旨在将大型语言模型(LLM)集成到 Quarkus 应用中。这一扩展的灵感来源于 Lize Raes 在 Devoxx Belgium 上的演讲《Java Meets AI》。LangChain4J 是 LangChain 库的 Java 实现,最初是用 Python 或 JavaScript 编写的。

扩展的开发与发布

Quarkus LangChain4J 的第一个公开版本 0.1 于 2023 年 11 月中旬发布,随后几乎每周都有更新,最新版本为 0.5.1。Quarkus 项目联合负责人 Max Rydahl Andersen 表示,该扩展目前仍处于实验阶段,API 仍在变化,但团队会持续跟进 LangChain4J 的发展,并计划扩展对“开放”模型的支持,特别是那些可以在云或本地基础设施上运行的模型。

扩展的核心功能

该扩展允许开发者以声明式的方式定义 LLM 集成点,类似于 Quarkus REST 客户端。开发者可以通过 @RegisterAiService 注解来注册 AI 服务,并将该服务注入到应用的任何地方。这种方式提供了以下优势:

  • 可测试性:可以通过模拟接口的实现来测试服务。
  • 可观测性:通过指标注解,开发者可以监控方法。
  • 弹性:通过容错注解,开发者可以处理失败、超时等临时问题。

与 LLM 的交互

与传统代码不同,Quarkus LangChain4J 扩展保留了与 LLM 的自然语言交互方式。开发者可以通过 @SystemMessage@UserMessage 注解来定义 LLM 的任务和范围。例如,在处理银行产品评论时,可以通过自然语言提示对评论进行情感分析,并返回 JSON 格式的结果。

扩展 LLM 知识的机制

由于 LLM 的知识受限于其训练集,Quarkus LangChain4J 提供了两种扩展 LLM 知识的机制:工具和文档存储。

  • 工具:允许 LLM 通过调用 REST 端点或执行数据库查询与父应用交互。开发者可以通过 @Tool 注解在 bean 方法上声明工具。
  • 文档存储:Quarkus 实现了检索增强生成(RAG)机制,通过将相关文档的向量表示存储在文档仓库中来扩展 LLM 的上下文。信息访问涉及两个步骤:文档的解析和向量表示的存储(通过 Ingestor 实现),以及调用 LLM 前的上下文丰富(通过 Retriever 实现)。

支持的存储和模型

目前,该扩展支持多种存储(如 Redis、Chroma、Pinecone、PgVector 等)和模型(如 OpenAI、Hugging Face、Ollama 等)。

未来的发展与反馈

Quarkus 团队正在快速推进该扩展的开发,并希望获得用户的反馈和想法,以改进集成。Andersen 认为,LLM 扩展很好地补充了 Quarkus 现有的集成功能,特别是与各种数据摄取系统的集成(如通过 Apache Camel 集成),而 Quarkus 的云原生特性也使得部署更加简单高效。

阅读 34
0 条评论