上一篇 文章介绍了arXiv采集处理的任务背景、整体需求,并对数据进行了调研。
本文介绍整体方案设计。
4.整体方案设计
4.1.总体流程
基于上述调研了解的情况,针对工作需求设计处理流程如下:
- 下载kaggle数据集作为流程输入,出发采集任务。优先采集最新的论文,因此需要对数据集按时间重排。每周下载一次最新数据集,通过记录处理上次处理的论文ID,提取出增量数据加入流程处理。
- 基于输入数据拼接HTML页面的URL、PDF页面的URL(备用)。
- 下载HTML页面,保存到MinIO系统中。
- 下载PDF文件,保存到MinIO系统中。这一步可选,主要是对缺失HTML页面的补充,以及用于做PDF抽取实验。
- 基于HTML网页解析标题、作者、摘要、正文、参考文献、表格和图像地址,形成层级化的文档结构。
- 下载图像,保存为base64字段,或保存到MinIO系统中。
- 保存完整记录:基于MinIO或MongoDB存储论文完整结构。
- 建立ES全文索引:论文ID、标题、摘要、作者、正文等写入ES。
- 建立正文Qdrant向量化索引:对论文摘要、正文建立向量化索引。文本向量化模型可采用bge-large-en-v1.5(arXiv论文主要为英文,针对中文需要换成bge-large-zh-v1.5)。
- 建立图片Qdrant向量化索引:对论文图片建立向量化索引。图片向量化模型可采用BGE-VL-large。
4.2.任务解耦
由于流程较为复杂,如果采用普通的串行流程,虽然可以实现业务功能,但存在性能不佳、更新数据不及时、添加采集任务不灵活等问题。(思考:为什么会有这些问题?)
很容易想到的解决办法是将流程拆分,分为论文采集流程、论文解析流程和建索引流程,通过不同的并行调度策略,分别进行优化。
但是流程拆分马上产生一个问题:**前后流程如何衔接?**即前一个流程的数据如何输入到后一个流程中。
这里通过引入Kafka消息队列进行解决。
部署kafka服务(单节点或集群)并建立3个消息队列:
- 采集任务队列(arxiv_task):将下载的kaggle数据集排序后写入此队列中。对已经采集处理的论文任务可以丢弃,后续定期下载最新的数据集,但只需要将新增的部分数据写入消息队列,避免重复。由采集程序进行消费。
- 采集结果队列(arxiv_html):完成HTML(或/和PDF文件)后,在此队列中插入一条消息,从而通知HTML解析消费者。
- 解析结果队列(arxiv_parsed):完成文件解析后,在此队列中插入一条消息,从而通知索引构建消费者。
整体流程如下图所示:
4.3.细化向量索引
为了提升向量检索效果,优化向量索引方式。考虑到论文中不同章节的内容类型不同,建立以下不同的索引,支持应用端根据需要进行检索:
- 论文摘要索引(paper_abstract):对论文摘要信息创建索引,可用于论文概要信息查找。
- 论文引言索引(paper_introduction):引言涉及到问题背景、研究领域、主要方法和贡献等。
- 论文方法索引(paper_method):方法章节具体描述论文采用的方法,方便用户查看论文方法细节。
- 论文实验索引(paper_experiment):实验方法介绍了论文的实验相关内容,方便用户查看论文实验细节。
- 论文讨论索引(paper_discusss):讨论章节对某些问题进行阐述,可用于启发相关研究。
- 论文图片索引(paper_figure):对论文中的图片建立向量化索引,支持进行跨模态检索。
4.4.存储结构设计
4.4.1.数据结构
采集任务数据结构:
{
"id": "2501.00468", //论文ID
"title": "Non-perturbative self-consistent electron-phonon spectral functions and transport", //标题
"authors": "Jae-Mo Lihm and Samuel Ponce", //作者
"submitter": "Jae-Mo Lihm", //提交者
"categories": "cond-mat.mtrl-sci", //分类
"abstract": " Electron-phonon coupling often dominates the electron spectral functions and\ncarrier transport properties. However, studies of this effect in real materials\nhave largely relied on perturbative one-shot methods due to the lack of a\nfirst-principles theoretical and computational framework. Here, we present a\nself-consistent theory and implementation for the non-perturbative calculations\nof spectral functions and conductivity due to electron-phonon coupling.\nApplying this method to monolayer InSe, we demonstrate that self-consistency\nqualitatively affects the spectral function and transport properties compared\nto state-of-the-art one-shot calculations and allow one to reconcile\nexperimental angle-resolved photoemission experiments. The developed method can\nbe widely applied to materials with dominant electron-phonon coupling at\nmoderate computational cost.\n", //摘要
"versions": [ //提交版本
{
"version": "v1",
"created": "Tue, 31 Dec 2024 14:39:52 GMT"
},
{
"version": "v2",
"created": "Thu, 20 Mar 2025 15:18:07 GMT"
}
],
"update_date": "2025-03-21", //更新日期
"_id": "2501.00468v2", //文档ID
"url_pdf": "http://arxiv.org/pdf/2501.00468", //PDF链接
"url_html": "http://arxiv.org/html/2501.00468v2" //HTML链接
}
解析结果数据结构:
{
"title": "Non-perturbative self-consistent electron-phonon spectral functions and transport", //标题
"authors": [ //作者列表
"Jae-Mo Lihm \\orcidlink0000-0003-0900-0405\n\njaemo.lihm@gmail.com\n\nEuropean Theoretical Spectroscopy Facility, Institute of Condensed Matter and Nanosciences, Université catholique de Louvain, Chemin des Étoiles 8, B-1348 Louvain-la-Neuve, Belgium"
],
"abstract": "Electron-phonon coupling often dominates the electron spectral functions and carrier transport properties.……",
"sections": [//正文各个章节
{
"title": "title", //章节标题
"content": "content" //章节正文内容,段落间用换行符分割
"figures": [//图表列表
{
"caption": "caption", //图表标题
"url": "https://....", //图片绝对地址
}
] ,
"tables": [ //表格列表
{
"caption": "caption", //表格标题
"rows": [//表格的行 包括标题行
{
"v": "cell value", //单元格内容
"rowspan": 1, //跨行数 字段不存在标识不跨行
"colspan": 1, //跨列数 字段不存在标识不跨列
}
]
}
]
}
],
"references": [//参考文献列表
"Damascelli et al. [2003] A. Damascelli, Z. Hussain, and Z.-X. Shen, Angle-resolved photoemission studies of the cuprate superconductors, Rev. Mod. Phys. 75, 473 (2003)."
]
}
4.4.2.对象存储结构
采用MinIO文件系统对解析后的完整数据结构进行存储,方便应用获取论文详情。
MinIO对象存储模型为桶(bucket)-键-值。桶相当于顶层目录,一个应用通常对应一个桶。键可以根据需要设计为多级,以/
进行分隔。值就是对象的内容。
本系统中设计桶为 goinv3-arxiv-2504
。键设计为 YYMM/nnn/nn.json
,即将论文ID分为年月、前三位顺序号、后两位顺序号3级,方便以浏览器进行直接查看。值设计为JSON格式(通过键名设计也可以看出来),即将解析后的对象做JSON序列化,以及附加gzip压缩,减小存储空间。
4.4.3.传统索引结构
采用ElasticSearch对解析后的论文内容建立传统索引(包括普通索引和文本倒排索引),方便对论文进行条件检索和关键词匹配。
ElasticSearch按照索引(index)对JSON文档进行管理,通过指定索引的设置(settings)和映射(mapping),实现更加准确的检索。
本系统中设计索引名为goinv3-arxiv-2504。映射设计如下:
- _id 直接采用论文ID。如果新版本,直接更新。
- title: text;索引源为论文标题字符串。
- authors:text;索引源为论文作者拼接字符串。
- abstract: text;索引源为论文摘要拼接字符串。
- content: text;索引源为论文正文拼接字符串。
- created_time: datetime;索引源为论文第一个版本的发布时间。
- updated_time: datetime;索引源为论文最新版本的发布时间。
4.4.4.向量索引结构
采用Qdrant向量数据库对论文建立向量化索引,支撑应用进行语义检索。
Qdrant采用集合(collection)对向量进行索引管理,通过创建集合时指定向量维度、相似度计算方法等参数,满足向量检索要求。由于向量化的复杂性,Qdrant(以及其他大多数向量库)并不直接提供向量化模型,应用系统需要单独对数据进行向量化,在实际场景中这样更加灵活。
向量索引与文档内容拆分(chunk)粒度密切相关。chunk如果太长,则可能包含更混杂的语义;如果太短,则可能因为没有足够的上下文而语义信息不足。对于论文而言,各个章节的内容、长度、焦点主题、相关内容等情况非常复杂,可能需要在实际应用中不断尝试,或者通过一些实验评估,才能确定最佳方案。
本系统初步设计针对论文摘要、引言、方法、实验、讨论等章节分别建立索引(如前文“细化向量索引”一节所述)。每个索引除了向量本身,还包括一个载荷(payload
)对象,包括doc_id
、content
字段,方便快速获取当前向量对应的原文(针对文本)以及论文编号。
由于Qdrant的集合仅支持数字ID或UUID,为了方便与论文对象关联,采用论文ID的数字化形式,如论文2502.18864
,对应的记录ID为250218864
。考虑chunk长度,在记录ID后面附加两位数字序号,如25021886401
表示论文中相应部分的第一个chunk。(payload
中的doc_id
仍然需要,后续如果变更记录ID设计,也不影响与论文的对应关系。)
此外,为了便于对论文图片进行语义检索(以文搜图、以图搜图),对论文中的图表也建立向量化索引,其记录ID设计与上述类似。
4.4.5.文件存储结构
为了简化设计,采用MinIO对相关文件进行存储,包括HTML文件、PDF文件、图表文件等。
采用与前文对象存储结构的文件存储结构,分别设计桶为goinv3-arxiv-html-2504
、goinv3-arxiv-pdf-2504
和goinv3-arxiv-figure-2504
。键设计分别为YYMM/nnn/nn.html
、YYMM/nnn/nn.pdf
和YYMM/nnn/nn_xx.png
,其中xx
是图表文件序号,从01开始编号。对于HTML文件,可采用gzip进行压缩以减小存储空间。
4.5.向量化模型
影响向量语义检索质量的因素除了chunk拆分设计,另一个重要因素就是向量化模型选择,向量化模型直接影响对数据内容的语义捕获的准确性。对于如何选择向量化模型,并没有简单答案,与应用场景密切相关,需要根据经验或实验评估进行权衡。
本系统中采用bge-large-en-v1.5 对论文文本进行向量化,在这里查看模型 ;采用BGE-VL-large对论文图表进行向量化,在这里查看模型。