File size: 1,202 Bytes
af60cba
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# modules/knowledge_base.py
import json
from pathlib import Path
from utils.logger import log

class KnowledgeBase:
    def __init__(self, file_path: Path = Path("./config/general_travelplan.json")):
        self.knowledge = []
        try:
            with open(file_path, 'r', encoding='utf-8') as f:
                self.knowledge = json.load(f).get('clean_knowledge', [])
            log.info(f"✅ 知识库加载完成")
        except Exception as e:
            log.error(f"❌ 知识库加载失败: {e}", exc_info=True)
            raise

    def search(self, query: str) -> list:
        relevant_knowledge = []
        query_lower = query.lower()
        
        for item in self.knowledge:
            # 简单实现:如果查询的城市在知识库的目的地中,则返回该知识
            destinations = item.get('knowledge', {}).get('travel_knowledge', {}).get('destination_info', {}).get('primary_destinations', [])
            for dest in destinations:
                if dest.lower() in query_lower:
                    if item not in relevant_knowledge:
                        relevant_knowledge.append(item)
                    break 
        return relevant_knowledge