1. 项目概述:当Everything遇上RAG技术
作为一名长期被海量技术文档折磨的开发者,我一直在寻找一种能像Everything那样秒速定位文件,又能像ChatGPT那样理解语义的解决方案。传统全文搜索工具虽然速度快,但遇到"如何配置数据库连接"和"怎么设置DB链接参数"这类语义相似但关键词不同的查询就束手无策;而直接问大模型又经常得到与本地文档无关的"幻觉"答案。
Everything plus系统正是为解决这个痛点而生。它本质上是一个运行在本地的智能文档知识库,核心技术是RAG(检索增强生成)架构。与云端方案不同,所有数据处理和查询都在本地完成,特别适合处理敏感的技术文档和企业内部资料。我在实际工作中使用这个系统后,查找技术方案的时间从平均15分钟缩短到30秒以内。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 系统架构设计解析
2.1 三层架构设计
系统采用典型的三层架构,每层都经过精心选型:
code复制前端(Web界面)
↑↓ HTTP API交互
后端(Flask+Python)
↑↓ 数据库操作
数据层(ES+MySQL)
前端选择考量:基于Web而非桌面应用,主要是考虑到:
- 跨平台兼容性(Win/Mac/Linux都能用)
- 移动端可访问性(手机也能查文档)
- 未来扩展性(可轻松集成到企业门户)
后端技术栈:
- Flask:比Django更轻量,适合资源受限的本地部署
- Uvicorn:支持异步处理,提升并发性能
- JWT:保障本地API通信安全
数据存储方案:
- Elasticsearch:存储文档内容和向量,版本选择9.x+(必须支持向量检索)
- MySQL:仅存储用户账号等元数据,用5.7+版本即可
2.2 混合检索引擎设计
核心检索模块采用BM25+向量的双路检索架构:
python复制class HybridSearch:
def __init__(self):
self.bm25 = BM25() # 关键词检索
self.vector = VectorSearch() # 语义检索
def search(self, query):
# 并行执行两种检索
bm25_results = self.bm25.search(query)
vector_results = self.vector.search(query)
# 结果融合
return self.rrf_fusion(bm25_results, vector_results)
这种设计使得系统既能精确匹配"Elastics
