Command Palette

Search for a command to run...

UnylyUnyly
Весь каталог

OmniDocs RAG CN

БесплатноНе проверен

Enables AI agents to index and search local files, websites, GitHub repos, and packages with hybrid AI-powered retrieval, all locally through IDE chat.

GitHubEmbed

Описание

Enables AI agents to index and search local files, websites, GitHub repos, and packages with hybrid AI-powered retrieval, all locally through IDE chat.

README

🧠 OmniDocs-RAG-CN

开箱即用的 AI Agent 个人知识库 — 原生中文支持 🇨🇳

索引本地文件、网页、GitHub 仓库、npm/PyPI 包 → 混合 AI 检索引擎 → IDE 聊天框内直接搜索。100% 本地运行,一条命令安装。

License Python MCP Chroma BGE-M3

English | 中文


缘起

最初只是想搭个个人知识库,但很快发现 Obsidian 对 Agent 并不友好——目录树、双向链接、全文搜索,这些为人设计的功能在 Agent 眼里只是一堆需要遍历的文件路径。Agent 要的不是"翻文件",而是"语义检索":用自然语言问一个问题,从知识库中召回最相关的片段,再基于这些片段生成回答。

于是自然想到了向量数据库。把个人文档向量化存起来,Agent 用向量相似度来"找东西",而不是翻文件夹。但翻遍 GitHub,没有一个现成的工具能直接做到这一点——要么缺 MCP 接口,要么对中文支持几乎为零(分句错、分词烂、BM25 失效)。

所以基于 OmniDocs-RAG v3.4 做了中文化适配和 MCP 接口封装,改出了 OmniDocs-RAG-CN。

最终的使用场景是这样的:

通过 IDE(Claude Code / Cursor)跟 Agent 对话,问一个问题;Agent 通过 MCP 协议调用 OmniDocs-RAG-CN 的 search_docs,在个人向量知识库中做混合检索(语义 + 关键词 + 重排序),拿到最相关的文档片段后组织回答。

人和 Agent 从两个"端口"访问同一个个人数据库:人看到的是 IDE 聊天窗口里的自然语言回答,Agent 看到的是 chroma_db 里经过向量化的知识片段。人的入口是对话,Agent 的入口是 MCP 工具调用——同一份知识,两种访问方式。

这就是"人与 Agent 协作"的知识管理:不是人翻了文件喂给 Agent,也不是 Agent 替代人去读文档;而是人决定"哪些知识值得存",Agent 负责"在需要的时候精准找到",人再做最终的判断和创造。知识库从一个人的第二大脑,变成了人和 Agent 共享的外部记忆。


人-Agent 协作架构

┌─────────────────────────────────────────────────────────┐
│                      人 👤                              │
│   IDE 聊天框                                            │
│   "帮我查一下认证逻辑怎么实现的?"                          │
│   → 看到自然语言回答,做决策、创作                          │
└──────────────────────┬──────────────────────────────────┘
                       │ 自然语言对话
                       ▼
┌─────────────────────────────────────────────────────────┐
│                    Agent 🤖                              │
│   Claude Code / Cursor 等                                │
│   → 理解问题 → 调 MCP 工具 → 综合回答                     │
└──────────────────────┬──────────────────────────────────┘
                       │ MCP 协议(search_docs)
                       ▼
┌─────────────────────────────────────────────────────────┐
│               OmniDocs-RAG-CN                            │
│   ┌───────────────────────────────────────────────┐     │
│   │  混合检索引擎                                    │     │
│   │  向量语义 + BM25 关键词(jieba) + RRF 融合        │     │
│   │  + Cross-Encoder 重排序 + 去重                   │     │
│   └───────────────────────────────────────────────┘     │
│                         │                                │
│                         ▼                                │
│   ┌───────────────────────────────────────────────┐     │
│   │  ChromaDB 向量数据库 (chroma_db/)               │     │
│   │  你的文档 → 向量化 → 语义可检索                   │     │
│   └───────────────────────────────────────────────┘     │
└─────────────────────────────────────────────────────────┘

两个端口,同一份知识。人从对话进去,Agent 从 MCP 进去。


🚀 快速开始

1. 环境要求

  • Python 3.10+
  • git

2. 一键安装

git clone https://github.com/ybhuang995-dev/personal-data-for-agents.git
cd personal-data-for-agents
python install.py

install.py 自动完成一切:pip 依赖安装 → GPU 检测 + PyTorch 安装 → AI 模型下载(~2.3GB,仅首次)→ IDE 的 MCP 连接自动配置。

3. 使用

直接在 IDE 聊天框里说人话:

帮我索引我的文档目录
搜索:认证逻辑怎么实现的?
把 https://fastapi.tiangolo.com 的文档也加进知识库
用 rag_status 看看知识库状态

Agent 自动调用 MCP 工具,不需要你点任何按钮。


✨ 功能特性

🔍 混合搜索管道

阶段 技术 说明
查询扩展 CN→EN 同义词映射 17 组中文→英文编程同义词,提升混合文档召回率
向量搜索 ChromaDB + bge-m3 1024 维语义向量,支持 100+ 语言
关键词搜索 BM25 + jieba 分词 中文用结巴分词,英文保持空格切分
融合排序 RRF (k=60) 向量排名 + 关键词排名数学融合
重排序 bge-reranker-v2-m3 交叉编码器对候选集精确打分
去重 >80% 相似度剔除 移除近重复结果

