1. 舞雩ERP-Agent系统重构背景与核心挑战
在ERP系统领域,信息检索的准确性和智能化程度直接影响业务决策效率。传统RAGflow框架虽然提供了基础的检索能力,但在专业场景下暴露出的问题日益明显。作为一名长期深耕ERP系统开发的工程师,我在实际项目中深刻体会到这些痛点:
- 表名查询经常返回相似但不匹配的结果,开发人员需要花费大量时间人工筛选
- 业务问题检索结果中混杂大量无关的系统文档,LLM无法获取有效参考信息
- SQL编写依赖模型记忆而非实际文档参考,错误率居高不下
RAGflow框架的加权求和算法(weighted_sum)采用固定权重分配(向量95%+全文5%),这种设计在通用场景尚可接受,但在ERP这类专业领域就显得力不从心。比如当用户查询"HR_OPERATING_UNITS表结构"时,系统可能返回HR_ALL_ORGANIZATION_UNITS等相似表文档,正是因为框架缺乏精确匹配机制。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 三路融合检索架构设计
2.1 整体架构演进
舞雩系统的核心创新在于将传统的双路检索扩展为三路融合架构:
code复制用户问题
↓
【意图识别层】
↓
【三路并行检索】
├─ 向量检索(语义相似度)
├─ BM25检索(关键词匹配)
└─ Source检索(精确匹配)
↓
【RRF融合排序】
↓
【智能过滤与增强】
↓
【完整文档获取】
与RAGflow相比,关键改进点包括:
- 新增Source检索专精表名/文件名精确匹配
- 用BM25算法替代基础全文检索提升关键词匹配精度
- 引入RRF(Reciprocal Rank Fusion)替代加权求和
2.2 Source检索实现细节
Source检索的核心逻辑位于rag/retriever.py的550-552行:
python复制# 表名提取正则
TABLE_NAME_PATTERN = r'\b[A-Z][A-Z0-9_]*\b'
def extract_table_names(query):
return re.findall(TABLE_NAME_PATTERN, query)
# 精确匹配逻辑
for doc in documents
