文章目录
ETL Pipeline
提取、转换和加载(ETL)框架是检索增强生成(RAG)中数据处理的支柱。
ETL 管道编排了从原始数据源到结构化向量存储的流程,确保数据以最佳格式存储,以便 AI 模型检索。
RAG 用例是通过从数据体中检索相关信息来增强生成模型的能力,以提高生成输出的质量和相关性。
API 概述
ETL 管道的三个主要组件是
- DocumentReader :实现Supplier<List>
- DocumentTransformer :实现Function<List, List>
- Consumer<List> :实现DocumentWriter
Document类包含文本和元数据,使用DocumentReader可以基于 PDF、文本文件和其他文档类型创建 Document类。
要构建一个简单的 ETL 管道,您可以将每种类型的实例链接在一起。
假如我们有这三种 ETL 类型的实例对象
- PagePdfDocumentReade: DocumentReader的一个实现
- TokenTextSplitter:DocumentTransformer的一个实现
- VectorStore: DocumentWriter的一个实现
使用以下代码,可以结合检索增强生成模式,把基本的数据加载到矢量数据库中。
vectorStore.accept(tokenTextSplitter.apply(pdfReader.get()));
入门指南
要开始创建一个 Spring AI RAG 应用程序,请按照以下步骤进行:
- 下载最新的 Spring CLI Release,并按照 installation instructions 进行安装。
- 要创建一个简单的基于 OpenAI 的应用程序,请使用以下命令:
spring boot new --from ai-rag --name myrag
- 查看生成的README.md文件,了解如何获取 OpenAI API 密钥并运行您的第一个 AI RAG 应用程序。
ETL 接口和实现
ETL 管道由以下接口和实现组成。详细的 ETL 类图在下面的 ETL 类图部分 中显示。
DocumentReader
提供来自不同来源的文档资源。
public interface DocumentReader extends Supplier<List<Document>> {
}
JsonReader
JsonReader解析 JSON 格式的文档。
例子:
@Component
public class MyAiApp {
@Value("classpath:bikes.json") // This is the json document to load
private Resource resource;
List