Claude Code Plugins

Community-maintained marketplace

Feedback

research-papers-to-rag

@Cj-lwh/ResearchPapers2RAG-SKILL
2
2

|

Install Skill

Shared

Installs to .agents/skills, used by Codex, Amp, Warp, Cursor, OpenCode, and more.

CodexAmp
Warp
CursorOpenCode
Cline
Gemini CLI
GitHub Copilot
Personal

Available across projects.

$npx skills-installer add @Cj-lwh/ResearchPapers2RAG-SKILL/SKILL.md --client shared
Project

Writes to .agents/skills.

$npx skills-installer add @Cj-lwh/ResearchPapers2RAG-SKILL/SKILL.md -p --client shared
Note: Review the skill instructions before using it.

SKILL.md

name research-papers-to-rag
description 将研究文献(PDF 和 Word 文档)构建为可检索的知识库。当用户想要: - 从 Zotero 文献库创建/更新可检索的 RAG 知识库 - 构建 FAISS 向量数据库 - 搜索和检索文献内容 - 增量更新已有知识库(仅追加新文献) 触发词:"构建文献知识库", "创建RAG", "搜索我的文献", "文献检索", "论文知识库", "更新文献库", "增量更新"

文献转 RAG 知识库

将你的研究文献(PDF 和 Word 文档)转换为可语义检索的知识库。支持从 Zotero 文献库一键建库,以及后续的增量更新。

功能概述

  1. Zotero 全库建库 — 从 Zotero SQLite 数据库和 storage 目录构建 FAISS 向量索引
  2. 增量更新 — 仅提取新增/修改文献,追加到现有索引,无需重建
  3. 文档提取 — 从 PDF 和 Word 文档中提取文本
  4. 交互查询 — 用自然语言搜索你的文献库

环境要求

  • 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                # 检索工具