0%

提取、转换和加载 (ETL) 框架是检索增强生成 (RAG) 用例中数据处理的核心。ETL 管道协调从原始数据源到结构化向量存储的数据流,确保数据以最适合 AI 模型检索的格式呈现。RAG 旨在通过从数据集中检索相关信息来增强生成模型的能力,从而提高生成输出的质量和相关性。

API概览

ETL管道创建、转换和存储文档实例,Document 类包含文本、元数据,还可以选择包含图像、音频和视频等其他媒体类型。

springai-rag-etl-class.png

ETL管道主要包含三个组成部分:

Document 类内容是借助 DocumentReader 从 PDF、文本文件和其他文档类型创建而来

  • DocumentReader 实现了 Supplier<List<Document>>
  • DocumentTransformer 实现了 Function<List<Document>, List<Document>>
  • DocumentWriter 实现了 Consumer<List<Document>>

springai-rag-etl-chain.png

Read more »

本文系统梳理架构落地中常见的几种核心架构模式,分析各自的优势与适用场景,并给出选型建议。

一、分层架构(Layered Architecture)

常见分层

  • 经典四层:展现层 → 业务层 → 持久层 → 数据库层
  • DDD 分层:接口层 → 应用层 → 领域层 → 基础设施层

优势

  • 关注点分离:每层职责清晰,便于团队分工
  • 可测试性强:各层可独立进行单元测试和 Mock
  • 易于维护:修改某一层不影响其他层(接口契约不变)
  • 技术栈解耦:例如业务层不依赖具体 ORM 框架

适用场景

  • 企业级 CRUD 应用、传统 ERP / OA 系统
  • 团队规模较大、需要明确职责边界的项目
Read more »

自动配置

Spring AI 为 Elasticsearch Vector Store 提供了 Spring Boot 自动配置。要启用它,请在项目的 Maven pom.xml 或 Gradle build.gradle 文件中添加以下依赖:

Maven

1
2
3
4
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-starter-vector-store-elasticsearch</artifactId>
</dependency>

Gradle

1
2
3
dependencies {
implementation 'org.springframework.ai:spring-ai-starter-vector-store-elasticsearch'
}
Read more »

概述

向量数据库是一种特殊类型的数据库,在 AI 应用中扮演着至关重要的角色。在向量数据库中,查询方式与传统关系型数据库不同,向量数据库执行的是相似度搜索,而非精确匹配。当给定一个向量作为查询时,向量数据库会返回与查询向量”相似”的向量。

向量数据库用于将您的数据与 AI 模型集成,其使用步骤如下:

  1. 首先将您的数据加载到向量数据库中。
  2. 当用户查询需要发送给 AI 模型时,先检索一组相似的文档。
  3. 这些文档随后作为用户问题的上下文,与用户查询一起发送给 AI 模型。

这种技术被称为检索增强生成(Retrieval Augmented Generation,RAG)

本文将介绍 Spring AI 中使用多种向量数据库实现的接口,以及一些高层级的使用示例。最后一节旨在揭开向量数据库中相似度搜索底层方法的神秘面纱。

Read more »

简介

LangGraph4j 是一个用于在 Java 中构建有状态的、多智能体(Multi-Agent)应用程序的库,与大型语言模型(LLM)深度集成。它灵感来源于 Python 的 LangGraph 库,旨在与 LangChain4j 和 Spring AI 等主流 Java LLM 框架无缝协作。

从本质上讲,LangGraph4j 允许你定义循环图(Cyclical Graphs),让不同的组件(智能体、工具或自定义逻辑)以有状态的方式进行交互。这对于构建需要记忆、上下文以及不同”智能体”之间协作或任务交接的复杂应用程序至关重要。

Read more »

Skills(技能)是一种为 LLM 配备可复用的、自包含的行为指令的机制。一个技能(Skill)捆绑了名称、简短描述、一组指令正文(即其 content),以及可选的资源(例如参考资料、素材、模板等)。LLM 按需加载技能,保持初始上下文较小,仅在真正需要时才拉取详细指令。

注意: langchain4j Skills API 目前处于实验阶段。API 和行为在未来的版本中仍可能发生变化。

Read more »

LangChain4j 提供了对 Spring Boot 的一流集成支持,让你能够以声明式的方式在 Spring Boot 应用中快速使用 AI 服务。只需添加对应的 starter 依赖,即可自动配置 ChatModelStreamingChatModel 等核心组件,并通过 @AiService 注解轻松定义具备 AI 能力的服务接口。

要求:LangChain4j Spring Boot 集成需要 Java 17 及以上版本,同时支持 Spring Boot 3Spring Boot 4 两大系列。两个系列同步发布,共享相同的版本号。请根据你项目中使用的 Spring Boot 版本选择对应的 starter 组合。

添加 Starter 依赖

Spring Boot starter 依赖的命名规范为:

1
2
langchain4j-{集成名称}-spring-boot-starter   (Spring Boot 3)
langchain4j-{集成名称}-spring-boot4-starter (Spring Boot 4)
Read more »

分类(Classification)对于将文本归类到预定义标签中至关重要,例如情感分析意图检测实体识别,这里演示了使用 LangChain4j 的 AI 驱动服务进行情感分类

LangChain4j 支持两种常见的文本分类方法:

  1. 通过 AI Services 使用 LLM:当标签依赖于细微的自然语言推理时使用。
  2. 通过 TextClassifier 和 EmbeddingModelTextClassifier 使用嵌入:当你为每个类别提供了带标签的示例,并希望通过语义相似度进行分类时使用。

情感分类服务可用于多种应用场景,包括:

  • 客户反馈分析:将客户评论分类为积极、中性或消极。
  • 社交媒体监控:分析社交媒体评论中的情感趋势。
  • 聊天机器人响应:理解用户情感以提供更好的回复。
Read more »

Guardrails(护栏)是一种机制,用于验证 LLM 的输入和输出,确保其符合您的预期。可以使用护栏来实现以下目的(或其他功能):

  • 过滤不当内容
  • 验证输出格式
  • 限制敏感信息泄露
  • 确保回答符合业务规则

实验性功能:Guardrails 是一项实验性功能。其 API 和行为可能在未来版本中发生变化。
护栏仅在使用 AI Services 时可用。 它们是高层抽象,不能直接应用于 ChatModelStreamingChatModel

Read more »