2025-09-18 15:20:39 +08:00
|
|
|
|
import os
|
|
|
|
|
|
|
|
|
|
|
|
from ..config import config
|
2025-09-23 13:07:50 +08:00
|
|
|
|
from .factory import KnowledgeBaseFactory
|
2026-02-24 12:12:02 +08:00
|
|
|
|
from .implementations.dify import DifyKB
|
2025-09-23 13:07:50 +08:00
|
|
|
|
from .implementations.milvus import MilvusKB
|
2025-10-02 19:59:35 +08:00
|
|
|
|
from .manager import KnowledgeBaseManager
|
2026-02-28 16:59:04 +08:00
|
|
|
|
from .services.disabled_graph_service import DisabledGraphService
|
2025-12-20 15:00:49 +08:00
|
|
|
|
from .services.upload_graph_service import UploadGraphService
|
2026-02-28 16:59:04 +08:00
|
|
|
|
from src.utils import logger
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def _env_enabled(name: str, default: bool = True) -> bool:
|
|
|
|
|
|
value = os.getenv(name)
|
|
|
|
|
|
if value is None:
|
|
|
|
|
|
return default
|
|
|
|
|
|
return value.strip().lower() in {"1", "true", "yes", "on"}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
LIGHTRAG_ENABLED = _env_enabled("YUXI_ENABLE_LIGHTRAG", default=True)
|
|
|
|
|
|
KNOWLEDGE_GRAPH_ENABLED = _env_enabled("YUXI_ENABLE_KNOWLEDGE_GRAPH", default=True)
|
2025-09-18 15:20:39 +08:00
|
|
|
|
|
|
|
|
|
|
# 注册知识库类型
|
|
|
|
|
|
KnowledgeBaseFactory.register("milvus", MilvusKB, {"description": "基于 Milvus 的生产级向量知识库,适合高性能部署"})
|
2026-02-24 12:12:02 +08:00
|
|
|
|
KnowledgeBaseFactory.register("dify", DifyKB, {"description": "连接 Dify Dataset 的只读检索知识库"})
|
2025-09-18 15:20:39 +08:00
|
|
|
|
|
2026-02-28 16:59:04 +08:00
|
|
|
|
if LIGHTRAG_ENABLED:
|
|
|
|
|
|
from .implementations.lightrag import LightRagKB
|
|
|
|
|
|
|
|
|
|
|
|
KnowledgeBaseFactory.register("lightrag", LightRagKB, {"description": "基于图检索的知识库,支持实体关系构建和复杂查询"})
|
|
|
|
|
|
else:
|
|
|
|
|
|
logger.info("LightRAG feature disabled by YUXI_ENABLE_LIGHTRAG=false")
|
|
|
|
|
|
|
2025-09-18 15:20:39 +08:00
|
|
|
|
# 创建知识库管理器
|
|
|
|
|
|
work_dir = os.path.join(config.save_dir, "knowledge_base_data")
|
|
|
|
|
|
knowledge_base = KnowledgeBaseManager(work_dir)
|
|
|
|
|
|
|
|
|
|
|
|
# 创建图数据库实例
|
2026-02-28 16:59:04 +08:00
|
|
|
|
if KNOWLEDGE_GRAPH_ENABLED:
|
|
|
|
|
|
try:
|
|
|
|
|
|
graph_base = UploadGraphService()
|
|
|
|
|
|
except Exception as e:
|
|
|
|
|
|
logger.warning(f"Knowledge graph init failed, fallback to disabled mode: {e}")
|
|
|
|
|
|
graph_base = DisabledGraphService(reason=f"知识图谱服务不可用: {e}")
|
|
|
|
|
|
else:
|
|
|
|
|
|
graph_base = DisabledGraphService(reason="知识图谱功能已禁用(YUXI_ENABLE_KNOWLEDGE_GRAPH=false)")
|
2025-09-18 15:20:39 +08:00
|
|
|
|
|
2025-12-20 15:00:49 +08:00
|
|
|
|
# 向后兼容:让 GraphDatabase 指向 UploadGraphService
|
2026-02-28 16:59:04 +08:00
|
|
|
|
GraphDatabase = UploadGraphService if KNOWLEDGE_GRAPH_ENABLED else DisabledGraphService
|
2025-12-20 15:00:49 +08:00
|
|
|
|
|
|
|
|
|
|
__all__ = ["GraphDatabase", "UploadGraphService", "knowledge_base", "graph_base"]
|