Spring AI 系列之三十七 - Spring AI Alibaba-DocumentReader

之前做个几个大模型的应用,都是使用Python语言,后来有一个项目使用了Java,并使用了Spring AI框架。随着Spring AI不断地完善,最近它发布了1.0正式版,意味着它已经能很好的作为企业级生产环境的使用。对于Java开发者来说真是一个福音,其功能已经能满足基于大模型开发企业级应用。借着这次机会,给大家分享一下Spring AI框架。

注意由于框架不同版本改造会有些使用的不同,因此本次系列中使用基本框架是 Spring AI-1.0.0,JDK版本使用的是19,Spring-AI-Alibaba-1.0.0.3-SNAPSHOT
代码参考: https://github.com/forever1986/springai-study

在《Spring AI 系列之十四 - RAG-ETL之一》中讲了RAG中文档读取部分,但是很遗憾Spring AI对于文档的扩展支持其实远远不如LangChain4J,这也是Spring AI的遗憾。不过好在Spring AI Alibaba弥补了这一部分的空缺,在Spring AI Alibaba中,对于文档读取已经形成了一个较好的生态。这一章将讲一下Spring AI Alibaba的DocumentReader。

1 DocumentReader 扩展

1.1 社区实现的扩展

Spring AI Alibaba 官方社区提供了很多 DocumentReader 插件扩展实现,在 RAG 场景中,当需要集成不同来源、不同格式的私域数据时,这些插件会非常有用,它可以帮助开发者快速的读取数据,免去重复开发带来的麻烦。

以下是截止到目前为止实现的一些解析插件(注意:版本号截止到目前为止,亲测有效,另外有些插件只支持了Spring-Boot-2.X版本,需要在使用时注意):

名称说明Maven依赖版本
ArxivDocumentReaderarXiv学术论文阅读器,支持论文元数据提取、PDF下载和内容解析spring-ai-alibaba-starter-document-reader-arxiv1.0.0.3-SNAPSHOT
BilibiliDocumentReaderB站视频内容解析器,支持视频信息提取和字幕抓取spring-ai-alibaba-starter-document-reader-bilibili1.0.0.3-SNAPSHOT
ChatGptDataDocumentReaderChatGPT对话记录解析器,支持导出数据的结构化处理spring-ai-alibaba-starter-document-reader-chatgpt-data1.0.0.3-SNAPSHOT
EmailDocumentReader邮件文档解析器,支持EML/MSG格式,可提取正文、附件和元数据spring-ai-alibaba-starter-document-reader-email1.0.0.3-SNAPSHOT
FeiShuDocumentReader飞书文档库读取器,可用在 RAG 场景中,将飞书中的文档源读取并写入向量数据库spring-ai-alibaba-starter-document-reader-feishu0.0.1-SNAPSHOT
GitHubDocumentReaderGitHub仓库文档解析器,支持Markdown/README等格式抓取spring-ai-alibaba-starter-document-reader-github1.0.0.3-SNAPSHOT
GitLabDocumentReaderGitLab仓库内容读取器,支持Issue和代码仓库文档解析spring-ai-alibaba-starter-document-reader-gitlab1.0.0.3-SNAPSHOT
MongoDBDocumentReaderMongoDB数据库连接器,支持集合文档的批量读取和查询spring-ai-alibaba-starter-document-reader-mongodb1.0.0.3-SNAPSHOT
MySQLDocumentReaderMySQL数据库阅读器,支持SQL查询结果转换为文档spring-ai-alibaba-starter-document-reader-mysql1.0.0.3-SNAPSHOT
NotionDocumentReaderNotion知识库集成工具,支持页面内容和块级元素解析spring-ai-alibaba-starter-document-reader-notion1.0.0.3-SNAPSHOT
TencentCOSDocumentReader腾讯云对象存储集成工具,支持COS文档内容批量处理spring-ai-alibaba-starter-document-reader-tencent-cos1.0.0.3-SNAPSHOT
YouTubeDocumentReaderYouTube视频内容解析器,支持视频信息和字幕提取spring-ai-alibaba-starter-document-reader-youtube1.0.0.3-SNAPSHOT
ObsidianDocumentReaderObsidian笔记解析器,支持Markdown文件和双向链接处理spring-ai-alibaba-starter-document-reader-obsidian1.0.0.3-SNAPSHOT
HuggingFaceFSDocumentReaderHuggingFace数据集文件阅读器,支持JSONL格式解析spring-ai-alibaba-starter-document-reader-huggingface-fs1.0.0.3-SNAPSHOT
MboxDocumentReaderMbox邮箱文件解析器,支持多邮件内容提取spring-ai-alibaba-starter-document-reader-mbox1.0.0.3-SNAPSHOT
GitbookDocumentReaderGitbook文档阅读器,支持API方式获取书籍内容spring-ai-alibaba-starter-document-reader-gitbook1.0.0.3-SNAPSHOT
ElasticsearchDocumentReaderElasticsearch文档连接器,支持单节点/集群模式、HTTPS安全连接和基础认证,提供文档检索、ID查询和自定义搜索功能spring-ai-alibaba-starter-document-reader-es1.0.0-M6.1
YuQueDocumentReader语雀知识库集成工具,支持通过API获取文档内容并保留源文件路径信息spring-ai-alibaba-starter-document-reader-yuque1.0.0.3-SNAPSHOT
OneNoteDocumentReaderOneNote文档解析器,支持通过Microsoft Graph API获取笔记本内容和页面结构spring-ai-alibaba-starter-document-reader-onenote1.0.0.3-SNAPSHOT
GptRepoDocumentReaderGit仓库分析工具,支持代码库全量读取、文件过滤和结构化文档生成spring-ai-alibaba-starter-document-reader-gpt-repo1.0.0.3-SNAPSHOT

