ETL

ETL(Extract抽取,Transform转换,Load加载),宏观上看就是对知识库的文档进行处理,然后存储到向量数据库的过程

文档Document

从源码可以看到,Document不只是有文档的内容,还可以包含一系列元信息和多媒体附件,可以使文档更方便地被搜索和排序。

在SpringAI中,对Document处理有三个步骤:

1. 抽取文档

2. 转换文档

3. 写入文档

SpringAI分别通过DocumentReader->DocumentTransformer->DocumentWriter三大组件实现ETL

接下来将要对其具体实现进行介绍。

抽取Extract

public interface DocumentReader extends Supplier<List<Document>> {
    default List<Document> read() {
        return get();
    }
}

实现了 Supplier<List<Document>>接口,将各种数据源文件中的数据转换为Document

SpringAI提供了多种DocumentReader实现类来读取不同类型源文件的数据

转换Transform

public interface DocumentTransformer extends Function<List<Document>, List<Document>> {
    default List<Document> transform(List<Document> documents) {
        return apply(documents);
    }
}

DocumentTransformer负责将一组Document转换为另一组Ducument

SpringAI提供了多种实现类

1. TextSplitter

是文本切割器的基类

        TokenTextSplitter是其实现,基于token的文本切割器。考虑了语义边界来切割文档。

2. MetadataEnricher元数据增强器

为文档补充更多的元数据

  • KeywordMetadataEnricher:使用AI提取关键词附加到元数据中
  • SummaryMetadataEnricher:使用AI生成摘要添加到元数据,可以关联前后相邻的文档

3. ContentFormatter内容格式化工具

加载Load

通过DocumentWriter实现文档写入

1. FileDocumentWriter:将文档写入文件系统

2. VectorStoreWriter:将文档写入向量数据库

Logo

火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。

更多推荐