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
英文地址,請注明出處:http://en.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類型值的最小值比較。 該函…