1.2 示例演示

代码参考lesson28子模块

示例说明:使用ArxivDocumentReader读取Arxiv网站的论文,并解析为document

1)新建lesson28子模块,其pom引入如下:

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

2)创建ArxivReaderTest 作为测试类:

import com.alibaba.cloud.ai.reader.arxiv.ArxivDocumentReader;
import org.springframework.ai.document.Document;

import java.util.List;

public class ArxivReaderTest {
    public static void main(String[] args) {

		//两个参数,第一个是查询条件,第二个是返回文档数量
        ArxivDocumentReader arxivDocumentReader = new ArxivDocumentReader("Batch Normalization--1502.03167v3", 1);
        List<Document> documents = arxivDocumentReader.get();
        int i = 0;
        for (Document document : documents){
            System.out.println("--------"+(++i)+"--------");
            System.out.println(document.getMetadata().keySet());
            System.out.println(document.getText());
        }
        System.out.println("======== 总结 ============");
        System.out.println(arxivDocumentReader.getSummaries());
    }
}

3)演示效果

首先运行过程中,可以在Temp目录(Windows系统)下找到已经下载的pdf(程序运行完会自动删除)
在这里插入图片描述

其次,在控制台可以看到已经解析好了document文档
在这里插入图片描述

说明:从示例中可以看到,其DocumentReader的使用非常简单,并且Spring AI Alibaba已经实现了很多类型文档读取,对于使用者来说非常方便,这里就不一一讲解。

结语:本章讲解了Spring AI Alibaba的DocumentReader生态,可以看出在Spring AI的基础上,Spring AI Alibaba扩展了很多插件,这样也是丰富了Spring AI的生态,对于java用户来说是一个很好的福音。

Spring AI系列上一章:《Spring AI 系列之三十六 - Spring AI Alibaba-nl2sql

Spring AI系列下一章:《Spring AI 系列之三十八 - Spring AI Alibaba-Tool Calling

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

linmoo2006

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

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

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

打赏作者

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

抵扣说明:

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

余额充值