用途:在个人书库目录(默认 ~/.hermes/library/)上做基于语义的检索,覆盖书籍、文档、参考资料等任意语言的文本语料。检索链路为 NVIDIA NIM 的 nemotron-3-embed-1b(2048 维)生成嵌入,写入 sqlite-vec 数据库 rag_index.db,含 chunks(文本与元数据)、vec_chunks(L2 归一化向量)、indexed_files(SHA-256 增量跟踪)三张表。
主要能力:MCP 服务(mcp_server.py)提供 search(query, top_k, source_type) 语义检索、stats() 索引统计、add_book(file_path, ...) 将 EPUB/PDF 转换为 markdown 并建索引;命令行脚本支持增量索引、全量重建(--rebuild)、预览(--dry-run)、按来源索引(--source)、清理失效文件(--prune-missing --vacuum)以及 rag_query.py 查询与 --stats 统计;转换工具 convert_epub_library.py 按章节拆分 EPUB 并写 YAML frontmatter,convert_pdf_library.py 用 pdfplumber 按页提取并保留表格;内置 chunk_markdown() 与 chunk_plain_text() 分块器,可注册自定义分块器。
使用方式:安装依赖后(pip install -r requirements.txt,必要时加 --break-system-packages),设置 NVIDIA_API_KEY(可写入 ~/.hermes/.env),确定 LIBRARY_ROOT 与 BOOKS_DIR 并建目录;将源文件放入 $BOOKS_DIR/raw 转换到 $LIBRARY_ROOT/<source_type>/,再执行 python3 scripts/rag_index.py --dry-run 预览、python3 scripts/rag_index.py 增量建立、python3 scripts/rag_query.py --stats 与查询验证。MCP 需在 ~/.hermes/config.yaml 注册 library_rag 并重启网关,工具以 mcp_library_rag_search 等形式可用。可选择手动或在 cron/launchd 中定时增量索引。
适用场景:个人书库全局语义检索、按来源类型过滤、把书籍/文档加入索引,以及把同一模式复制为某个技能目录内的独立便携 RAG(不注册 MCP,直接导入 search())。
限制:需 NVIDIA API 密钥,免费额度信息以官方为准,缺失内容暂未提供;避免同一书籍的 .txt 与 .md 同时位于 LIBRARY_ROOT 造成重复索引;sqlite-vec 向量检索无法与任意 WHERE 组合,来源过滤需先过量取回再后置过滤;同一数据库不得并发运行多个 --rebuild;大 EPUB 的 add_book 可能需调高 MCP 超时;仅支持 markdown/纯文本内置分块,其他格式需自写分块器。