{"repo": "agents365-ai/zotero-rag-cli", "files": {"README.md": {"0ce989bbbef94dcc96e55b3057460f0494338665": {"t": 1785674237.569848, "n": 10844, "h": "0f471fc371ea5f99", "c": "# rak — Zotero 文献库 RAG 语义检索\n\n[English](README_EN.md)\n\n`rak` 是基于 RAG 的 Zotero 语义检索工具。通过本地嵌入模型将论文向量化,支持语义搜索和混合检索,返回最相关的论文及匹配片段。\n\n## 核心理念\n\n**rak 只做一件事:语义检索。** 找到最相关的论文和匹配的文本片段,交给调用方(Claude Code / LM Studio / 人)决定下一步。\n\n```mermaid\ngraph LR\n A[用户查询] --> B[rak 语义检索]\n B --> C[论文元数据 + 匹配片段]\n C --> D1[Claude Code
直接分析总结]\n C --> D2[LM Studio
MCP 工具调用]\n C --> D3[终端用户
ask / chat 问答]\n```\n\n## 三种检索模式\n\nrak 提供三种检索模式,适用于不同场景:\n\n```mermaid\ngraph LR\n Q[用户查询] --> E[Embedder 嵌入]\n E --> VS[向量搜索
理解语义]\n VS --> R1[结果]\n```\n\n> **向量搜索**(默认):将查询转化为向量,在 ChromaDB 中找语义最相似的论文。能理解同义词和跨语言表达,如 \"细胞命运决定\" 匹配 \"cell fate determination\"。\n\n```mermaid\ngraph LR\n Q[用户查询] --> BM[BM25 搜索
关键词匹配]\n BM --> R2[结果]\n```\n\n> **BM25 关键词搜索**:在索引的全文内容(标题 + 摘要 + PDF 全文)中做关键词匹配和排序。根据词频和文档长度计算相关性 — 确保包含精确关键词(如 \"CRISPR-Cas9\")的论文不被遗漏。\n\n```mermaid\ngraph LR\n Q[用户查询] --> VS[向量搜索]\n Q --> BM[BM25 搜索]\n VS --> RRF[RRF 融合排序]\n BM --> RRF\n RRF --> R3[最终结果]\n```\n\n> **混合搜索**(`--hybrid`):向量 + BM25 两路检索,通过 RRF(Reciprocal Rank Fusion)融合排序。兼顾语义理解和精确关键词,效果最好。\n\n| 模式 | 命令 | 优势 | 适用场景 |\n|------|------|------|----------|\n| **向量搜索** | `rak search \"query\"` | 理解语义和同义词 | 探索性查询 |\n| **BM25 搜索** | 混合搜索的内部组件 | 精确关键词,搜 PDF 全文 | — |\n| **混合搜索** | `rak search \"query\" --hybrid` | 语义 + 关键词,最准 | 推荐默认使用 |\n\n## 三种使用方式\n\n```mermaid\ngraph LR\n S1[rak search] --> S2[返回论文标题 + 匹配片段] --> S3[Claude Code / 脚本解析]\n```\n\n```mermaid\ngraph LR\n A1[rak ask] --> A2[检索论文] --> A3[LLM 生成回答]\n```\n\n```mermaid\ngraph LR\n C1[rak chat] --> C2[检索论文] --> C3[多轮对话 + 上下文记忆]\n```\n\n| 模式 | 命令 | 给谁用 | 需要 LLM? |\n|------|------|--------|:---:|\n| **搜索** | `rak search` | AI 助手 / 脚本 | 不需要 |\n| **问答** | `rak ask` | 人(终端快速提问) | 需要 |\n| **对话** | `rak chat` | 人(深入讨论) | 需要 |\n\n## 安装\n\n```bash\n# 推荐\nuv tool install zotero-rag-cli\n\n# 或者\npip install zotero-rag-cli\n\n# 如需 MCP Server(LM Studio / Cursor)\npip install zotero-rag-cli[mcp]\n```\n\n前置依赖:[`zot`](https://github.com/Agents365-ai/zotero-cli-cc)(Zotero CLI,用于获取文献数据)。\n\n## 快速开始\n\n```bash\n# 1. 索引(增量,自动提取 PDF 全文并分块)\nrak index\n\n# 2. 语义搜索\nrak search \"cell fate determination\"\n\n# 3. 混合搜索(语义 + BM25 关键词)\nrak search \"spatial transcriptomics\" --hybrid\n\n# 4. 终端问答(需要 LLM)\nrak ask \"单细胞聚类的主要方法有哪些?\"\n\n# 5. 查找相似论文(支持 key 或标题模糊匹配)\nrak similar ABC12345\nrak similar \"attention is all you need\"\n\n# 6. 多轮对话(需要 LLM)\nrak chat\n```\n\n## 数据流\n\n```mermaid\ngraph TD\n Z[zot CLI] -->|\"zot --json list\"| I[rak index]\n P[PDF 全文] --> I\n I -->|嵌入 + 分块| V[(ChromaDB
向量存储)]\n I -->|全文| F[(SQLite FTS5
关键词索引)]\n\n Q[用户查询] --> E[Embedder]\n E --> VS[向量搜索]\n Q --> BS[BM25 搜索]\n V --> VS\n F --> BS\n VS --> RRF[RRF 融合排序]\n BS -->|\"--hybrid\"| RRF\n RRF --> R[检索结果
元数据 + 匹配片段]\n\n R --> OUT1[CLI 输出 / JSON]\n R --> OUT2[LLM 问答
ask / chat]\n R --> OUT3[MCP Server
LM Studio 等]\n```\n\n## 命令详解\n\n### 索引\n\n```bash\nrak index # 增量索引(仅新增/变更)\nrak index --full # 全量重建\nrak index --limit 500 # 限制项目数\n```\n\n自动从 `~/Zotero/storage/` 提取 PDF 和 Markdown 附件全文,长文档分割为重叠片段(512 词,64 词重叠)。\n\n### 嵌入模型\n\n默认使用 `all-MiniLM-L6-v2`,支持所有 [sentence-transformers](https://huggingface.co/models?library=sentence-transformers) 模型。切换模型后需重建索引:\n\n```bash\nrak config model_name BAAI/bge-m3\nrak clear --yes && rak index\n```\n\n常用模型推荐:\n\n| 模型 | 维度 | 大小 | 适用场景 |\n|------|------|------|----------|\n| `all-MiniLM-L6-v2` (默认) | 384 | 80MB | 英文论文,速度快 |\n| `all-mpnet-base-v2` | 768 | 420MB | 英文最佳质量 |\n| `BAAI/bge-small-en-v1.5` | 384 | 130MB | 英文,性价比高 |\n| `BAAI/bge-small-zh-v1.5` | 512 | 95MB | 中文论文优化 |\n| `BAAI/bge-m3` | 1024 | 2.2GB | 多语言,最强但较慢 |\n| `intfloat/multilingual-e5-small` | 384 | 470MB | 多语言轻量 |\n| `jinaai/jina-embeddings-v3` | 1024 | 2.3GB | 多语言,长文本支持(8192 tokens) |\n\n### API 嵌入模型\n\n也支持通过 API 使用远程嵌入模型(兼容 OpenAI `/v1/embeddings` 格式):\n\n```bash\n# OpenAI\nrak config embedding_provider api\nrak config embedding_base_url https://api.openai.com/v1\nrak config embedding_api_key sk-your-key\nrak config model_name text-embedding-3-small\nrak clear --yes && rak index\n\n# 通义千问 (Qwen)\nrak config embedding_provider api\nrak config embedding_base_url https://dashscope.aliyuncs.com/compatible-mode/v1\nrak config embedding_api_key sk-your-key\nrak config model_name text-embedding-v3\nrak clear --yes && rak index\n\n# 本地 Ollama\nrak config embedding_provider api\nrak config embedding_base_url http://localhost:11434/v1\nrak config embedding_api_key not-needed\nrak config model_name nomic-embed-text\nrak clear --yes && rak index\n\n# 切回本地模型\nrak config embedding_provider local\nrak config model_name all-MiniLM-L6-v2\nrak clear --yes && rak index\n```\n\n### 搜索\n\n```bash\nrak search \"单细胞 RNA 测序方法\"\nrak search \"CRISPR off-target\" --hybrid\nrak search \"attention\" --limit 5\nrak search \"RNA-seq\" --collection \"My Papers\" --tag \"methods\"\nrak --json search \"spatial omics\" # JSON 输出(含匹配片段)\n```\n\n`--json` 输出示例:\n\n```json\n[\n {\n \"key\": \"ABC123\",\n \"title\": \"Attention Is All You Need\",\n \"score\": 0.89,\n \"source\": \"vector\",\n \"snippet\": \"We propose a new simple network architecture...\"\n }\n]\n```\n\n### 问答\n\n```bash\nrak ask \"关于细胞命运的主要发现是什么?\"\nrak ask \"比较 CRISPR 方法\" --context 10 --hybrid\n```\n\n### 对话\n\n```bash\nrak chat # 启动交互会话\nrak chat --hybrid --context 10 # 混合搜索 + 更多上下文\nrak chat --collection \"My Papers\" # 限定 collection\n```\n\n对话内置命令:`/search <查询>` · `/context` · `/tokens` · `/help` · `/quit`\n\n### 导出\n\n```bash\nrak export \"single cell\" --format csv\nrak export \"CRISPR\" --format bibtex --output refs.bib\n```\n\n### 配置\n\n```bash\nrak config # 显示所有设置\nrak config llm_model deepseek-chat # 设置 LLM 模型\nrak config llm_base_url https://api.deepseek.com\nrak config llm_api_key sk-xxx # 设置 API Key\n```\n\nLLM 配置示例
\n\n```bash\n# DeepSeek(推荐云端)\nrak config llm_base_url https://api.deepseek.com\nrak config llm_model deepseek-chat\nrak config llm_api_key sk-your-key\n\n# OpenAI\nrak config llm_base_url https://api.openai.com/v1\nrak config llm_model gpt-4o\nrak config llm_api_key sk-your-key\n\n# 本地 Ollama(默认)\nrak config llm_base_url http://localhost:11434/v1\nrak config llm_model llama3\nrak config llm_api_key not-needed\n```\n\n
\n \n \n 微信支付\n | \n \n \n \n 支付宝\n | \n \n \n \n Buy Me a Coffee\n | \n