关于 rag-vault
RAG Vault 是面向 AI 编码 Agent 的本地优先 RAG MCP 服务,用于搜索私有文档。它结合向量与关键词检索,支持常见文档格式,并提供网页界面和远程模式。
主要功能
- 01本地文档索引与嵌入
- 02向量与 BM25 混合搜索
- 03可选重排与查询扩展
- 04支持 PDF、DOCX、Markdown 等格式
- 05网页界面与 REST API
- 06支持 Stdio、HTTP/SSE 传输
适用场景
- 01搜索私有 API 规范和内部文档
- 02查找已索引文件中的精确错误码
- 03构建可搜索的研究论文集合
MCP 相关
向 MCP 客户端提供文档摄取、搜索、删除、列表、状态和反馈工具。支持 Stdio,以及远程 Streamable HTTP 和 SSE 连接。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
npx -y @robthepcguy/rag-vaultBASE_DIRBase directory for document storage (defaults to current working directory)DB_PATHPath to LanceDB database directory (defaults to ./lancedb/)CACHE_DIRDirectory where Transformers.js models are cached (defaults to ./models/)MODEL_NAMEEmbedding model name (defaults to Xenova/all-MiniLM-L6-v2)RAG_HYBRID_WEIGHTKeyword boost strength for hybrid search. 0.0 = semantic only, 1.0 = keyword only. Default 0.6RAG_GROUPINGGrouping mode: 'similar' (top group only) or 'related' (top 2 groups)本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。
工具
9收录的工具列表 · 更新于 2 周前
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| limit | number | 否 | |
| query | string | 是 | |
| explain | boolean | 否 |
详细介绍
RAG Vault
你的文档。你的设备。由你掌控。
RAG Vault 可以让 AI 编码助手搜索你的私人文档,例如 API 规范、研究论文和内部文档。一切都在本地运行,数据会留在你的设备上,除非你选择从远程 URL 拉取内容。
只需一条命令即可运行,设置简单,默认保护隐私。
为什么选择 RAG Vault?
| 痛点 | RAG Vault 解决方案 |
|---|---|
| “我不想把文档放在别人的服务器上” | 默认情况下,一切都留在本地。索引或搜索时不会在后台调用云服务。 |
| “语义搜索会漏掉精确的代码术语” | 使用 RRF 融合的混合搜索,并可选用交叉编码器重新排序 |
| “设置需要 Docker、Python、数据库……” | 只需一条 npx 命令和一小段 MCP 配置。 |
| “云 API 按查询次数收费” | 永久免费,无需订阅。 |
安全性
RAG Vault 内置了安全功能:
- API 身份验证:可通过
RAG_API_KEY设置 API 密钥 - 速率限制:可以限制请求频率
- CORS 控制:限制允许的来源
- 安全标头:由 Helmet.js 提供保护
完整文档请参阅 SECURITY.md。
首次设置检查清单
添加 MCP 配置之前:
- 安装 Node.js 20 或更高版本。
- 选择一个文档目录,并将
BASE_DIR设置为该路径。 - 确保 AI 工具进程可以读取
BASE_DIR。 - 编辑配置后,重启 AI 工具。
快速开始
对于 Cursor
添加到 ~/.cursor/mcp.json:
{
"mcpServers": {
"local-rag": {
"type": "stdio",
"command": "npx",
"args": ["-y", "github:RobThePCGuy/rag-vault"],
"env": {
"BASE_DIR": "/path/to/your/documents"
}
}
}
}
将 /path/to/your/documents 替换为实际的绝对路径。
对于 Claude Code
添加到项目目录中的 .mcp.json:
{
"mcpServers": {
"local-rag": {
"type": "stdio",
"command": "npx",
"args": ["-y", "github:RobThePCGuy/rag-vault"],
"env": {
"BASE_DIR": "./documents",
"DB_PATH": "./documents/.rag-db",
"CACHE_DIR": "./.cache",
"RAG_EMBEDDING_DEVICE": "cpu",
"RAG_HYBRID_WEIGHT": "0.6",
"RAG_GROUPING": "related"
}
}
}
}
或者通过 CLI 内联添加:
claude mcp add local-rag --scope user --env BASE_DIR=/path/to/your/documents -- npx -y github:RobThePCGuy/rag-vault
对于 Codex
添加到 ~/.codex/config.toml:
[mcp_servers.local-rag]
command = "npx"
args = ["-y", "github:RobThePCGuy/rag-vault"]
[mcp_servers.local-rag.env]
BASE_DIR = "/path/to/your/documents"
安装 Skills(可选)
如果你希望 AI 编写更好的查询并更准确地理解结果,请安装 RAG Vault skills:
# Claude Code (project-level - recommended for team projects)
npx github:RobThePCGuy/rag-vault skills install --claude-code
# Claude Code (user-level - available in all projects)
npx github:RobThePCGuy/rag-vault skills install --claude-code --global
# Codex (user-level)
npx github:RobThePCGuy/rag-vault skills install --codex
# Custom location
npx github:RobThePCGuy/rag-vault skills install --path /your/custom/path
Skills 会教 Claude 以下最佳实践:
- 查询构造和扩展策略
- 分数解读。在 boost 模式下,低于 0.3 表示匹配度较高,高于 0.5 则值得跳过。RRF 模式则根据排名评分。
- 何时使用
ingest_file,何时使用ingest_data - HTML 导入和 URL 处理
重启 AI 工具,然后开始对话:
You: "Ingest api-spec.pdf"
AI: Successfully ingested api-spec.pdf (47 chunks)
You: "How does authentication work?"
AI: Based on section 3.2, authentication uses OAuth 2.0 with JWT tokens...
就是这么简单。无需 Docker、无需 Python,也无需管理服务器基础设施。
Web 界面
RAG Vault 提供 Web UI,让你无需接触命令行即可管理文档。
启动 Web UI
npx github:RobThePCGuy/rag-vault web
在浏览器中打开 http://localhost:3000。
默认情况下,Web 服务器绑定到
127.0.0.1(环回地址),因此只有这台设备可以访问。要从网络上的其他设备使用它,请设置RAG_BIND_HOST=0.0.0.0,并同时设置RAG_API_KEY,因为 API 默认未经过身份验证。
可执行的操作
- 上传文档:拖放 PDF、DOCX、Markdown、TXT、JSON、JSONL 和 NDJSON 文件
- 即时搜索:输入查询并查看带有相关性分数的结果
- 预览内容:点击任意结果,即可查看上下文中的完整文本块
- 管理文件:查看所有已索引的文档,并删除不需要的文档
- 切换数据库:创建并切换多个知识库
- 监控状态:查看文档数量、内存用量和搜索模式
- 导出/导入设置:备份和恢复你的知识库配置
- 主题偏好:切换浅色、深色或系统主题
- 文件夹浏览器:浏览目录以选择文档
REST API
Web 服务器提供可直接调用的 REST API。设置 RAG_API_KEY 可要求进行身份验证:
# With authentication (when RAG_API_KEY is set)
curl -X POST "http://localhost:3000/api/v1/search" \
-H "Authorization: Bearer your-api-key" \
-H "Content-Type: application/json" \
-d '{"query": "authentication", "limit": 5}'
# Search documents (no auth needed if RAG_API_KEY isn't set)
curl -X POST "http://localhost:3000/api/v1/search" \
-H "Content-Type: application/json" \
-d '{"query": "authentication", "limit": 5}'
# List all files
curl "http://localhost:3000/api/v1/files"
# Upload a document
curl -X POST "http://localhost:3000/api/v1/files/upload" \
-F "[email protected]"
# Delete a file
curl -X DELETE "http://localhost:3000/api/v1/files" \
-H "Content-Type: application/json" \
-d '{"filePath": "/path/to/spec.pdf"}'
# Get system status
curl "http://localhost:3000/api/v1/status"
# Health check (for load balancers)
curl "http://localhost:3000/api/v1/health"
Reader API 端点
这些端点可用于读取文档并查找文档之间的关联:
# Get all chunks for a document (ordered by index)
curl "http://localhost:3000/api/v1/documents/chunks?filePath=/path/to/doc.pdf"
# Find related chunks for cross-document discovery
curl "http://localhost:3000/api/v1/chunks/related?filePath=/path/to/doc.pdf&chunkIndex=0&limit=5"
# Batch request for multiple chunks (efficient for UIs)
curl -X POST "http://localhost:3000/api/v1/chunks/batch-related" \
-H "Content-Type: application/json" \
-d '{"chunks": [{"filePath": "/path/to/doc.pdf", "chunkIndex": 0}], "limit": 3}'
远程模式
RAG Vault 也可以作为 HTTP 服务器运行,让 Claude.ai、Claude Desktop 等远程 MCP 客户端,或任何支持 Streamable HTTP 或 SSE 的客户端连接到它。
# Start remote server (default port 3001)
npx github:RobThePCGuy/rag-vault --remote
# Custom port
npx github:RobThePCGuy/rag-vault --remote --port 8080
Stdio 模式保持不变。只需省略 --remote,即可像之前一样使用 Cursor、Claude Code 和 Codex。
从 Claude Desktop 连接
在 Claude Desktop 配置中添加:
{
"mcpServers": {
"rag-vault-remote": {
"type": "url",
"url": "http://localhost:3001/mcp"
}
}
}
也可以通过 Claude Code CLI 添加:
claude mcp add --transport http rag-vault http://localhost:3001/mcp
从 Claude.ai 连接
对于 Claude.ai(Pro/Max/Team/Enterprise),将其添加为自定义连接器,URL 为 https://your-host:3001/mcp。如需本地开发,请使用隧道公开服务器:
cloudflared tunnel --url http://localhost:3001
远程服务默认也会绑定到 127.0.0.1(环回地址)。若要直接接受来自其他机器的连接,请设置 RAG_BIND_HOST=0.0.0.0。在将服务器公开到环回地址之外时(包括通过隧道公开),请设置 RAG_API_KEY 进行身份验证。服务器支持 Streamable HTTP(/mcp)和旧版 SSE(/sse)传输方式,并在 /health 提供健康检查。
实际示例
搜索代码库文档
You: "Ingest all the markdown files in /docs"
AI: Ingested 23 files (847 chunks total)
You: "What's the retry policy for failed API calls?"
AI: According to error-handling.md, failed requests retry 3 times
with exponential backoff: 1s, 2s, 4s...
为 Web 文档建立索引
You: "Fetch https://docs.example.com/api and ingest the HTML"
AI: Ingested "docs.example.com/api" (156 chunks)
You: "What rate limits apply to the /users endpoint?"
AI: The API limits /users to 100 requests per minute per API key...
构建个人知识库
You: "Ingest my research papers folder"
AI: Ingested 12 PDFs (2,341 chunks)
You: "What do recent studies say about transformer attention mechanisms?"
AI: Based on attention-mechanisms-2024.pdf, the key finding is...
搜索精确技术术语
RAG Vault 的混合搜索兼顾含义和精确匹配:
You: "Search for ERR_CONNECTION_REFUSED"
AI: Found 3 results mentioning ERR_CONNECTION_REFUSED:
1. troubleshooting.md - "When you see ERR_CONNECTION_REFUSED..."
2. network-errors.pdf - "Common causes include..."
纯语义搜索会漏掉这类内容,而 RAG Vault 可以找到它。
工作原理
Document → Parse → Chunk by meaning → Embed locally → Store in LanceDB
↓
Query → Embed → Vector search + BM25 → Fusion → Optional reranking → Results
智能分块:按含义而非字符数拆分,并保持代码块完整。
混合搜索:提供两种融合模式,将向量相似度与 BM25 关键词匹配结合起来:
- 增强模式(默认):BM25 以乘法方式增强向量搜索距离。简单且可预测。
- RRF 模式(通过
RAG_SEARCH_MODE=rrf启用):倒数排名融合 将向量搜索和 BM25 视为独立的投票者。这可以找出仅靠向量搜索会漏掉的文档。
交叉编码器重排(可选启用):首轮搜索后,交叉编码器模型(Xenova/ms-marco-MiniLM-L-6-v2,约 23MB)会对每个(查询、段落)组合进行评分,从而更精确地排序相关性。设置 RAG_RERANKER_ENABLED=true 即可启用。
查询扩展(可选启用):当搜索内容采用释义或概念化表达时,生成改写后的查询以提高召回率。提供两种后端:基于本地模板的扩展(默认,完全离线),或通过外部 API 使用基于大模型的 HyDE。设置 RAG_HYDE_ENABLED=true 即可启用。
质量过滤:根据相关性差距对结果分组,而非采用随意设定的前 K 个结果截断方式。
默认本地运行:通过 Transformers.js 生成嵌入,使用 LanceDB 存储。只有在首次下载模型或明确摄取远程 URL 时才需要联网。
内置 MCP 工具:query_documents、ingest_file、ingest_data、delete_file、list_files、status、feedback_pin、feedback_dismiss 和 feedback_stats。
支持的格式
| 格式 | 扩展名 | 说明 |
|---|---|---|
.pdf | 提取完整文本,并过滤页眉和页脚 | |
| Word | .docx | 保留表格、列表和格式 |
| Markdown | .md | 保持代码块完整 |
| 文本 | .txt | 纯文本 |
| JSON | .json | 转换为可搜索的键值文本 |
| JSONL / NDJSON | .jsonl、.ndjson | 逐行解析日志和结构化记录 |
| HTML | 通过 ingest_data | 使用 Readability 自动清理 |
配置
环境变量
| 变量 | 默认值 | 作用 |
|---|---|---|
BASE_DIR | 当前目录 | 只能访问此路径下的文件 |
DB_PATH | ./lancedb/ | 向量的存储位置 |
CACHE_DIR | ./models/ | 模型缓存目录 |
MODEL_NAME | Xenova/all-MiniLM-L6-v2 | HuggingFace 嵌入模型 |
MAX_FILE_SIZE | 104857600(100 MB) | 可摄取的最大文件 |
RAG_EMBEDDING_DEVICE | auto | 运行嵌入的设备:auto、cpu、cuda、dml、webgpu、wasm、gpu、webnn |
WEB_PORT | 3000 | Web 界面的端口 |
UPLOAD_DIR | ./uploads/ | Web UI 文件上传的临时目录 |
Windows 用户:
RAG_EMBEDDING_DEVICE=auto会尝试使用 GPU 提供程序(DirectML),如果没有可用的 ONNX Runtime GPU 二进制文件,可能会失败。如果看到嵌入初始化错误,请在 MCP 配置中设置RAG_EMBEDDING_DEVICE=cpu,以确保可靠运行。详情请参阅 GPU 加速常见问题。
单命令覆盖(无需编辑 .env):
# MCP mode
npx github:RobThePCGuy/rag-vault --embedding-device cpu
# Web mode
npx github:RobThePCGuy/rag-vault web --embedding-device dml
# Explicitly force auto detection
npx github:RobThePCGuy/rag-vault --gpu-auto
搜索调优
| 变量 | 默认值 | 作用 |
|---|---|---|
RAG_SEARCH_MODE | boost | 融合模式:boost(乘法关键词加权)或 rrf(倒数排名融合) |
RAG_HYBRID_WEIGHT | 0.6 | 向量与 BM25 之间的权重。0 = 仅向量,1.0 = 仅 BM25 |
RAG_RRF_K | 60 | RRF 平滑常数(仅适用于 rrf 模式)。行业标准值为 60。 |
RAG_GROUPING | 未设置 | 质量筛选:similar = 仅保留排名最高的分组,related = 保留排名前 2 的分组 |
RAG_MAX_DISTANCE | 未设置 | 丢弃相关性低于此阈值的结果(与 boost 模式搭配使用;rrf 分数基于排名) |
RAG_GROUPING_STD_MULTIPLIER | 1.5 | 组间达到多少个标准差才算相关性差距 |
RAG_HYBRID_CANDIDATE_MULTIPLIER | 2 | 关键词重排前额外获取的向量候选项数量 |
RAG_FTS_MAX_FAILURES | 3 | 临时禁用 FTS 前允许的全文搜索失败次数 |
RAG_FTS_COOLDOWN_MS | 300000(5 分钟) | 达到失败上限后,重试 FTS 前的等待时间 |
Cross-Encoder 重排(可选启用)
| 变量 | 默认值 | 作用 |
|---|---|---|
RAG_RERANKER_ENABLED | false | 启用 cross-encoder 重排以改善结果 |
RAG_RERANKER_MODEL | Xenova/ms-marco-MiniLM-L-6-v2 | HuggingFace cross-encoder 模型(约 23MB ONNX,首次使用时下载) |
RAG_RERANKER_CANDIDATE_MULTIPLIER | 2 | 为重排器评分额外获取的候选项数量 |
RAG_RERANKER_DEVICE | auto | 重排器使用的设备(选项与 RAG_EMBEDDING_DEVICE 相同) |
RERANKER_INIT_TIMEOUT_MS | 600000(10 分钟) | 模型下载和初始化的超时时间 |
查询扩展 / HyDE(可选启用)
| 变量 | 默认值 | 作用 |
|---|---|---|
RAG_HYDE_ENABLED | false | 启用查询扩展以提高召回率 |
RAG_HYDE_BACKEND | rule-based | rule-based 用于本地模板扩展,api 用于基于 LLM 的 HyDE |
RAG_HYDE_EXPANSIONS | 2 | 要生成的扩展查询数量 |
RAG_HYDE_API_KEY | 未设置 | LLM 后端的 API 密钥(RAG_HYDE_BACKEND=api 时必需) |
RAG_HYDE_API_BASE_URL | https://api.anthropic.com | LLM 后端的 API 端点 |
RAG_HYDE_API_MODEL | claude-haiku-4-5-20251001 | 用于基于 LLM 的扩展的模型 |
隐私提示:
api后端会将查询文本发送到外部 LLM 端点,因此无法保证“零云端”运行。默认的rule-based后端完全在本地运行。
安全(可选)
| 变量 | 默认值 | 说明 |
|---|---|---|
RAG_API_KEY | unset | 用于身份验证的 API 密钥 |
RAG_BIND_HOST | 127.0.0.1 | Web/远程服务绑定的接口。默认仅限环回地址;设置为 0.0.0.0 可在网络上公开(仅在已设置 RAG_API_KEY 时这样做)。RAG_HOST 是其别名。 |
CORS_ORIGINS | localhost | 允许的源(以逗号分隔,或设为 *) |
RATE_LIMIT_WINDOW_MS | 60000 | 速率限制时间窗口(毫秒) |
RATE_LIMIT_MAX_REQUESTS | 100 | 每个窗口内的最大请求数 |
高级设置
| 变量 | 默认值 | 说明 |
|---|---|---|
ALLOWED_SCAN_ROOTS | Home directory | 允许扫描数据库的目录 |
JSON_BODY_LIMIT | 5mb | 请求正文大小上限 |
REQUEST_TIMEOUT_MS | 30000 | API 请求超时时间 |
REQUEST_LOGGING | false | 启用请求审计日志 |
复制
.env.example获取完整的配置模板。
对于代码内容较多的内容,请尝试:
"env": {
"RAG_HYBRID_WEIGHT": "0.8",
"RAG_GROUPING": "similar"
}
常见问题
我的数据真的安全吗?
对于本地文件,是的。嵌入模型下载完成后(约 90MB),索引和搜索都会在你的计算机上运行。只有在选择远程 URL 导入或需要下载模型时,RAG Vault 才会访问网络。
它能离线使用吗?
可以,首次运行后即可离线使用。模型会缓存在本地。
GPU 加速呢?
默认情况下,RAG Vault 会自动选择设备(RAG_EMBEDDING_DEVICE=auto)。正确配置 GPU 提供程序后,可以加快嵌入生成速度。
重要提示: 在 Windows 上,auto 会尝试使用 DirectML(dml),这需要 ONNX Runtime GPU 二进制文件。如果未安装这些二进制文件,或者 GPU 配置不完整,服务将无法启动,也不会平稳回退到 CPU。在没有 CUDA 二进制文件的 Linux 上也是如此。
建议: 如果遇到嵌入初始化错误,请在 MCP 配置中设置 RAG_EMBEDDING_DEVICE=cpu。CPU 模式在所有平台上都可靠,而且对于大多数工作负载而言速度足够快(默认模型仅约 90MB)。
"env": {
"RAG_EMBEDDING_DEVICE": "cpu"
}
支持的设备值:auto、cpu、cuda、dml、gpu、wasm、webgpu、webnn、webnn-npu、webnn-gpu、webnn-cpu。也接受别名 directml,并将其映射为 dml。
我可以更换嵌入模型吗?
可以。将 MODEL_NAME 设置为任何兼容的 HuggingFace 模型。你需要删除 DB_PATH 并重新导入数据,因为不同模型生成的向量彼此不兼容。
推荐升级: 如需更高质量和多语言支持,请使用 EmbeddingGemma:
"MODEL_NAME": "onnx-community/embeddinggemma-300m-ONNX"
如果你需要多语言支持或更高质量的检索,这是一个不错的选择。
其他专用模型:
- 科学:
sentence-transformers/allenai-specter - 代码:
jinaai/jina-embeddings-v2-base-code
如何备份数据?
复制 DB_PATH 目录(默认值:./lancedb/)。
| 问题 | 解决方案 |
|---|---|
| 未找到结果 | 需要先摄取文档。运行“列出所有已摄取的文件”进行检查。 |
| 模型下载失败 | 请检查网络连接。该模型在 HuggingFace 上约为 90MB。 |
| 嵌入初始化失败 | 在 MCP 配置中设置 RAG_EMBEDDING_DEVICE=cpu。在没有 GPU 二进制文件的 Windows 上,默认的 auto 可能会失败。 |
Protobuf parsing failed | 模型缓存已损坏。删除 CACHE_DIR(默认值:./models/)并重启。RAG Vault 还会自动使用隔离的恢复缓存重试。 |
| 文件过大 | 默认限制为 100MB。提高 MAX_FILE_SIZE,或拆分文件。 |
| 路径位于 BASE_DIR 之外 | 所有文件路径都必须位于 BASE_DIR 下。请使用绝对路径。 |
| 未显示 MCP 工具 | 检查配置语法,并完全重启 AI 工具(Mac 上按 Cmd+Q)。 |
mcp-publisher login github 因 slow_down 失败 | 改用令牌登录:mcp-publisher login github --token "$(gh auth token)"(或传入 PAT)。 |
| 401 未授权 | 需要 API 密钥。设置 RAG_API_KEY,或使用正确的请求头格式。 |
| 429 请求过多 | 请求受到速率限制。等待限制重置,或提高 RATE_LIMIT_MAX_REQUESTS。 |
| CORS 错误 | 将你的来源添加到 CORS_ORIGINS 环境变量中。 |
开发
git clone https://github.com/RobThePCGuy/rag-vault.git
cd rag-vault
pnpm install
pnpm -C web-ui install
# Install local git hooks (recommended, even for solo dev)
pnpm hooks:install
# Fast local quality gate (backend + web-ui type/lint/format, deps, unused, build, unit tests)
pnpm check:all
# Unit tests only (no model download required)
pnpm test:unit
# Integration/E2E tests (requires model download/network)
pnpm test:integration
# Build
pnpm build
# Run MCP server locally (stdio)
pnpm dev
# Run MCP server locally (remote HTTP + SSE)
pnpm dev:remote
# Run web server locally
pnpm web:dev
# Release to npm (local, guarded)
pnpm release # patch
pnpm release:minor
pnpm release:major
pnpm release:dry
测试层级
pnpm test:unit:用于本地/CI 质量检查的确定性测试。不包含模型下载集成路径。pnpm test:integration:完整的集成和 E2E 工作流,包括嵌入模型初始化。
使用 RUN_EMBEDDING_INTEGRATION=1,明确启用依赖网络/模型的测试套件。
发布策略
- 发布在本地进行,并通过
scripts/release-npm.sh脚本执行。 - 支持的版本升级类型:
patch、minor、major。 - 脚本会先运行依赖安装、
pnpm check:all和pnpm ui:build,然后再修改版本文件。 - 只有在检查通过后,才会更新
package.json和server.json中的版本;如果后续任何步骤失败,这些文件会自动还原。 pnpm release:dry会运行完整的发布检查,并执行 npm dry-run 发布,且始终还原版本文件。
项目结构
src/
├── bin/ # CLI subcommands (skills install)
├── chunker/ # Semantic text splitting
├── embedder/ # Transformers.js wrapper
├── errors/ # Error handling utilities
├── explainability/ # Keyword-based result explanations
├── flywheel/ # Feedback loop (pin/dismiss reranking)
├── hyde/ # Query expansion + HyDE (LLM-based)
├── parser/ # PDF, DOCX, HTML parsing
├── query/ # Advanced query syntax parser
├── reranker/ # Cross-encoder reranking (Transformers.js)
├── server/ # MCP tool handlers + remote transport
├── utils/ # Config, file helpers, process handlers
├── vectordb/ # LanceDB + hybrid search (boost + RRF)
└── web/ # Express server + REST API
web-ui/ # React frontend (Vite + Tailwind)
文档
- SECURITY.md:安全配置和最佳实践
- .env.example:完整的环境变量模板
许可证
MIT:可免费用于个人和商业用途。
致谢
使用 Model Context Protocol、LanceDB 和 Transformers.js 构建。
最初是 Shinsuke Kagawa 的 mcp-local-rag 分支。现在它已经发展成独立项目。 非常感谢上游贡献者奠定基础,我在此基础上进行了大量迭代。 始终坚持本地优先的开发工具。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。