Update .gitignore
A/B/C 三段式架构 | C++ 高性能引擎 | Python 服务端 | Streamlit 前端 | 完整文档工作流
这是本项目最有竞争力的部分。并非”理论设计”或”预期目标”,而是当前本地运行态实测数据(基准脚本:scripts/benchmark_readme_metrics.py):
scripts/benchmark_readme_metrics.py
用户输入查询词 │ ▼ Streamlit 前端 ──HTTP──▶ FastAPI 兼容层 ──▶ tools_core.search_docs() │ │ │ ┌──────▼──────┐ │ │ 向量召回 │ (1.41ms 内核) │ │ 词面重排 │ │ │ 阈值过滤 │ │ │ 同源去重 │ │ └──────┬──────┘ │ │ ◀──────────── JSON 结果 ◀────────────────────┘ │ ▼ 标题 / 得分 / 摘要 / 来源路径 + 展开 / 总结 / 导出 / 记忆 (HTTP 端到端 2.56ms)
答辩时可表述为:
架构预留:当前演示使用 numpy-fallback 模式。RetrieverManager 已预留 fast_retriever.pyd(C++ Faiss 引擎)接入位,切回后可在不改前端接口的前提下继续放大检索速度。
numpy-fallback
RetrieverManager
fast_retriever.pyd
本项目不止于检索——围绕文档的完整生命周期,在前后端都做了闭环:
POST /mcp/v1/tools/call
POST /docs
POST /docs/delete
GET /docs/content?source=...
_highlight_text()
<mark>
GET /docs/summary?source=...
st.download_button
POST /memory/docs
GET /memory/docs
GET /health
前端三栏布局:
┌─────────────────────────────────────────────────────────┐ │ C 端 · Streamlit 前端 │ │ frontend/app.py │ 自定义 CSS 视觉系统 │ │ 检索结果 / 文档库 / 记忆文档 三 Tab 布局 │ └──────────────────────┬──────────────────────────────────┘ │ HTTP (requests) ┌──────────────────────▼──────────────────────────────────┐ │ B 端 · Python FastAPI 服务端 │ │ compat_http_server.py (兼容 HTTP 接口) │ │ mcp_server.py (FastMCP 接口) │ │ ┌───────────────────────────────────────────────────┐ │ │ │ tools_core.py (业务核心) │ │ │ │ search_docs · add_document · delete_document │ │ │ │ get_document · summarize_document │ │ │ │ remember_document · list_memory_documents │ │ │ │ list_files · analyze_topic · get_index_status │ │ │ └──────┬────────────────────────────────┬───────────┘ │ │ │ │ │ │ ┌──────▼──────────┐ ┌────────────────▼────────────┐ │ │ │ retriever_mgr │ │ embedding.py │ │ │ │ (检索器管理) │ │ sentence-transformers / hash │ │ │ │ NumPy fallback │ │ 384维文本向量化 │ │ │ │ + .pyd 预留位 │ └─────────────────────────────┘ │ │ └─────────────────┘ │ │ ┌──────────────────────────────────────────────────┐ │ │ │ data_loader.py · 文档加载/分块/PDF解析 │ │ │ │ error_handler.py · 统一异常 → JSON 错误响应 │ │ │ └──────────────────────────────────────────────────┘ │ └──────────────────────┬──────────────────────────────────┘ │ pybind11 (预留) ┌──────────────────────▼──────────────────────────────────┐ │ A 端 · C++ Faiss 高性能引擎 │ │ RapidRetrieverProject/ │ │ RapidRetriever.h/.cpp · bindings.cpp │ │ IndexFlatIP · save/load · fast_retriever.pyd │ └─────────────────────────────────────────────────────────┘
Project_CCP/ ├── frontend/ # C 端 —— Streamlit 前端 │ ├── app.py # 主入口(1400+ 行完整交互系统) │ └── requirements.txt │ ├── mcp_server_B_implementation/ │ └── mcp_server_B_implementation/ # B 端 —— Python 服务端 │ ├── compat_http_server.py # FastAPI 兼容 HTTP 服务(主入口) │ ├── mcp_server.py # FastMCP 服务(备选入口) │ ├── tools_core.py # ★ 核心业务逻辑(10+ 工具函数) │ ├── retriever_manager.py # 检索器管理器(双后端模式) │ ├── data_loader.py # 文档加载 / 分块 / PDF解析 │ ├── embedding.py # 文本向量化(sentence / hash) │ ├── error_handler.py # 统一异常处理装饰器 │ ├── requirements.txt │ ├── start_compat.bat # Windows 一键启动脚本 │ ├── start_fastmcp.bat │ ├── sample_data/docs/ # 多语言语料库(中英法西日) │ ├── tests/ # 测试用例 │ ├── .docsearch_cache/ # 磁盘缓存(重启秒开) │ └── .doc_memory.json # 记忆文档持久化存储 │ ├── RapidRetrieverProject/ # A 端 —— C++ Faiss 检索工程 │ ├── CMakeLists.txt │ ├── include/ │ │ ├── RapidRetriever.h │ │ ├── faiss/ # Faiss 头文件 │ │ └── pybind11/ # pybind11 头文件 │ ├── src/ │ │ ├── RapidRetriever.cpp # 检索核心实现 │ │ ├── bindings.cpp # pybind11 Python 绑定 │ │ ├── buildIndex_detail.cpp # 构建索引详细注解 │ │ └── search_detail.cpp # 搜索流程详细注解 │ ├── tests/ │ │ ├── test_native.cpp # C++ 原生测试 │ │ └── test_python.py # Python 端测试 │ └── README.md │ ├── scripts/ │ └── benchmark_readme_metrics.py # 性能基准测试脚本 │ ├── archive_snapshots/ # 前端阶段性存档 │ └── frontend_archive_20260709_023021.zip │ ├── fast_retriever.pyd # A 端编译产物(Python 直接 import) └── README.md # 本文档
.docsearch_cache/
pip install fastapi uvicorn pydantic numpy pypdf pandas
cd mcp_server_B_implementation/mcp_server_B_implementation export DOCSEARCH_EMBED_BACKEND=hash python compat_http_server.py --host 127.0.0.1 --port 8001
Windows 可直接双击 start_compat.bat。
start_compat.bat
cd ../.. streamlit run frontend/app.py
curl http://127.0.0.1:8001/health
/mcp/v1/tools/call
{ "name": "search_docs", "arguments": { "query": "什么是 MCP 协议", "top_k": 5 } }
返回:rank · doc_id · title · score · raw_score · snippet · source
rank
doc_id
title
score
raw_score
snippet
source
/health
/docs
/docs/content?source=...
/docs/summary?source=...
/docs/delete
/memory/docs
语料目录:mcp_server_B_implementation/mcp_server_B_implementation/sample_data/docs/
mcp_server_B_implementation/mcp_server_B_implementation/sample_data/docs/
覆盖主题:
当前运行态:
source_files = 13
total_docs = 16 chunks
dim = 384
backend = numpy-fallback
embedding.backend = hash-forced
cache_loaded = true
min_score = 0.18
avg_chunk_length = 597.6
chunk_size = 1100
what is MCP
HTTP GET and POST methods
Streamlit session state
embedding 相似度
recuperación de información
概念検索
banana tractor quantum
hash-forced
sentence-transformers
compat_http_server.py
app.py
基于MCP协议和C++高性能检索引擎的智能文档助手,支持自然语言检索、分析和整理文档
版权所有:中国计算机学会技术支持:开源发展技术委员会 京ICP备13000930号-9 京公网安备 11010802047560号
MCP-Doc-Retriever — 毫秒级智能文档检索系统
🚀 核心亮点 ①:毫秒级检索,端到端平均 2.56ms
这是本项目最有竞争力的部分。并非”理论设计”或”预期目标”,而是当前本地运行态实测数据(基准脚本:
scripts/benchmark_readme_metrics.py):答辩时可表述为:
📋 核心亮点 ②:完整文档工作流,不只是”搜一下”
本项目不止于检索——围绕文档的完整生命周期,在前后端都做了闭环:
POST /mcp/v1/tools/call(search_docs)POST /docs/POST /docs/deleteGET /docs/content?source=..._highlight_text()<mark>标签渲染,中英文混合匹配GET /docs/summary?source=...st.download_buttonPOST /memory/docs/GET /memory/docsGET /health前端三栏布局:
🏗️ 系统架构
📂 目录说明
🔧 性能优化策略
.docsearch_cache/向量+元信息落盘,重启命中缓存⚡ 快速启动
环境要求
pip install fastapi uvicorn pydantic numpy pypdf pandas1. 启动后端
Windows 可直接双击
start_compat.bat。2. 启动前端
3. 健康检查
📡 接口说明
检索接口
POST
/mcp/v1/tools/call返回:
rank·doc_id·title·score·raw_score·snippet·source文档工作流接口
/health/docs/docs/content?source=.../docs/summary?source=.../docs/docs/delete/memory/docs/memory/docs🌍 当前语料库
语料目录:
mcp_server_B_implementation/mcp_server_B_implementation/sample_data/docs/覆盖主题:
当前运行态:
source_files = 13·total_docs = 16 chunks·dim = 384backend = numpy-fallback·embedding.backend = hash-forcedcache_loaded = true·min_score = 0.18avg_chunk_length = 597.6·chunk_size = 1100🧪 推荐测试查询
what is MCPHTTP GET and POST methodsStreamlit session stateembedding 相似度recuperación de información概念検索banana tractor quantum⚠️ 当前局限
hash-forcedembedding,语义质量非最终上限numpy-fallback,性能非最终上限fast_retriever.pyd尚未稳定接回正式联调服务📌 下一步优化方向
sentence-transformersfast_retriever.pyd(C++ Faiss 引擎)👥 分工
fast_retriever.pyd+ 源码compat_http_server.py+ 10+ 工具函数app.py+ PPT + 演示视频