OmniDocs-RAG-CN
README.md
<div align="center">
# ð§ OmniDocs-RAG-CN
**åŒç®±å³çšç AI Agent 䞪人ç¥è¯åº â åçäžææ¯æ ðšð³**
*çŽ¢åŒæ¬å°æä»¶ãçœé¡µãGitHub ä»åºãnpm/PyPI å
â æ··å AI æ£çŽ¢åŒæ â IDE è倩æ¡å
çŽæ¥æçŽ¢ã100% æ¬å°è¿è¡ïŒäžæ¡åœä»€å®è£
ã*
[](LICENSE)
[](https://www.python.org/)
[](https://modelcontextprotocol.io/)
[](https://trychroma.com/)
[](https://huggingface.co/BAAI/bge-m3)
[English](README_EN.md) | äžæ
</div>
---
## çŒèµ·
æååªæ¯æ³æäžªäžªäººç¥è¯åºïŒäœåŸå¿«åç° Obsidian 对 Agent å¹¶äžå奜ââç®åœæ ãååéŸæ¥ãå
šææçŽ¢ïŒè¿äºäžºäººè®Ÿè®¡çåèœåš Agent çŒéåªæ¯äžå éèŠéåçæä»¶è·¯åŸãAgent èŠçäžæ¯"ç¿»æä»¶"ïŒèæ¯"è¯ä¹æ£çŽ¢"ïŒçšèªç¶è¯èšé®äžäžªé®é¢ïŒä»ç¥è¯åºäžå¬åæçžå
³ççæ®µïŒååºäºè¿äºç段çæåçã
äºæ¯èªç¶æ³å°äºåéæ°æ®åºãæäžªäººææ¡£åéååèµ·æ¥ïŒAgent çšåéçžäŒŒåºŠæ¥"æŸäžè¥¿"ïŒèäžæ¯ç¿»æä»¶å€¹ãäœç¿»é GitHubïŒæ²¡æäžäžªç°æçå·¥å
·èœçŽæ¥åå°è¿äžç¹ââèŠä¹çŒº MCP æ¥å£ïŒèŠä¹å¯¹äžææ¯æå ä¹äžºé¶ïŒåå¥éãåè¯çãBM25 倱æïŒã
æä»¥åºäº [OmniDocs-RAG v3.4](https://github.com/ElvinBayramov/OmniDocs-RAG) åäºäžæåéé
å 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. äžé®å®è£
```bash
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 / ZIP** â `npm://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()` 瀺äŸ
```python
# çœé¡µïŒåŒæ¥ 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](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](LICENSE)ã
å项ç®ïŒ[ElvinBayramov/OmniDocs-RAG](https://github.com/ElvinBayramov/OmniDocs-RAG)
This server cannot be deployed
Maintenance
ActivityMaintained
ResponsivenessSyncing