Token导航 LogoToken导航

MCP Server · 搜索检索

Vast Rag

一个基于ChromaDB和sentence-transformers的生产级本地语义搜索系统,通过MCP协议为AI工具提供技术文档的自然语言查询功能。

stdio官方级别未说明来源级核验工具 3
搜索PythonClaude文档检索Claude Desktop

快速开始

作者 / 组织
ssotoa70
提供方
ssotoa70
运行时
Python

工具数量

3

来源目录标注

资源数量

0

来源目录标注

提示词数量

0

来源目录标注

GitHub Star

1

仓库热度

收录来源

1 个

MCP World

选型结论

Vast Rag 属于搜索检索类 MCP Server,公开资料标注 3 个工具,通过stdio 本地进程接入,适配 Claude Desktop、Claude,有可以直接复制的安装命令;接入前先确认权限范围。

分类

搜索检索

传输方式

stdio

认证方式

无需认证

部署方式

公开资料未说明

安装与配置

安装命令

python -m vast_rag

客户端配置示例

{
  "mcpServers": {
    "vast-rag": {
      "command": "python",
      "args": [
        "-m",
        "vast_rag"
      ]
    }
  }
}

按公开安装命令拼出来的示例,字段名和参数以仓库 README 为准;带 YOUR_API_KEY 这类占位符的位置记得换成自己的值。

上手步骤

  1. 1

    准备运行环境

    stdio 服务在本地起进程,需要先装好 Python,再按安装命令拉取依赖。

  2. 2

    安装服务

    复制下面的安装命令执行;命令里带占位符的位置换成自己的密钥或路径。

  3. 3

    写入客户端配置

    在客户端的 MCP 配置里填启动命令和参数,保存后完全退出客户端再打开,让新配置生效。

  4. 4

    验证是否可用

    连接成功后客户端会列出 3 个工具,随便调一个只读工具确认能返回结果。

接入前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

详细介绍

本地RAG:VAST数据文档的语义搜索

技术栈:

一个生产就绪的MCP(模型上下文协议)服务器,使用ChromaDB和句子转换器在技术文档上提供快速的本地语义搜索。该系统使Claude和其他人工智能工具能够通过自然语言查询访问您的完整文档库,而无需任何外部API调用。

什么是本地RAG?

本地RAG联合 检索增强生成(RAG) 随着 模型上下文协议(MCP) 创建一个本地的、自包含的语义搜索系统。与传统的基于关键字的搜索不同,Local RAG理解您的查询和文档的语义含义,即使在确切的关键字不匹配的情况下也能找到相关信息。

为什么本地RAG很重要

  • 隐私:所有文件都保留在您的机器上。没有数据发送到外部服务。
  • 成本:没有对向量数据库或语言模型服务的API调用。
  • 速度:延迟以毫秒为单位,而不是秒。
  • 可靠性:脱机工作。不依赖云服务。
  • 控制:您可以选择要索引的文档以及如何组织它们。

什么是模型上下文协议(MCP)?

MCP是一种标准化协议,允许像Claude这样的人工智能助手安全地调用自定义工具并访问本地系统上的资源。VAST RAG实现了Claude可以用来搜索您的文档的MCP工具,使您的知识可以在对话中直接访问。

系统架构

