spring-ai-alibaba 1.0.0.2 学习(六)——DocumentReader与DocumentParser

spring-ai-alibaba提供了许多读取外部文档的包,例如语雀、飞书、notion笔记等

这些包以spring-ai-alibaba-starter-document-reader开头,实现了spring-ai的DocumentReader接口

最简单样例

我们一起来看一个最简单的例子,以spring-ai-alibaba-starter-document-reader-bilibili为例

使用分为三步

第一步:引入jar包

		<dependency><groupId>com.alibaba.cloud.ai</groupId><artifactId>spring-ai-alibaba-starter-document-reader-bilibili</artifactId></dependency>

 第二步:申请权限并添加配置

这一步某些平台可以省略,比如样例的bilibili,无需申请api-key之类的令牌即可访问

第三步:调用代码

        BilibiliDocumentReader reader = new BilibiliDocumentReader("BV1ErERzUEqg");List<Document> documents = reader.get();System.out.println(documents.size());System.out.println(documents.get(0).getText());System.out.println(documents.get(0).getMetadata().get("title"));

这里我是读取的B站的全网最最全的AI推荐!历时半年,我们选出了Top100【全网首发】_哔哩哔哩_bilibili,在其网址中找到BV开头的那串字符(这是视频的id),传入BilibiliDocumentReader即可实现读取。

ps:BilibiliDocumentReader并不会读取视频中的语音或字幕,读取的主要是标题和下方的文字描述。

进阶知识

内部原理

spring-ai-alibaba的document-reader包中,一般包含2部分:

META-INF:元信息,主要是pom文件引入外部依赖

java实现类:实现类数量不同jar包不一样,一般为1-3个,主要有以下三个角色

        1)代表访问权限的类:接收用户api-key或access-token等身份识别信息,确保用户有权限访问平台数据

        2)代表资源路径的类:接收资源位置,如本地路径、网址等,用来访问目标资源

        3)代表解析器的类:根据目标资源的类型实现文档解析,如html解析、xml解析、markdown解析等

整体流程一般是根据访问权限和资源路径拼装请求,得到回复后使用对应的解析器,解析为Document格式的结果。

DocumentParser

上面提到的第三种角色,代表解析器的类,在spring-ai-alibaba中被提炼为一个接口:DocumentParser

public interface DocumentParser {List<Document> parse(InputStream inputStream);}

DocumentParser接收一个输入流,输出Document列表

DocumentParser与DocumentReader接口不同,DocumentParser不关心数据如何来,只关心拿到数据后,如何转换为Document

除了spring-ai-alibaba-core中包含的JsonDocumentParser和TextDocumentParser,spring-ai-alibaba还提供了许多document-parser的扩展包,如Markdown、pdf等(具体可以参考spring-ai-alibaba 1.0.0.2 学习(二)——jar包盘点-CSDN博客)

DocumentParser可以理解为DocumentReader接口实现过程中的一个子步骤,主要是为了将文档平台和文档格式进行解耦

举个例子,在语雀平台有markdown格式的文档,在notion笔记中也有markdown格式的文档,那么在接入各个平台的markdown格式文档时,为了避免重复造轮子,那么就将markdown格式文档转换成Document的代码提取为MarkdownDocumentParser(spring-ai-alibaba-starter-document-parser-markdown),那么在各个平台的DocumentReader的构造函数中传入同一个MarkdownDocumentParser即可

换个角度,语雀平台有markdown格式的文档,也可能有yaml格式或者其他格式的文档,那么YuQueDocumentReader的构造函数只需要传入一个DocumentParser,即可兼容各种格式文档的解析。

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

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

相关文章

在银河麒麟V10 SP1上手动安装与配置高版本Docker的完整指南

原文链接&#xff1a;在银河麒麟V10 SP1上手动安装与配置高版本Docker的完整指南 Hello&#xff0c;大家好啊&#xff0c;今天给大家带来一篇银河麒麟桌面操作系统&#xff08;Kylin V10 SP1&#xff09;上安装与配置Docker的文章&#xff0c;详细介绍从下载安装到运行容器的每…

