ETL Pipeline
ETL是提取、转换、加载的缩写,从原始的文档到数据库需要经历提取(.doc、.ppt、.xlsx等)、转换(数据结构化、清理数据、数据分块)、写入向量数据库。这个过程可以进行多种处理,确保最后的数据适合AI问答。
SpringAI提供了ETL框架。它是搭建知识库框架的基石。
框架介绍
- DocumentReader:文档读取器,读取文档,比如PDF、Word、Excel等。如:
JsonReader(读取JSON),TextReader(读取文本),PagePdfDocumentReader(读取PDF),TikaDocumentReader(读取各种文件,大部分都可以支持.pdf,.xlsx,.docx,.pptx,.md,.json等)。上诉的这些reader都是DocumentReader的实现类。 - DocumentTransformer:文档转换器,处理文档。
TextSplitter(文档切割成小块),ContentFormatTransformer(将文档变成键值对),SummaryMetadataEnricher(使用大模型总结文档),KeywordMetadataEnricher(使用大模型提取文档关键词)。 - DocumentWriter: 文档写入器,将文档写入向量数据库或者本地文件。
VectorStore(向量数据库写入器),FileDocumentWriter(文件写入器)。

读取文件
TikaDocumentReader比较全能大部分文件都可以读取,支持的文件格式可以参考官方文档。如果是比较个性化文档的场景,最好自己实现一个Reader,比如我们公司的有些excel里面存了各种的表格数据这种只能自己去读取处理。使用读取器读出来的数据乱乱的。
引入依赖
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-tika-document-reader</artifactId>
</dependency>
首先要明白DocumentReader会从Resource中读取文件。Resource是SpringIO中的一个接口,它表示一个资源,可以是文件、网络资源、内存资源等。
下面举几个读取文件的例子
-
从输入流中读取文件。像后端接收前端文件时,就可以使用。

最低0.47元/天 解锁文章
242

被折叠的 条评论
为什么被折叠?



