将RAG服务的system_guide_docs
初始化从硬编码数据改为使用转换后的knowledge_base/mom_knowledge.json
文件。
src/services/rag_service.py
)import json # 新增JSON支持
async def _load_system_guide_from_json(self) -> List[Dict[str, Any]]:
"""从JSON文件加载系统指南文档"""
json_file_path = f"{self.knowledge_base_path}/mom_knowledge.json"
try:
if not os.path.exists(json_file_path):
logger.warning(f"JSON文件不存在: {json_file_path}")
return []
with open(json_file_path, 'r', encoding='utf-8') as f:
all_documents = json.load(f)
# 过滤出适合system_guide的文档类型
system_guide_types = {
'login_guide',
'operation_guide',
'basic_settings',
'system_management',
'personal_center'
}
system_guide_docs = []
for doc in all_documents:
doc_type = doc.get('metadata', {}).get('type', '')
if doc_type in system_guide_types:
system_guide_docs.append(doc)
logger.info(f"从JSON文件加载了 {len(system_guide_docs)} 个系统指南文档")
return system_guide_docs
except Exception as e:
logger.error(f"加载JSON文件失败: {e}")
return []
async def initialize_default_knowledge(self):
"""初始化默认知识库"""
logger.info("初始化默认知识库")
# 从转换后的JSON文件加载系统指南文档
system_guide_docs = await self._load_system_guide_from_json()
# 如果JSON文件加载失败,使用备用的硬编码数据
if not system_guide_docs:
logger.warning("无法从JSON文件加载系统指南,使用默认数据")
system_guide_docs = [
# ... 原有的硬编码数据作为备用
]
系统会自动从170个总文档中过滤出适合system_guide
集合的文档类型:
login_guide
- 登录相关指南 (2个文档)operation_guide
- 操作指南 (167个文档)basic_settings
- 基础设置system_management
- 系统管理personal_center
- 个人中心总计: 169个system_guide文档
通过test_rag_with_json.py
测试验证:
✅ 找到JSON文件: knowledge_base/mom_knowledge.json
📊 JSON文件总文档数: 170
📋 文档类型分布:
login_guide: 2 个
operation_guide: 167 个
production_management: 1 个
✅ 成功加载 169 个system_guide文档
✅ 知识库初始化成功
✅ 成功添加 184 个文档块到向量数据库
# 1. 更新markdown文档
# 2. 重新转换为JSON
python scripts/md_to_knowledge_converter.py
# 3. 重启RAG服务(自动加载新数据)
# 运行测试脚本验证
python test_rag_with_json.py
在_load_system_guide_from_json
方法中的system_guide_types
集合中添加新类型:
system_guide_types = {
'login_guide',
'operation_guide',
'basic_settings',
'system_management',
'personal_center',
'new_type' # 添加新类型
}
RAG服务现在成功集成了真实的MES操作手册数据,从3个示例文档扩展到169个专业文档,大大提升了智能问答系统的知识覆盖面和回答质量。系统保持了良好的向后兼容性和错误处理能力,为未来的知识库扩展奠定了坚实基础。