Spring AI ETL 流水线

SpringAI的ETL流程支持全面的数据处理,包括从文本和JSON到PDF、多种格式的文档转换,以及统一存储。特别强调了KeywordMetadataEnricher和SummaryMetadataEnricher用于增强文档检索。
摘要由CSDN通过智能技术生成

请添加图片描述

先纠正 Spring AI 使用本地 Ollama Embeddings 中的一个错误,当启动 Ollama 之后,Windows会有托盘图标,此时已经启动了 Ollama 的服务,访问 Embedding 时不需要运行 ollama run gemma ,只有访问 chat 时才需要启动一个大模型。

在这里插入图片描述

Spring AI 提供的 ETL 流水线比较全面,使用很简单。提取、转换和加载 (ETL) 框架是检索增强生成 (RAG) 用例中数据处理的支柱。ETL 管道协调从原始数据源到结构化向量存储的流程,确保数据采用最佳格式,以便 AI 模型进行检索。

Extract - 提取 - DocumentReader

spring-ai-core 中提供了 TextReader 和 JsonReader,这两个可以读取文本或者JSON中指定的key作为文档(Document)。

在 spring-ai-pdf-document-reader 中提供了 PagePdfDocumentReader(按页读) 和 ParagraphPdfDocumentReader(按目录读,注意,并非所有 PDF 文档都包含 PDF 目录)两个实现,可以用来读取PDF文件。

在 spring-ai-tika-document-reader 中提供了一个比较万能的 TikaDocumentReader,支持读取 PDF、DOC/DOCX、PPT/PPTX 和 HTML等格式(支持格式很多,详情看 https://tika.apache.org/2.9.0/formats.html )。

Transform - 转换 - DocumentTransformer

  1. ContentFormatTransformer 内容格式转换器:确保所有文档的内容格式统一。
  2. KeywordMetadataEnricher 关键字MetadataEnricher:使用基本关键字元数据扩充文档。
  3. SummaryMetadataEnricher 摘要元数据丰富:使用摘要元数据丰富文档,以增强检索能力。
  4. TokenTextSplitter:拆分文档,同时保留令牌级完整性。

这里面有意思的是 KeywordMetadataEnricherSummaryMetadataEnricher,这两个通过提示词模板让 AI 给出上下文(前面提取内容)的关键字和总结内容:

public static final String KEYWORDS_TEMPLATE = """
		{context_str}. Give %s unique keywords for this
		document. Format as comma separated. Keywords: """;
		
public static final String DEFAULT_SUMMARY_EXTRACT_TEMPLATE = """
		Here is the content of the section:
		{context_str}
		Summarize the key topics and entities of the section.
		Summary: """;

Load - 加载 - DocumentWriter

ETL最后的阶段就是存储文档,提供了两个实现,一个是 FileDocumentWriter,将文档保存到文件中。另一个就是前面用过的 VectorStore,存储向量数据。

这里的ETL和Spring AI Embeddings 和 Vector 入门 相比多了一个文档的来源,文档的来源除了PDF等文件外,还可以是 Spring AI 应用 - 智能记者 中网页查询的结果,还可以是数据库查询的结果,ES查询的结果。

  • 26
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Spring框架和大数据平台在处理ETL(提取、转换和加载)过程时有一些区别。下面是它们之间的主要区别: 1. 功能范围:Spring框架是一个轻量级的Java开发框架,主要用于构建企业级应用程序。它提供了一组库和工具,用于简化Java应用程序的开发和管理。而大数据平台是一种用于处理大规模数据集的技术架构,包括分布式存储、计算和处理引擎等组件。 2. 数据规模:Spring框架通常用于处理中小规模的数据集,适合小型企业或中小型应用程序。而大数据平台专注于处理大规模数据集,可以处理海量数据,适合大型企业或需要处理大数据量的应用场景。 3. 数据处理方式:Spring框架主要通过编写代码来实现ETL过程,开发人员需要手动编写代码来完成数据的提取、转换和加载等操作。而大数据平台通常使用分布式计算和处理引擎,如Hadoop、Spark等,可以自动化地进行并行化的数据处理。 4. 生态系统支持:Spring框架具有丰富的生态系统,提供了许多扩展和集成库,可以与其他技术栈无缝集成。而大数据平台也有自己的生态系统,包括各种数据存储和处理技术,如Hadoop、Hive、HBase等。 总的来说,Spring框架更适合处理中小规模的数据集和应用程序,而大数据平台更适合处理大规模的数据集和需要进行并行化处理的场景。选择哪种方式取决于您的具体需求和应用场景。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

isea533

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值