📁 多源摄入

  • 40+ 文件格式.md .py .js .pdf .docx .xlsx .pptx
  • 网页 — 异步 BFS 爬虫,支持 robots.txt、sitemap.xml
  • GitHub 仓库github://owner/repo 直接抓取
  • npm / PyPI / ZIPnpm://package pypi://package file:///path.zip
  • JS 渲染页面 — 可选 Playwright 支持

⚡ 性能

  • GPU 加速 — CUDA 自动检测(索引速度提升 ~11x)
  • 增量索引 — MD5 哈希,只处理变化的文件
  • BM25 持久化 — pickle 缓存,服务重启即恢复

🛠️ 管理

  • 多集合 — 不同项目用不同知识库
  • 自动分类 — YAML frontmatter → H1 标题 → 文件名
  • 文件监控 — watchdog 监听变动,自动增量索引
  • 100% 本地 — 无 API Key、无云服务、无月费

🛠️ MCP 工具(9 个)

工具 说明
index_documents(path, collection) 索引本地文件(40+ 格式,增量索引)
index_url(uri, collection, ...) 索引网页、GitHub、npm、PyPI、ZIP
search_docs(query, n, ...) 混合搜索(向量 + BM25 + 重排序)
rag_status(collection) 系统状态:模型、GPU、BM25、分块数
list_collections() 列出所有知识库集合
list_indexed_files(collection) 列出集合中已索引的文件
remove_source(filename, collection) 从索引中删除指定文件
delete_collection(name, confirm) 删除整个集合
reindex_collection(path, collection) 强制全量重建索引

index_url() 示例

# 网页(异步 BFS 爬虫)
index_url("https://docs.python.org/3/library/asyncio.html")

# GitHub 仓库
index_url("github://tiangolo/fastapi/docs")

# npm 包
index_url("npm://[email protected]")

# PyPI 包
index_url("pypi://fastapi")

# ZIP 压缩包
index_url("file:///path/to/docs.zip")

🇨🇳 中文适配(7 处改动)

优先级 文件 改动
P0 parsers.py 分句正则补中文标点(。!?;),空格改为可选
P0 parsers.py 语言感知分块:中文按 2000 字符、英文按 700 词
P0 store.py 网页重爬:按 source URL 清旧块再写入,防僵尸数据
P1 search_engine.py BM25:中文用 jieba 分词替换空格切分
P1 crawler.py 网页提取:新增 Mozilla Readability 为策略 1(语言无关)
P2 search_engine.py 查询扩展:17 组中文→英文同义词映射
P3 parsers.py 重叠量:中文取前块最后 150 字,英文保持 2 句

所有改动在代码中以 # [中文化] 注释标记。详见 CHANGES_CN.md


⚙️ 环境变量

变量 默认值 说明
RAG_DOCS_PATH server.py 父目录 扫描的文档目录
RAG_DB_PATH ./chroma_db ChromaDB 持久化路径
RAG_DEVICE auto cuda / cpu / auto(有 CUDA 健康检查)
RAG_EMBED_MODEL BAAI/bge-m3 嵌入模型
RAG_RERANK_MODEL BAAI/bge-reranker-v2-m3 交叉编码器重排序模型
RAG_DASHBOARD 不启用 设为 true 开启 Web 面板(端口 6280)
RAG_WATCH_PATH 不启用 文件变动自动重索引
GITHUB_TOKEN GitHub API 令牌(提升速率限制)

❓ 常见问题

Q: 数据会发送到外部吗? A: 不会。100% 本地运行。模型从 HuggingFace 下载一次后离线使用,无 API Key,无云服务。

Q: 需要 GPU 吗? A: 不必须,但有最好。CPU 搜索约 200ms,GPU 索引加速约 11x。设置 RAG_DEVICE=cuda 开启。

Q: 如何更新索引? A: 增量索引——只有变化的文件会重新处理。再调一次 index_documents() 即可,或开启文件监控自动更新。

Q: 首次搜索为什么慢? A: Cross-Encoder(~1.1GB)在首次搜索时惰性加载。后续搜索即时响应。

Q: 支持中文吗? A: 这就是做这个项目的原因。原生 jieba 分词、中文分句、中文分块、CN→EN 查询扩展。bge-m3 还支持 100+ 其他语言。

Q: 能建多个知识库吗? A: 可以。用 collection 参数区分:index_documents(path, collection="项目A"),搜索时指定 collection="项目A"


📄 许可证

基于 Apache License 2.0 开源。详见 LICENSE

原项目:ElvinBayramov/OmniDocs-RAG

from github.com/ybhuang995-dev/personal-data-for-agents

Установка OmniDocs RAG CN

У этого сервера нет опубликованного пакета — он собирается из исходников. Открой репозиторий и следуй инструкции в README.

▸ github.com/ybhuang995-dev/personal-data-for-agents

FAQ

OmniDocs RAG CN MCP бесплатный?

Да, OmniDocs RAG CN MCP бесплатный — установка в пару кликов через Unyly без оплаты.

Нужен ли API-ключ для OmniDocs RAG CN?

Нет, OmniDocs RAG CN работает без API-ключей и переменных окружения.

OmniDocs RAG CN — hosted или self-hosted?

Self-hosted: сервер запускается локально на твоей машине командой из раздела установки.

Как установить OmniDocs RAG CN в Claude Desktop, Claude Code или Cursor?

Открой OmniDocs RAG CN на unyly.org, выбери вкладку своего клиента (Claude Desktop, Claude Code, Cursor) и нажми Install — конфиг сгенерируется автоматически, без правки JSON.

Похожие MCP

Compare OmniDocs RAG CN with

Не уверен что выбрать?

Найди свой стек за 60 секунд

Автор?

Embed-бейдж для README

Похожее

Все в категории communication