本地 arXiv 论文管理器,支持语义搜索。爬取 arXiv 分类,下载 PDF,分块内容,并使用 FAISS + Ollama 嵌入进行索引。无云端依赖。
ArXivKB — 科学知识库是一项面向实际任务的技能,主要用于为什么是这个技能?;— 100%的本地 — 爬行 arXiv 的自由 API, 嵌入 Ollama( 基因嵌入文字), 索引在 FAISS + SQLite 中;
从功能定位来看,该技能强调把分散的操作要求整理成清晰、可复用的处理流程,使用户能够围绕既定目标快速准备输入、选择执行方式并获得结构化结果。实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。
执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;涉及批量任务时,还应保存进度,避免中断后重复操作。该技能适合用于一次性任务,也可以接入自动化工作流,与其他技能或上层代理配合完成更完整的业务链路;在组合使用时,应明确每一步的输入输出关系,并避免不同步骤之间出现参数冲突。
🏠 100% 本地化 — 通过 arXiv 免费 API 抓取论文,使用 Ollama(nomic-embed-text)进行嵌入,索引存储于 FAISS + SQLite。无需任何云服务成本。
🔍 基于论文全文内容的语义搜索 — FAISS 索引的是 PDF 文本分块(而不仅是摘要),因此可依据论文实际内容查找相关文献。
📂 按 arXiv 分类体系组织 — 跟踪官方 arXiv 分类(共 155 类,归为 8 大组)。不支持自由文本查询。
🧹 自动清理机制 — 可配置过期策略,自动删除陈旧论文、PDF 文件及文本分块。
python3 scripts/install.py
支持 macOS 和 Linux。自动安装 Python 依赖(faiss-cpu、pdfplumber、tiktoken、arxiv、numpy),通过 Ollama 拉取 nomic-embed-text 模型,并创建数据目录与数据库文件。
ollama serve)# 1. 添加需跟踪的 arXiv 分类 akb categories add cs.AI cs.CV cs.LG # 2. 浏览全部可用分类 akb categories browse # 3. 抓取近期论文(过去 7 天) akb ingest # 4. 查看统计信息 akb stats
akb categories list # 显示当前启用的分类 akb categories browse # 浏览全部 155 个 arXiv 分类 akb categories browse robotics # 按关键词筛选分类 akb categories add cs.AI cs.RO # 启用指定分类 akb categories delete cs.AI # 停用指定分类
分类采用官方 arXiv 编码(例如 cs.AI、eess.IV、q-fin.ST)。完整分类体系已内置。
akb ingest # 执行全流程:抓取 arXiv → 下载 PDF → 分块 → 嵌入 akb ingest --days 14 # 回溯 14 天内的论文 akb ingest --dry-run # 仅预览将处理的论文,不执行实际操作 akb ingest --no-pdf # 仅索引摘要(速度更快)
处理流程:arXiv API → PDF 下载 → 文本提取(pdfplumber)→ 分块(tiktoken,每块 500 tokens,重叠 50 tokens)→ 嵌入(Ollama nomic-embed-text)→ FAISS + SQLite。
akb paper 2401.12345 # 显示标题、摘要、所属分类、PDF 下载状态等信息
akb stats # 论文总数、文本分块数、启用分类数、数据库大小
akb expire # 删除早于 90 天(默认)的论文及相关数据 akb expire --days 30 # 自定义:删除早于 30 天的论文 akb expire --days 30 -y # 跳过确认提示
无需配置文件。默认参数如下:
| 设置项 | 默认值 | 覆盖方式 |
|---|---|---|
| 数据目录 | ~/workspace/arxivkb |
通过环境变量 ARXIVKB_DATA_DIR 或命令行参数 --data-dir |
| Ollama 接口地址 | http://localhost:11434 |
—(硬编码,不可修改) |
| 嵌入模型 | nomic-embed-text(768 维) |
—(硬编码,不可修改) |
| 分块大小 | 500 tokens,重叠 50 tokens | —(不可配置) |
| 过期时间 | 90 天 | 通过 --days 参数指定 |
~/workspace/arxivkb/
├── arxivkb.db # SQLite 数据库:存储论文、分块、翻译、分类等信息
├── pdfs/ # 下载的 PDF 文件(命名格式:{arxiv_id}.pdf)
└── faiss/
└── arxivkb.faiss # FAISS IndexFlatIP 索引文件(存储分块嵌入向量)
当该技能安装后,Agent 将识别 /akb 为快捷指令:
| 命令 | 作用 |
|---|---|
/akb list |
显示当前启用的分类 |
/akb add cs.AI cs.RO |
启用指定分类以供抓取 |
/akb remove cs.AI |
停用指定分类 |
/akb browse |
浏览全部 155 个 arXiv 分类 |
/akb browse robotics |
按关键词筛选分类 |
/akb stats |
显示论文数、分块数、分类数等统计信息 |
/akb help |
列出所有可用命令 |
Agent 内部通过调用 akb CLI 执行上述命令。
配套提供一款 PWA 形式的仪表板应用,功能包括:
scripts/ ├── cli.py # CLI 主程序:支持 categories / ingest / paper / stats / expire 等子命令 ├── db.py # SQLite 数据库 Schema 定义与 CRUD 操作封装 ├── arxiv_crawler.py # arXiv API 检索与 PDF 下载逻辑 ├── arxiv_taxonomy.py # 完整 arXiv 分类体系(155 个分类) ├── pdf_processor.py # PDF 文本提取 + tiktoken 分块逻辑 ├── embed.py # 调用 Ollama nomic-embed-text(768 维,已归一化) ├── faiss_index.py # FAISS IndexFlatIP 索引管理器 ├── search.py # 语义搜索实现:query → FAISS 检索 → 按论文聚合结果 └── install.py # 一键安装脚本
相关专题
热门下载
相关下载
精品课程
共6课时 | 54.7万人学习
共89课时 | 134.3万人学习
共49课时 | 82.7万人学习
最新文章