graph TD
    subgraph "Document Ingestion Pipeline"
        A["📂 Source Documents
(~/projects/RAG/)"]
        B["👁 File Watcher
(watchdog)"]
        C["🔍 Parser Factory
(format detection)"]
        D["📄 Format Parsers
(PDF/MD/HTML/DOCX/text)"]
        E["✂️ Semantic Chunker
(500 tokens, 50 overlap)"]
        F["📊 Hash Index
(SHA-256 change detection)"]
    end

    subgraph "Indexing & Storage"
        G["🤖 Embedding Service
(BAAI/bge-base-en-v1.5)"]
        H["🗂️ ChromaDB Vector Store
(dual collections)"]
        I["📑 vast-data collection
(VAST product docs)"]
        J["📚 general-tech collection
(other technical docs)"]
    end

    subgraph "Query Pipeline"
        K["🎯 User Query"]
        L["🔀 Query Embedding
(same model)"]
        M["🔎 ChromaDB Similarity Search
(L2 distance → 0-1 score)"]
        N["📋 Result Aggregation
(with metadata)"]
    end

    subgraph "MCP Server & Client"
        O["🛠️ MCP Server
(stdio interface)"]
        P["💬 Claude Desktop
(or other MCP client)"]
    end

    subgraph "MCP Tools"
        Q["🔍 search_docs"]
        R["📋 list_collections"]
        S["📄 get_document"]
    end

    subgraph "Storage Locations"
        T["~/.claude/rag-data/
chroma/ (database)
logs/ (rotating)
model-cache/ (embeddings)"]
    end

    A -->|monitors| B
    B -->|detects changes| F
    F -->|new/changed files| C
    C -->|routes to parser| D
    D -->|parsed content| E
    E -->|text chunks| G
    G -->|768-dim vectors| H
    H -->|stores in| I
    H -->|stores in| J

    K -->|user query| O
    O -->|embedding| L
    L -->|vector search| M
    M -->|semantic results| N
    N -->|returns via| Q
    O -->|list call| R
    O -->|document call| S
    Q -->|MCP tool| P
    R -->|MCP tool| P
    S -->|MCP tool| P

    H -.->|persists to| T

    style A fill:#e1f5ff
    style H fill:#fff3e0
    style O fill:#f3e5f5
    style P fill:#e8f5e9

管道详细信息

索引流水线

每当在源目录中添加或修改文档时,索引管道都会自动发现、处理和索引文档。

1.文件监视器(看门狗)

该系统使用 watchdog 图书馆监控 ~/projects/RAG/ 用于文件系统事件。当添加或修改新文档时,观察者会立即触发解析管道。这启用了实时重新加载功能——文档在添加到目录后几秒钟内即可搜索。

文件观察器跟踪所有文件系统事件和支持的文档格式(PDF、Markdown、HTML、DOCX、纯文本和常见代码文件)的过滤器。

2.解析器工厂和特定格式解析器

当检测到文件时,解析器工厂会检查其扩展名和内容,以确定合适的解析器。本地RAG包括用于每种支持格式的专用解析器:

  • PDF解析器:使用PyPDF2提取文本,pdfplumber作为回退。保留页码以供引用。
  • MarkdownParser:从Markdown文件中提取部分和层次结构,保留结构元数据。
  • HTML解析器:使用BeautifulSoup解析HTML,剥离脚本和样式标签,并提取干净的文本。
  • DOCXParser:使用python-docx解析Microsoft Word文档。
  • 文本解析器:处理纯文本文件和常见代码格式(Python、JavaScript、Java等)。

每个解析器返回一个 ParsedDocument 包含全文内容和元数据(标题、源文件、修改日期)的对象。

3.语义块

原始文档可能非常大——单个PDF可能包含100多页。语义块器将文档划分为可管理的块,这些块针对语义搜索进行了优化。分块器使用以下策略:

  • 基于令牌的规模:使用tiktoken来计算实际令牌。每个块大约有500个标记(大约300-400个单词,取决于语言)。
  • 上下文重叠:每个块与前一个块重叠50个标记,确保语义边界不会在块之间分割相关概念。
  • 元数据保存:每个块保留其源文件、节信息和页码(如果可用)。

这种方法平衡了两种相互竞争的需求:块必须足够小,在语义上连贯一致,但足够大,包含足够的上下文。

4.哈希索引和Idempotent索引

为了避免在每次运行时重新嵌入整个文档集合,Local RAG维护了所有已处理文件的SHA-256哈希索引。在处理文档之前,系统会将当前文件的哈希值与存储的哈希值进行比较。如果它们匹配,则跳过该文件;如果它们不同,则重新解析并重新嵌入文件。

这使得索引幂等且高效——重新运行索引器仅处理更改的文件。

5.嵌入服务

嵌入服务使用BAAI/bge-base-en-v1.5模型将文本块转换为768维向量嵌入。该模型经过专门的语义搜索训练,在一般和技术内容方面表现良好。

关键设计选择:

  • 延迟加载:模型仅在首次需要时(在索引或第一次查询期间)下载和加载。这使得启动时间很快。
  • 批处理:默认情况下,嵌入以32个块为一批进行计算,以平衡内存使用和速度。
  • 自动缓存:下载的模型缓存在 ~/.claude/rag-data/model-cache/ 以避免在后续运行中重新下载。
6.双采集存储(ChromaDB)

嵌入物存储在ChromaDB矢量数据库中,采用精心设计的双集合:

  • 海量数据收集:包含与特定知识领域相关的所有文档。文档会根据文件路径自动分类——路径中包含“巨大”的任何文档都会放置在此集合中。
  • 一般技术收藏:包含所有其他技术文档(架构说明、设计文档、外部参考等)。

这种双重设计提供了以下好处:

  • 灵活的范围界定:用户可以搜索所有文档或将结果缩小到仅限于特定于域的内容。
  • 提高相关性:将相关文档放在一起可以减少搜索结果中的语义漂移。
  • 未来的可扩展性:该设计很容易容纳额外的专业系列。

查询管道

当用户向Claude提出一个可以从搜索您的文档中获益的问题时,Claude会调用 search_docs MCP工具。

1.查询嵌入

用户的查询使用与嵌入文档相同的BAAI/bge-base-en-v1.5模型嵌入。这确保了查询和文档存在于同一向量空间中,使直接距离比较变得有意义。

2.ChromaDB中的语义搜索

使用L2距离(欧几里德距离)将查询向量与所有文档块向量进行比较。ChromaDB高效地执行此搜索,返回前N个最相似的块。

ChromaDB返回原始距离值;这些使用以下公式转换为相似性得分: similarity = 1 / (1 + distance)这将\[0,∞)范围内的距离转换为(0,1\]范围内的相似性得分,其中1表示完全匹配,接近0的值表示相异。

3.结果汇总和排名

搜索结果按相似性得分的顺序返回(最高者优先)。每个结果包括:

  • 文本内容:提供答案或相关信息的实际文本块。
  • 源文件:引用的原始文档文件名。
  • 页码:PDF中的页面(如果可用),供快速参考。
  • 部分:提取的节标题(如果源文档具有层次结构)。
  • 相似度分数:计算出的0-1相似性度量(用于透明度和过滤)。
  • 类别:源文件是海量数据还是一般技术收集。

测井和可观测性

所有系统活动都记录到 ~/.claude/rag-data/logs/vast-rag.log日志文件使用轮换文件处理程序,每个文件最多保留10 MB,并保留5个备份文件。日志被写入stderr(不是stdout),因为MCP服务器通过stdio与Claude Desktop通信。

MCP工具

本地RAG MCP服务器公开了Claude和其他MCP客户端可以调用的三个核心工具:

search_docs

跨索引文档执行语义搜索。

参数:

  • query (字符串,必填):自然语言的搜索查询。示例:“如何优化VastDB查询?”,“什么是VAST数据引擎架构?”,《分布式系统中的内存管理》
  • category (字符串,可选):将结果筛选到特定集合。有效值: "vast-data", "general-tech",或对所有集合省略。
  • n_results (整数,可选):要返回的结果数。默认值:5。最大值:20。

退货: 搜索结果数组,每个结果包含:

{
  "text": "The chunk of text matching your query...",
  "source": "vdb-optimization.pdf",
  "score": 0.87,
  "category": "vast-data",
  "page": 42,
  "section": "Query Execution Planning"
}

示例用法(通过Claude):

"Search the VAST documentation for information about query optimization.
Use the search_docs tool with category='vast-data' to find relevant content."

list_collections

列出所有可用的集合及其文档计数。

参数: 无

退货: 包含集合元数据的对象:

{
  "collections": [
    { "name": "vast-data", "count": 1234 },
    { "name": "general-tech", "count": 456 }
  ],
  "total_chunks": 1690
}

目的: 帮助用户了解可用的文档以及已索引的内容数量。

get_document

检索特定索引文档的完整元数据和信息。

参数:

  • source_file (string,必填):文档的文件名或路径(由search_docs返回)。
  • category (string,必填):包含文档的集合("vast-data" 或 "general-tech").

退货: 文档元数据对象(第一个匹配块):

{
  "id": "vdb-architecture.pdf_chunk_0",
  "source": "vdb-architecture.pdf",
  "text": "First chunk of text from the document...",
  "metadata": {
    "source_file": "vdb-architecture.pdf",
    "category": "vast-data",
    "chunk_index": 0
  }
}

目的: 允许用户检查完整文档或验证特定源文件是否已编入索引。

项目结构

vast-rag/
├── README.md                          # This file
├── LICENSE                            # License information
├── pyproject.toml                     # Python project metadata and dependencies
├── pytest.ini                         # pytest configuration
│
├── src/vast_rag/
│   ├── __init__.py                    # Package initialization
│   ├── __main__.py                    # python -m vast_rag entry point
│   ├── server.py                      # Production MCP entry point (stdio)
│   ├── config.py                      # Pydantic configuration with env var support
│   ├── types.py                       # TypedDict and dataclass definitions
│   ├── indexer.py                     # DocumentIndexer orchestration layer
│   │
│   ├── core/
│   │   ├── __init__.py
│   │   ├── chunker.py                 # SemanticChunker (tiktoken, 500 tokens)
│   │   ├── embeddings.py              # EmbeddingService (bge-base-en-v1.5)
│   │   ├── hash_index.py              # FileHashIndex (SHA-256 change detection)
│   │   ├── vector_store.py            # ChromaDBManager (dual collections)
│   │   └── watcher.py                 # FileWatcher (watchdog-based)
│   │
│   ├── mcp/
│   │   ├── __init__.py
│   │   └── server.py                  # MCPServer wrapper class
│   │
│   └── parsers/
│       ├── __init__.py
│       ├── factory.py                 # ParserFactory (format detection)
│       ├── pdf.py                     # PDFParser (PyPDF2 + pdfplumber fallback)
│       ├── markdown.py                # MarkdownParser (section extraction)
│       ├── html.py                    # HTMLParser (BeautifulSoup)
│       ├── docx.py                    # DOCXParser (python-docx)
│       └── text.py                    # TextParser (plain text and code)
│
├── tests/
│   ├── unit/
│   │   ├── test_chunker.py            # SemanticChunker tests
│   │   ├── test_config.py             # Configuration tests
│   │   ├── test_embeddings.py         # EmbeddingService tests
│   │   ├── test_hash_index.py         # FileHashIndex tests
│   │   ├── test_vector_store.py       # ChromaDBManager tests
│   │   ├── test_parsers.py            # Parser factory and format tests
│   │   ├── test_mcp_server.py         # MCP server wrapper tests
│   │   └── test_server_entry.py       # Production server entry point tests
│   └── integration/
│       ├── test_indexer.py            # DocumentIndexer integration tests (17)
│       └── test_e2e_pipeline.py       # End-to-end pipeline tests (15)
│
├── deployment/
│   ├── README.md                      # Detailed deployment documentation
│   ├── common.sh                      # Shared utilities (logging, validation)
│   ├── setup.sh                       # Creates venv, downloads model, sets up dirs
│   ├── install.sh                     # Registers with Claude Desktop
│   ├── verify.sh                      # Runs 6 health checks
│   ├── uninstall.sh                   # Clean removal with interactive prompts
│   └── deploy.sh                      # Orchestrator script (setup → install → verify)
│
├── docs/
│   ├── plans/
│   │   ├── 2026-02-12-vast-rag-system-design.md     # High-level system design
│   │   └── 2026-02-12-vast-rag-implementation.md    # Implementation details
│   └── guides/
│       └── deployment-troubleshooting.md             # Common issues and solutions
│
└── .github/
    └── workflows/
        ├── test.yml                   # CI: Run pytest suite
        └── lint.yml                   # CI: Run ruff linting

核心模块说明

服务器.py --生产入口点。通过stdio启动MCP服务器,并延迟初始化:当文档索引在后台任务中运行时,MCP握手立即完成。包括针对macOS 26+xzone malloc在本机扩展(OpenMP、tokenizer)中崩溃的解决方法。

indexer.py --协调所有索引组件的编排层。DocumentIndexer类管理端到端管道:监视文件更改、解析文档、分块、嵌入和存储在ChromaDB中。

config.py --使用Pydantic进行配置管理。从具有合理默认值的环境变量中读取。处理所有路径、型号名称、批量大小等。

类型.py --共享数据结构。定义ParsedDocument(原始解析内容)、DocumentChunk(带元数据的语义块)、SearchResult(返回给用户的内容)和CollectionStats(关于集合的元数据)。

core/chunker.py --使用tiktoken实现语义分块,以实现准确的标记计数。尊重令牌限制和重叠设置。

核心/嵌入.py --管理嵌入模型生命周期(延迟加载、批处理、缓存)。提供嵌入查询和文档的方法。

core/hash_index.py --维护一个JSON文件,将文档路径映射到SHA-256哈希值。启用更改检测而无需重新解析。

core/vector_store.py --包装ChromaDB操作。管理双集合,处理存储/检索,并将L2距离转换为相似性分数。

core/watcher.py --使用监视器监视文件系统。检测新的/修改的文件并触发索引管道。

解析器/factory.py --基于文件扩展名将文档路由到正确解析器的工厂模式实现。

**解析器/\*.py** --特定格式的解析器。每个都负责将其格式转换为纯文本,同时保留有用的元数据。

配置

VAST RAG是通过环境变量和配置文件的组合进行配置的。所有设置都有合理的默认值,因此您可以立即开始。

环境变量

把这些放进你的壳里, .env 或者通过Claude Desktop的配置:

变量默认值用途
RAG_DOCS_PATH~/projects/RAG文档所在的源目录
RAG_DATA_PATH~/.claude/rag-dataChromaDB、日志和缓存模型的目录
RAG_CHUNK_SIZE500每个区块的目标令牌
RAG_CHUNK_OVERLAP50连续块之间的重叠标记
RAG_EMBEDDING_MODELBAAI/bge-base-en-v1.5用于嵌入的拥抱人脸模型
RAG_BATCH_SIZE32嵌入计算的批量大小
RAG_LOG_LEVELINFO日志记录级别(调试、信息、警告、错误)

目录结构

部署后,将创建以下目录:

~/.claude/rag-data/
├── chroma/                            # ChromaDB database directory
│   ├── vast-data/                     # vast-data collection
│   └── general-tech/                  # general-tech collection
├── logs/
│   └── vast-rag.log                   # Rotating log file (10MB, 5 backups)
├── model-cache/                       # Downloaded embedding models
│   └── models--BAAI--bge-base-en-v1.5/
└── hash-index.json                    # SHA-256 hashes of indexed documents

~/projects/RAG/
├── vast-data/                         # VAST product documentation
│   ├── vdb-user-guide.pdf
│   ├── vast-engine-api.md
│   └── ... (more VAST docs)
└── general-tech/                      # Other technical documentation
    ├── architecture-notes.md
    ├── external-references/
    └── ... (more general docs)

.env文件(可选)

对于本地开发,您可以创建 .env 庞大的rag目录中的文件:

RAG_DOCS_PATH=/path/to/my/documents
RAG_DATA_PATH=/path/to/my/rag-data
RAG_LOG_LEVEL=DEBUG

系统在本地运行时会自动加载此文件。

部署

快速开始

使用3个命令运行VAST RAG:

# 1. Clone and enter the repository
git clone https://github.com/ssotoa70/vast-rag.git
cd vast-rag

# 2. Run the deployment script
./deployment/deploy.sh

# 3. Restart Claude Desktop (⌘Q, then reopen)

部署脚本会自动处理:

  • 创建Python虚拟环境
  • 安装所有依赖项
  • 下载嵌入模型(~400MB)
  • 创建所需的数据目录
  • 在Claude Desktop注册服务器
  • 运行验证测试

在另一台机器上部署

要在其他macOS计算机上部署VAST RAG:

  1. 转移存储库:
   # On source machine
   tar -czf vast-rag.tar.gz vast-rag/

   # Copy to destination and extract
   tar -xzf vast-rag.tar.gz
   cd vast-rag
  1. 运行部署:
   ./deployment/deploy.sh
  1. 复制文档目录(可选):
   # On source machine
   tar -czf rag-docs.tar.gz ~/projects/RAG/

   # On destination machine
   mkdir -p ~/projects
   tar -xzf rag-docs.tar.gz -C ~/projects
  1. 重新启动克劳德桌面:

按Ctrl+C停止MCP服务器指示器,然后重新打开Claude Desktop。

部署脚本参考

deploy.sh --主要协调人。按顺序运行安装、安装和验证,并进行适当的错误处理。

setup.sh --创建Python 3.12虚拟环境,安装依赖项,下载嵌入模型,并创建所需的目录。

install.sh --通过将MCP服务器添加到配置文件中,向Claude Desktop注册MCP服务器。在修改之前创建原始配置的备份。

verify.sh --运行6次健康检查以确保系统正常运行:

  1. Python环境有效
  2. 已安装依赖项
  3. ChromaDB可访问
  4. 嵌入模型可下载/缓存
  5. MCP服务器启动时没有错误
  6. 搜索功能端到端工作

卸载.sh --通过交互式提示确认数据删除,从系统中彻底删除VAST RAG。

部署故障排除

问题:Python 3.13兼容性错误

  • 解决方案:由于Python 3.13与torch交互时的malloc问题,系统需要Python 3.12。部署脚本会自动使用正确的版本。

问题:抱抱脸模型下载失败

  • 解决方案:检查您的互联网连接。如果在代理后面,请确保 socksio 已安装: pip install socksio

问题:Claude Desktop看不到新工具

  • 解决方案:完全重新启动Claude Desktop(而不仅仅是关闭窗口)。使用Cmd+Q退出,然后重新打开。

问题:MCP服务器在初始化过程中超时(错误-32001)

  • 解决方案:这在v0.1.1中得到了修复——服务器现在将文档索引推迟到MCP握手完成后的后台任务。如果您看到此错误,请确保您拥有最新版本。

问题:退出时Python崩溃(macOS 26+上的EXC_BREAKPOINT)

  • 解决方案:这是一个已知的macOS 26 xzone malloc问题,涉及OpenMP/tokenizers原生代码。服务器包括自动解决方法(MallocNanoZone=0, os._exit()).崩溃仅在退出时发生,不影响功能。

问题:部署脚本上的“权限被拒绝”

  • 解决方案:使脚本可执行: chmod +x deployment/deploy.sh

有关更详细的故障排除,请参阅 部署故障排除指南.

发展

运行测试

该项目包括97个全面的测试,涵盖单元、集成和端到端场景。

# Activate virtual environment
source .venv/bin/activate

# Run all tests with coverage
pytest tests/ --cov=src/vast_rag --cov-report=html

# Run a specific test file
pytest tests/test_parsers.py -v

# Run tests matching a pattern
pytest tests/ -k "test_embedding" -v

# Run with verbose output and show print statements
pytest tests/ -vv -s

开发工作流程

  1. 对源代码进行更改 在 src/vast_rag/
  1. 运行测试以验证更改:
   pytest tests/
  1. 在本地测试MCP服务器:
   python -m vast_rag

这将在stdio模式下启动服务器。键入JSON-RPC消息以测试工具。

  1. 检查代码质量:
   ruff check src/ tests/
   ruff format src/ tests/
  1. 承诺并推动:
   git add .
   git commit -m "feat: add new feature"
   git push

关键设计模式

延迟初始化:嵌入模型仅在首次需要时加载。这使系统即使在大型文档集合中也能保持响应。

概念索引:使用SHA-256哈希,系统可以安全地重新运行索引管道——只有更改的文件才会被重新处理。

双重收藏:庞大的数据和一般技术收集提供了灵活的范围界定,同时将相关文件放在一起。

错误恢复:即使单个文档无法解析,文件监视也会继续。失败的文档会被记录,但不会停止管道。

已知问题和限制

Python 3.13不兼容:Python 3.13的嵌入库和torch存在内存分配问题。使用Python 3.12。部署脚本强制执行此要求。

macOS 26(Tahoe)退出崩溃:在macOS 26+上,xzone malloc分配器在进程退出期间检测OpenMP/tokenizers本机代码中的堆损坏(__kmp_internal_end_library → _xzm_xzone_malloc_freelist_outlined).服务器通过三种缓解措施处理此问题: MallocNanoZone=0 (传统分配器), OMP_NUM_THREADS=1 + TOKENIZERS_PARALLELISM=false (降低了本地并行性),以及 os._exit() 跳过C++atexit处理程序。这只是退出时的崩溃——它不会影响操作过程中的功能。

大型文档处理:大于1GB的文档在解析过程中可能会导致内存问题。将非常大的档案拆分为多个文件。

文件名中的特殊字符:文件名中包含某些Unicode字符的文档可能无法正确索引。文件名使用ASCII或通用Unicode字符。

ChromaDB持久性:系统将嵌入存储在ChromaDB中,并具有本地文件持久性。在机器之间迁移需要复制 ~/.claude/rag-data/chroma/ 目录。

需求

系统要求

  • macOS 15.2+ (在Sonoma、Sequoia和Tahoe/MaOS 26上测试)
  • Python 3.12.x (由于torch malloc问题,不支持3.13)
  • 克劳德桌面版 版本1.0+
  • 磁盘空间:嵌入模型约500MB+ChromaDB空间(通常为100-500MB,具体取决于文档数量)
  • 随机存取存储器:最小4GB;建议使用8GB+进行并发操作

Python依赖关系

核心依赖关系列在 pyproject.toml:

  • 向量数据库 >=0.5.0--矢量数据库和相似性搜索
  • 皮丹提克 >=2.0——配置管理和验证
  • 句子变换器 >=2.2.0--嵌入模型
  • 火炬 >=2.0——深度学习框架(句子转换所需)
  • PyPDF2 >=3.0--PDF解析(初级)
  • PDF 解析器 >=0.9.0——PDF解析(回退)
  • 美丽的Soup4 >=4.12.0——HTML解析
  • python docx >=0.8.11-DOCX解析
  • 令牌。 >=0.5.0--分块的令牌计数
  • 看门狗 >=3.0.0--文件系统监控
  • python dotenv >=1.0.0——加载环境变量
  • 媒染剂设置 >=2.0--从环境变量配置

发展依赖性

  • 测试 >=7.0——测试框架
  • 新冠肺炎 >=4.0——覆盖率报告
  • 颈毛 >=0.1.0——过梁和格式化
  • 黑色 >=23.0--代码格式化程序
  • 米皮 >=1.0--静态类型检查

所有依赖项都由部署脚本自动安装。对于本地开发,请运行:

source .venv/bin/activate
pip install -e ".[dev]"

VAST RAG如何融入您的工作流程

使用克劳德桌面

部署后,Claude可以自动搜索您的文档:

You: "What's the recommended query optimization strategy in VastDB?"

Claude: [Uses search_docs tool internally]
Found in vast-data/vdb-optimization.pdf (page 42):
"Query optimization in VastDB follows these principles..."

在代码和脚本中

如果您有其他需要文档搜索的工具或脚本,可以通过编程方式调用MCP服务器:

import subprocess
import json

# Start the MCP server
proc = subprocess.Popen(
    ["python", "-m", "vast_rag"],
    stdin=subprocess.PIPE,
    stdout=subprocess.PIPE,
    stderr=subprocess.PIPE,
    text=True
)

# Send a JSON-RPC request
request = {
    "jsonrpc": "2.0",
    "id": 1,
    "method": "tools/call",
    "params": {
        "name": "search_docs",
        "arguments": {"query": "VastDB query optimization"}
    }
}

response = proc.communicate(json.dumps(request))[0]
results = json.loads(response)

性能特征

2023年配备16GB RAM的MacBook Pro的典型性能:

操作时间备注
索引100个新的PDF文件45-60秒包括首次运行时嵌入模型的下载/缓存
无变化后重新索引\<5秒哈希比较非常快
搜索查询(前5个结果)100-300ms包括嵌入计算和ChromaDB搜索
索引1已修改文件2-5秒仅重新处理已更改的文件
模型下载(第一次)2-3分钟~400MB下载;之后缓存

贡献

这是一个私有存储库。对于错误报告、功能请求或贡献,请直接联系维护人员。

许可证

该项目是专有和机密的。有关详细信息,请参阅LICENSE文件。

进一步阅读

支持

有关问题或疑问,请查看故障排除指南或联系开发团队。

工具与能力

工具数量

3

资源数量

0

提示词数量

0

能力标签

语义搜索Python本地部署文档检索AI工具集成技术文档处理

支持客户端

Claude DesktopClaude

数量来自来源目录的标注,具体工具清单以官方文档为准。

典型使用场景

查资料带出处

把网页、论文和文档的检索结果连同链接一起带回对话。

站内知识检索

在自己的文档库里做语义搜索,比关键词更贴题。

事实核对

交叉多个来源确认一条信息,减少模型凭记忆作答。

选择建议

值得选的地方

  • 只提供 3 个工具,职责集中,接入后不容易误操作。
  • 有现成的安装命令,不用自己找入口,照着跑就能起服务。
  • 已经适配 Claude Desktop、Claude,换客户端不用重新研究配置。

先想清楚的地方

  • stdio 方式要求本地装好 Python,换机器要重新装一遍。
  • 第三方目录整理,版本更新和行为细节以官方仓库为准。

更适合

  • 需要在搜索检索场景里让模型直接调用外部能力的人。
  • 已经在用 Claude Desktop 的用户,接入路径最短。
  • 想先快速试一下、能接受在本地跑服务的人。

不太适合

  • 完全不想在本地装环境的人。
  • 需要厂商级 SLA 和技术支持的生产环境。

同类对比

5 个同类
MCP Server工具数传输方式安装命令收录来源最后核验
Vast Rag

MCP World · 本页

3stdio有1 个2026-05-17
Baidu Netdisk

MCP World

未标注未说明未标注1 个2026-05-17
Sequentialthinking

MCP.so

1SSE有2 个2026-05-17
Brave Search 433812ff

MCP World

2未说明未标注1 个2026-05-17
mindsdb (430e18)

MCP World

0未说明有1 个2026-05-17

按同分类和工具数量挑出最接近的几条,字段以各自详情页为准。

常见问题

5 条

Vast Rag 怎么安装?

公开资料给出的安装命令是 python -m vast_rag,运行环境为 Python。装完后按客户端要求写进 MCP 配置,重启客户端生效。

Vast Rag 怎么在 Claude Desktop、Cursor 里配置?

它是stdio 本地进程,客户端配置里要写启动命令和参数,运行环境是 Python;保存后完全退出客户端再打开,配置才会生效。

Vast Rag 收费吗?

本站只整理公开资料,不代收费用,也没有标注具体价格。是否收费取决于服务本身和背后的接口额度,正式使用前按官方说明确认。

Vast Rag 需要 API Key 吗?

公开资料标注为无需认证,装好就能连;如果实际调用时报鉴权错误,按官方文档补上凭据。

Vast Rag 支持哪些客户端?

公开资料标注支持 Claude Desktop、Claude;其他客户端只要能配置 MCP Server,也能用同样的命令或地址接入。

来源信息

继续浏览同类 MCP