| 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 文件夹建库:
python scripts/extract_documents.py /path/to/documents
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 # 检索工具