| name | research-papers-to-rag |
| description | 将研究文献(PDF 和 Word 文档)构建为可检索的知识库。当用户想要: - 从 Zotero 文献库创建/更新可检索的 RAG 知识库 - 构建 FAISS 向量数据库 - 搜索和检索文献内容 - 增量更新已有知识库(仅追加新文献) 触发词:"构建文献知识库", "创建RAG", "搜索我的文献", "文献检索", "论文知识库", "更新文献库", "增量更新" |
文献转 RAG 知识库
将你的研究文献(PDF 和 Word 文档)转换为可语义检索的知识库。支持从 Zotero 文献库一键建库,以及后续的增量更新。
功能概述
- Zotero 全库建库 — 从 Zotero SQLite 数据库和 storage 目录构建 FAISS 向量索引
- 增量更新 — 仅提取新增/修改文献,追加到现有索引,无需重建
- 文档提取 — 从 PDF 和 Word 文档中提取文本
- 交互查询 — 用自然语言搜索你的文献库
环境要求
- Python 3.8+
- 依赖:
pymupdf,python-docx,sentence-transformers,faiss-cpu
pip install -r requirements.txt
使用流程
场景 1:首次从 Zotero 建库
从 Zotero SQLite 数据库读取全部文献,提取 PDF 文本,构建 FAISS 索引:
python scripts/build_zotero_rag.py
输出到 D:/experiment/论文rag/Zotero全库/vector_store/:
index.faiss— FAISS 向量索引data.pkl— 文本块 + 元数据(标题、作者、年份、DOI、分类路径等)marker.json— 自动创建,记录本次建库时间戳
场景 2:增量更新
日常使用:仅提取 Zotero 中自上次建库以来新增/修改的文献,追加到现有索引:
python scripts/incremental_update.py
增量更新原理:
marker.json记录last_max_dateAdded(上次建库时 Zotero 中最新的 dateAdded)- 增量脚本查询
dateAdded > last_max_dateAdded的新文献 - 同时查询
dateModified > last_max_dateAdded的修改文献 - 仅提取新文献的 PDF,编码为向量,调用
FAISS.index.add()追加 - 更新
data.pkl追加新 chunks 和 metadata - 更新
marker.json时间戳
注意: FAISS
IndexFlatIP不支持删除单条向量。修改文献会以新版本形式追加(旧块保留)。若需清理,偶尔执行一次完整重建即可。
场景 3:传统方式(非 Zotero)
从任意 PDF/Word 文件夹建库:
# 步骤 2:提取文档文本
python scripts/extract_documents.py /path/to/documents
# 步骤 3:构建向量索引
python scripts/build_vector_store.py
检索文献
使用 search.py 脚本检索:
python scripts/search.py "查询内容"
python scripts/search.py -i # 交互模式
python scripts/search.py --list # 列出所有文档
命令说明
| 命令 | 功能 |
|---|---|
build_zotero_rag.py |
从 Zotero SQLite 首次全量建库 |
incremental_update.py |
增量更新:仅追加 Zotero 中新增/修改的文献 |
extract_documents.py /path |
从指定目录提取 PDF/Word 文本 |
build_vector_store.py |
从 extracted_texts.json 构建向量索引 |
search.py "查询" |
检索相关文献片段 |
search.py "查询" -k 10 |
返回前 10 条结果 |
search.py --list |
列出知识库中所有文档 |
search.py -i |
进入交互查询模式 |
技术参数
- 嵌入模型:
paraphrase-multilingual-MiniLM-L12-v2(384 维) - 向量存储: FAISS IndexFlatIP(内积相似度,支持
add()增量追加) - 分块策略: 段落级切分(100–1000 字符/块)
- 支持格式: PDF(通过 PyMuPDF), DOCX/DOC(通过 python-docx)
- 元数据: 标题、作者、年份、DOI、期刊、Zotero 分类路径、文献类型
- 存储位置: 默认
D:/experiment/论文rag/Zotero全库/ - 镜像源: 自动选择国内镜像或官方源
文件结构
research-papers-to-rag/
├── SKILL.md
├── README.md
├── requirements.txt
└── scripts/
├── build_zotero_rag.py # Zotero 全库建库
├── incremental_update.py # 增量更新(追加新文献)
├── extract_documents.py # 通用文档提取
├── build_vector_store.py # 通用向量索引构建
└── search.py # 检索工具