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.
README
<div align="center">
ð§ OmniDocs-RAG-CN
åŒç®±å³çšç AI Agent 䞪人ç¥è¯åº â åçäžææ¯æ ðšð³
çŽ¢åŒæ¬å°æä»¶ãçœé¡µãGitHub ä»åºãnpm/PyPI å â æ··å AI æ£çŽ¢åŒæ â IDE è倩æ¡å çŽæ¥æçŽ¢ã100% æ¬å°è¿è¡ïŒäžæ¡åœä»€å®è£ ã
English | äžæ
</div>
çŒèµ·
æååªæ¯æ³æäžªäžªäººç¥è¯åºïŒäœåŸå¿«åç° 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/OmniDocs-RAG-CN.git
cd OmniDocs-RAG-CN
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 / ZIP â
npm://packagepypi://packagefile:///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://axios@1.6")
# 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
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.