实现了从数据准备到最终输出的完整 RAG 优化流程:
- 工具:
tool/clean_text.py - 优化:去除PDF乱码、统一格式、优化分词
- 效果:检索准确率 +15%
- 模块:
module/intent_classifier.py(可选) - 技术:基于 m3e-small 微调轻量级分类器
- 优化:识别多种意图,简单查询(问候/礼貌/闲聊)直接回复,跳过 RAG
- 效果:83% 查询跳过 RAG,资源节省 80%+,响应时间 <50ms
- 模块:
module/query_expander.py - 优化:提取关键词、同义词扩展、生成查询变体
- 效果:检索召回率 +20%
- 技术:FAISS + m3e-small
- 优化:高效相似度搜索,返回 top-K 文档
- 模块:
module/doc_compressor.py - 技术:TextRank 初筛 + m3e 语义重排序
- 优化:从 1600 字压缩到 400 字(75%+ 压缩率)
- 效果:LLM 速度提升 50%+,保留核心信息,零额外成本
- 技术:Qwen2-1.5B + SSE 流式传输
- 优化:逐字显示 AI 回答,实时状态反馈
- 效果:首字响应时间缩短
- 2核4G CPU 即可运行,无需GPU
- 内存占用优化(<2GB)
- CPU推理加速配置
- 智能批处理和缓存
- 并发控制:保护服务器资源,防止过载
- 频率限制:防止恶意攻击和脚本滥用
- 输入长度限制:防止过长输入影响性能
- 内容安全过滤:防止恶意查询和系统信息泄露
- 敏感词检测:自动识别并阻止技术细节查询
- 智能截断:超长输入自动截断而非拒绝
- 频率限制:基于真实IP的多级频率控制(分钟/小时/天)
- 脚本检测:自动识别和拦截curl、python-requests等脚本工具
- 代理支持:正确识别Nginx/CDN后的真实IP
- m3e-small 嵌入模型:专为中文RAG优化(200MB)
- Qwen2-1.5B LLM:强大的中文理解能力(1.5GB)
- 中文分词和语义优化
- 支持中文文档处理
RAGManager:文档加载、切分、向量库管理QueryExpander:查询改写和扩展ChatHandler:对话处理和上下文管理SecurityFilter:安全过滤和输入验证DocumentCompressor:文档压缩和摘要提取IntentClassifier:意图识别和路由RateLimiter:频率限制和脚本检测- 易于扩展和自定义
- 无需重建整个向量库
- 支持 PDF 和 TXT 格式
- 自动文档迁移
- 热更新支持(运行时加载新文档)
- 数据清洗工具(
clean_text.py):文本去噪、格式化 - 质量评估工具(
evaluate_quality.py):评估RAG效果 - 完整的日志和监控
# 官方源(国外)
pip install -r requirements.txt
# 国内用户 - 使用镜像源加速⭐推荐
pip install -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple/永久配置镜像源(推荐):
# Linux/macOS
pip config set global.index-url https://mirrors.aliyun.com/pypi/simple/
pip config set install.trusted-host mirrors.aliyun.com
# Windows (PowerShell)
pip config set global.index-url https://mirrors.aliyun.com/pypi/simple/
pip config set install.trusted-host mirrors.aliyun.com详见 WIKI.md 章节
如需使用智能意图识别功能优化RAG性能:
# 进入意图分类器目录
cd intent_fine_tuning
# 安装依赖
pip install -r requirements.txt
# 训练模型
python train.py
# 测试模型
python test.py
# 返回项目根目录
cd ..重要:训练后的模型会保存在 intent_fine_tuning/model/intent-classifier/,使用时需要手动拷贝到 model/intent-classifier/:
# Windows (PowerShell)
Copy-Item -Path "intent_fine_tuning\model\intent-classifier\*" -Destination "model\intent-classifier\" -Recurse -Force
# Linux/macOS
cp -r intent_fine_tuning/model/intent-classifier/* model/intent-classifier/详细说明见:intent_fine_tuning/README.md
将你的文档(PDF或TXT)放入 data/ 目录:
data/
├── document1.txt
├── document2.pdf
└── document3.txtpython app.py服务将在 http://localhost:5000 启动
在浏览器打开 http://localhost:5000,即可开始对话!
📖 完整使用指南:WIKI.md
包含以下详细内容:
- 📥 模型下载指南
- ⚙️ 详细配置说明
- 📚 使用指南和最佳实践
- 🛠️ 工具集使用说明
- 🌐 API接口文档
- ❓ 常见问题解答
- 🔧 开发指南
📖 意图分类器文档:intent_fine_tuning/README.md
包含以下详细内容:
- 🎯 意图分类器功能特性
- 🚀 快速开始和训练指南
- 📊 性能指标和模型说明
- 🔧 自定义训练数据
- 🔍 故障排除和常见问题