语义文档搜索服务

ickyMCP是一个基于RAG的语义文档搜索服务器,支持多种文档格式的语义搜索和索引管理。

  • by dl1683
  • Python
  • 本地部署
  • 4 星标
  • 更新于
在 GitHub 查看 dl1683/ickyMCP

使用说明

麦基姆CP

用于语义文档搜索的RAG MCP服务器。它将本地文档集合索引到SQLite中 sqlite-vec,然后公开MCP工具,用于索引、搜索、刷新、列出和删除索引文档。

特性

  • 对PDF、Word、PowerPoint、Excel、Markdown和文本文件进行语义搜索
  • 使用可选的传统单数据库模式进行每用户数据库隔离
  • 用于聊天或内容范围检索的文档ID过滤器
  • 基于文件大小和修改时间的增量索引
  • 默认情况下,Voyage AI嵌入,具有离线本地句子转换器后端
  • 忽略本地数据库工件的可移植SQLite存储

设置

python -m venv .venv
.\.venv\Scripts\activate
pip install -r requirements.txt

根据示例创建本地环境设置:

copy .env.example .env

集 ICKY_VOYAGE_API_KEY 使用默认Voyage后端时。对于离线使用,设置 ICKY_EMBEDDING_PROVIDER=local.

配置

变量 默认值 描述
ICKY_EMBEDDING_PROVIDER voyage voyage 或 local
ICKY_VOYAGE_API_KEY unset 使用Voyage嵌入时需要
ICKY_VOYAGE_MODEL voyage-3.5-lite 航次嵌入模型
ICKY_VOYAGE_DIMENSIONS 1024 航行输出维度
ICKY_VOYAGE_WORKERS 8 保留用于并行Voyage工作流
ICKY_LOCAL_MODEL nomic-ai/nomic-embed-text-v1.5 局部句子转换模型
ICKY_CHUNK_SIZE 5000 每个区块的近似令牌
ICKY_CHUNK_OVERLAP 500 块之间的近似令牌重叠
ICKY_DATA_DIR ./data 每个用户数据库的基本目录
ICKY_DB_PATH 特定于提供程序的 传统单一数据库路径

Claude MCP配置

{
  "mcpServers": {
    "ickyMCP": {
      "command": "python",
      "args": ["C:\\Users\\devan\\OneDrive\\Desktop\\Projects\\ickyMCP\\run.py"],
      "env": {
        "ICKY_EMBEDDING_PROVIDER": "voyage",
        "ICKY_VOYAGE_API_KEY": "YOUR_VOYAGE_API_KEY",
        "ICKY_CHUNK_SIZE": "5000",
        "ICKY_CHUNK_OVERLAP": "500"
      }
    }
  }
}

工具

  • index:为文件或目录建立索引;接受 user_id, patterns, exclude,以及 force
  • search:索引块的语义查询;接受 document_ids, path_filter,以及 file_types
  • similar:查找与提供的文本相似的块
  • refresh:重新索引已更改的文件并从索引中删除已删除的文件
  • list:列出索引文档及其ID
  • delete:按路径、文档ID或所有文档删除
  • status:返回数据库、嵌入和分块状态

验证

python -m compileall -q src run.py fast_index.py
python -c "from src.config import EMBEDDING_PROVIDER; print(EMBEDDING_PROVIDER)"

根 test_*.py 文件是集成脚本,需要以下本地文档 docs/ 以及,对于默认后端,配置的Voyage API密钥。

数据卫生

git会忽略生成的数据库和本地文档文件夹: *.db, *.db.bak, *.sqlite, *.sqlite3, data/,以及 docs/.在环境变量或 .env,不在跟踪文件中。

许可证

麻省理工学院