如何在电脑上完全抹去历史记录

要在电脑上‌完全抹去历史记录‌&#xff08;包括浏览记录、文件痕迹、系统日志等&#xff09;&#xff0c;需根据需求选择不同级别的清理方案。以下是分步骤的彻底清理指南&#xff1a; ‌一、基础清理&#xff1a;删除常见痕迹‌ ‌1. 浏览器记录清除‌ ‌Chrome/Firefox/E…

大数据环境搭建指南:基于 Docker 构建 Hadoop、Hive、HBase 等服务

大数据环境搭建指南&#xff1a;基于 Docker 构建 Hadoop、Hive、HBase 等服务 说明大数据环境搭建指南&#xff1a;基于 Docker 构建 Hadoop、Hive、HBase 等服务一、引言二、项目概述三、搭建步骤3.1 下载文件3.2 构建镜像3.2.1 构建基础层镜像3.2.2 并行构建 HBase/Hive/Spa…

AWS WebRTC:根据viewer端拉流日志推算视频帧率和音频帧率

viewer端拉流日志是这样的&#xff1a; 07:19:26.263 VERBOSE sampleAudioFrameHandler(): Audio Frame received. TrackId: 140092278368896, Size: 160, Flags 3210729368 2025-06-12 07:19:26.283 VERBOSE sampleAudioFrameHandler(): Audio Frame received. TrackId: 14009…

Vue.js——组件基础

目录 选项式API和组合式API 选项式API 组合式API 语法糖 选项式API和组合式API的关系 生命周期函数 组合式API的生命周期函数 选项式API的生命周期函数 组件的注册和引用 注册组件 全局注册 局部注册 引用组件 解决组件之间的样式冲突 scoped属性 深度选择器 …

Yii2 安装-yii2-imagine

#composer 安装-如已安装跳过 php -r "copy(https://install.phpcomposer.com/installer, composer-setup.php);" php composer-setup.php sudo mv composer.phar /usr/local/bin/composer#执行安装 composer require --prefer-dist yiisoft/yii2-imagine#报错 Updat…

C#程序设计简介

一、发展历史 C#的主要作者是丹麦计算机科学家安德斯海尔斯伯格&#xff08;Anders Hejlsberg&#xff09;&#xff0c;他是该语言的首席设计师&#xff0c;同时也是Turbo Pascal&#xff08;Pascal 语言编译器&#xff09;、Delphi&#xff08;由 Borland&#xff08;后被 Em…

JavaWeb笔记03

七、Maven1_概述Maven 是专门用于管理和构建 Java 项目的工具&#xff0c;它的主要功能有: 提供了一套标准化的项目结构 提供了一套标准化的构建流程&#xff08;编译&#xff0c;测试&#xff0c;打包&#xff0c;发布……&#xff09; 提供了一套依赖管理机制1.标准化的项目结…

AIGC自我介绍笔记

AIGC&#xff08;人工智能生成内容&#xff09;项目是指利用人工智能技术&#xff08;如深度学习、生成对抗网络、大规模预训练模型等&#xff09;自动生成文本、图像、音频、视频等多模态内容的系统性工程。这类项目通过算法模型学习海量数据&#xff0c;实现内容的自动化、个…

从docker-compose快速入门Docker

不得不提容器化技术是未来的一个发展方向&#xff0c;它彻底释放了计算虚拟化的威力&#xff0c;极大提高了应用的运行效率&#xff0c;降低了云计算资源供应的成本&#xff01;使用 Docker&#xff0c;可以让应用的部署、测试和分发都变得前所未有的高效和轻松&#xff01;无论…

【BERT_Pretrain】Wikipedia_Bookcorpus数据预处理(二)

