Spring AI ETL 流水线

请添加图片描述

先纠正 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 thisdocument. 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查询的结果。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/1069.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

React脚手架的搭建与使用

React脚手架是开发现代Web应用的必备,其充分利用Webpack、Babel、ESlint等工具辅助项目的开发,当然这些工具也无需手动配置即可使用,脚手架的意义更多的是关注的是业务而不是工具的配置;项目的整体技术架构为:react w…

ZYNQ NVME高速存储之EXT4文件系统

前面文章分析了高速存储的各种方案,目前主流的三种存储方案是,pcie switch高速存储方案,zynq高速存储方案,fpga高速存储方案。虽然三种高速存储方案都可以实现高速存储,但是fpga高速存储方案是最烂的,fpga…

天软因子数据系列课堂回顾——“委托订单:流动性因子”

高频因子库4月更新,新增5张表单,51个因子。目前,高频因子数量扩容到628个,涵盖了从2000年开始的全A市场。本次“天软因子数据系列课堂”在线分享的即是最新发布因子列表之一的流动性因子,剖析微观角度下因子的底层逻辑…

目标检测——输电线路缺陷数据集

引言 亲爱的读者们,您是否在寻找某个特定的数据集,用于研究或项目实践?欢迎您在评论区留言,或者通过公众号私信告诉我,您想要的数据集的类型主题。小编会竭尽全力为您寻找,并在找到后第一时间与您分享。 …

非洲美食多样性而丰富多彩

非洲美食因其地域广阔和民族多样性而丰富多彩,每个国家和地区都有独特的烹饪传统和饮食文化。以下列举一些非洲各地的代表性美食: 肯尼亚: Ugali:一种主要由玉米面制成的团状食物,搭配各种炖煮的蔬菜、豆类和肉类食用。…

档案数字化能为企业带来什么帮助

档案数字化为企业带来以下帮助: 1. 空间节省:数字化档案可以减少实体档案的存储空间需求,不再需要大量的文件柜和文件存储空间,从而帮助企业节约办公场地。 2. 检索便捷:数字化档案可以通过关键词搜索、标签分类等方式…

线性表的链式存储(单循环链表)

文章目录 前言一、循环链表是什么?二、单循环链表三、单循环链表基本操作的实现总结 前言 T_T此专栏用于记录数据结构及算法的(痛苦)学习历程,便于日后复习(这种事情不要啊)。所用教材为《数据结构 C语言版…

js 函数节流和函数防抖及区别详解

文章目录 1. 前言2. 函数节流3. 函数防抖4. 总结 1. 前言 浏览器中总是有一些操作非常耗费性能。所以就有了函数节流和函数防抖来提高浏览器性能。 函数节流:频繁触发一个事件时候,每隔一段时间,函数只会执行一次。 函数防抖:当触…

【Java笔记】第4章:深入学习循环结构

前言1. 循环的理解2. while循环3. do...while循环4. for循环5. 循环的控制语句6. 循环的嵌套结语 ↓ 上期回顾: 【Java笔记】第3章:深入学习分支结构 个人主页:C_GUIQU 归属专栏:【Java学习】 ↑ 前言 各位小伙伴大家好!上期小编…

Spring 事务实现方式:

Spring 事务实现方式: Spring并不直接支持事务,只有当数据库支持事务的时候,Spring才支持事务,Spring只不过简化了开发人员实现事务的开发步骤 Spring事务的实现方式有两种: 一、基于申明式事务: Service…

ubuntu 16.04.7连不上网的解决方案

首先在编辑选项卡里找到虚拟网络编辑器, 点击更改设置 点击添加网络 点击确定 选择桥接模式,自动后点击应用,最后点击确定即可。

文件夹变白色文件,数据恢复全攻略助你轻松找回!

在日常的电脑使用中,你是否曾遇到过文件夹突然变成了白色文件的情况?这种看似无害的变化,实则可能隐藏着数据丢失的风险。当你发现原本正常的文件夹图标变成了无关联程序的白板图标,且无法正常打开时,内心无疑是焦虑不…

车载诊断系统应用方案选型,ESP8266方案让成本降低了35%,销售数据提升47%

车载诊断系统简称OBD,这个系统随时监控发动机的运行状况和尾气后处理系统的工作状态,一旦发现有可能引起排放超标的情况,会马上发出警示。当系统出现故障时,故障灯(MIL)或检查发动机(Check Engine)警告灯亮,同时OBD系统…

【JavaWeb】Day50.Mybatis的XML配置文件

XML配置文件规范 使用Mybatis的注解方式,主要是来完成一些简单的增删改查功能。如果需要实现复杂的SQL功能,建议使用XML来配置映射语句,也就是将SQL语句写在XML配置文件中。 在Mybatis中使用XML映射文件方式开发,需要符合一定的规…

C语言之文件操作【万字详解】

目录 一.什么是文件? 二.为什么要使用文件? 三.文件的分类 3.1.程序文件 3.2.数据文件 四.二进制文件和文本文件 五.文件的打开和关闭 (重点) 5.1流和标准流 5.1.1何为流? 5.1.2.标准流 5.2文件指针 5.3文件的打开和关…

【1425】java 外籍人员管理系统Myeclipse开发mysql数据库web结构jsp编程servlet计算机网页项目

一、源码特点 java 外籍人员管理系统是一套完善的java web信息管理系统 采用serlvetdaobean,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式 开发。开发环境为TOMCAT7.0,Myeclipse8.5开发&#xff…

机器学习波士顿房价

流程 数据获取导入需要的包引入文件,查看内容划分训练集和测试集调用模型查看准确率 数据获取 链接:https://pan.baidu.com/s/1deECYRPQFx8h28BvoZcbWw?pwdft5a 提取码:ft5a --来自百度网盘超级会员V1的分享导入需要的包 import pandas as pd imp…

回归预测 | Matlab实现SA-BP模拟退火算法优化BP神经网络多变量回归预测

回归预测 | Matlab实现SA-BP模拟退火算法优化BP神经网络多变量回归预测 目录 回归预测 | Matlab实现SA-BP模拟退火算法优化BP神经网络多变量回归预测预测效果基本描述程序设计参考资料 预测效果 基本描述 1.Matlab实现SA-BP模拟退火算法优化BP神经网络多变量回归预测&#xff0…

Vue3+Spring Boot3实现跨域通信解决办法

Vue3Spring Boot3实现跨域通信解决办法 1 跨域是什么?2 何为同源呢?3 解决办法3.1 全局配置3.1.1 实现CorsFilter过滤器3.1.2 实现SpringMVC配置类3.1.3 创建CorsFilterFactory工厂类返回CorsFilter对象 3.2 局部跨域3.2.1 注解配置3.2.2 手动设置响应头(局部跨域)…

springboot+vue社区报修便民维修网站设计与实现

便民维修网站,主要的模块包括管理员;首页、个人中心、管理员管理、用户管理、维修人员管理、在线报修管理、联系客服管理、公司回访管理、基础数据管理、论坛管理、公告管理、轮播图信息,维修人员;首页、个人中心、维修人员评价管…