上一篇介绍了wikipedia和bookcopus数据集&#xff0c;这一篇主要讲一下如何预处理数据&#xff0c;使其可以用于BERT的Pretrain任务MLM和NSP。 MLM是类似于完形填空的任务&#xff0c;NSP是判断两个句子是否连着。因此数据预处理的方式不同。首先&#xff0c;拿到原始数据集&a…

人工智能-基础篇-14-知识库和知识图谱介绍(知识库是基石、知识图谱是增强语义理解的知识库、结构化数据和非结构化数据区分)

在人工智能&#xff08;AI&#xff09;领域&#xff0c;知识图谱&#xff08;Knowledge Graph&#xff09;和知识库&#xff08;Knowledge Base&#xff09;是两种重要的知识表示和管理技术&#xff0c;它们的核心目标是通过结构化的方式组织信息&#xff0c;从而支持智能系统的…

7月1日作业

思维导图 一、将当前的时间写入到time.txt的文件中&#xff0c;如果ctrlc退出之后&#xff0c;在再次执行支持断点续写 1.2022-04-26 19:10:20 2.2022-04-26 19:10:21 3.2022-04-26 19:10:22 //按下ctrlc停止&#xff0c;再次执行程序 4.2022-04-26 20:00:00 5.2022-04-26 20:0…

DHCP中继及动态分配

DHCP中继 在多 VLAN 网络中为什么不能直接用 DHCP&#xff1f; 比如你现在的网络是&#xff1a;PC 在 VLAN10、VLAN20 中DHCP服务器&#xff08;Router0&#xff09;在另一个网段&#xff08;比如 192.168.100.0/24&#xff09;PC 的 DHCP Discover 是广播&#xff0c;无法跨越…

ROS 概述与环境搭建

1. ROS 简介 1.1 ROS 诞生背景 机器人是一种高度复杂的系统性实现&#xff0c;机器人设计包含了机械加工、机械结构设计、硬件设计、嵌入式软件设计、上层软件设计....是各种硬件与软件集成&#xff0c;甚至可以说机器人系统是当今工业体系的集大成者。 机器人体系是相当庞大的…

mac python3.13 selenium安装使用

一、安装 # 进入虚拟环境 workon xxxx pip install selenium二、安装驱动 查询自己浏览器版本 /Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --versionGoogle Chrome 138.0.7204.93下载对应的驱动&#xff0c;其他版本 sudo mv ~/Downloads/chromedr…

AI 开发平台:中小企业的创新破局点在哪里?

在浙江义乌的一个小商品加工厂里&#xff0c;老板王建国最近有点烦。订单量忽高忽低&#xff0c;原材料价格波动不定&#xff0c;他想通过数据分析提前规划生产&#xff0c;却苦于没有专业的技术团队&#xff1b;在广东东莞的一家电子配件公司&#xff0c;业务员李娜每天要处理…

.NET 8.0 Redis 教程

一、环境准备 1. 安装 Redis 服务器 Windows/macOS/Linux&#xff1a;使用 Docker 快速部署 bash docker run -d --name redis -p 6379:6379 redisLinux&#xff1a;直接安装 bash sudo apt-get install redis-server sudo systemctl start redis-server2. 创建 .NET 项目 b…

2025年游戏鼠标推荐,游戏鼠标推荐,打CSGO(罗技、雷蛇、卓威、ROG、漫步者、赛睿、达尔优)

可能很多人对于游戏鼠标的了解还是不够深&#xff0c;会有很多疑问&#xff0c;比如&#xff1a;“游戏鼠标和办公鼠标的区别”、“游戏鼠标无线好还是有线好”等等一系列的问题&#xff0c;本文将会介绍游戏鼠标领域处于领先地位的几个厂家&#xff1a;罗技鼠标、雷蛇鼠标、赛…

OpenCV CUDA模块设备层-----在 GPU上高效地执行两个uint类型值的最小值比较函数vmin2()

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 OpenCV 的CUDA模块&#xff08;cudev&#xff09; 中的一个设备端内联函数&#xff0c;用于在GPU上高效地执行两个uint类型值的最小值比较。 该函…