refactor(knowledge): 重构知识库模块,优化架构和实现

- 优化知识库文件夹结构,增强可维护性
- 新增知识库管理器和工厂类,统一管理不同类型的知识库实例
- 实现知识库的基本操作接口,包括创建、更新和删除数据库
- 引入新的知识库实现类(ChromaKB、MilvusKB、LightRagKB),支持多种存储后端
- 增强文件路径验证,确保安全性
- 更新文档,提供新的知识库接口说明
This commit is contained in:
Wenjie Zhang 2025-09-23 13:07:50 +08:00
parent 790c068eb6
commit 2112d4833d
12 changed files with 51 additions and 15 deletions

View File

@ -27,6 +27,7 @@
- [x] 添加内容审查功能
- [x] 补充 embedding 模型和 reranker 模型的配置说明
- [ ] 支持 MinerU 的解析方法
- [x] 优化 knowledge 文件夹下面的架构
📝 **Base**

View File

@ -1,12 +1,12 @@
import os
from ..config import config
from .chroma_kb import ChromaKB
from .graphbase import GraphDatabase
from .kb_factory import KnowledgeBaseFactory
from .kb_manager import KnowledgeBaseManager
from .lightrag_kb import LightRagKB
from .milvus_kb import MilvusKB
from .implementations.chroma import ChromaKB
from .graph import GraphDatabase
from .factory import KnowledgeBaseFactory
from .manager import KnowledgeBaseManager
from .implementations.lightrag import LightRagKB
from .implementations.milvus import MilvusKB
# 注册知识库类型
KnowledgeBaseFactory.register("chroma", ChromaKB, {"description": "基于 ChromaDB 的轻量级向量知识库,适合开发和小规模"})

View File

@ -1,4 +1,4 @@
from src.knowledge.knowledge_base import KBNotFoundError, KnowledgeBase
from src.knowledge.base import KBNotFoundError, KnowledgeBase
from src.utils import logger

View File

@ -0,0 +1,13 @@
"""知识库具体实现模块
包含各种知识库的具体实现
- ChromaKB: 基于 ChromaDB 的向量知识库
- MilvusKB: 基于 Milvus 的向量知识库
- LightRagKB: 基于 LightRAG 的图检索知识库
"""
from .chroma import ChromaKB
from .milvus import MilvusKB
from .lightrag import LightRagKB
__all__ = ["ChromaKB", "MilvusKB", "LightRagKB"]

View File

@ -8,13 +8,13 @@ from chromadb.config import Settings
from chromadb.utils.embedding_functions import OpenAIEmbeddingFunction
from src.knowledge.indexing import process_file_to_markdown, process_url_to_markdown
from src.knowledge.kb_utils import (
from src.knowledge.utils.kb_utils import (
get_embedding_config,
prepare_item_metadata,
split_text_into_chunks,
split_text_into_qa_chunks,
)
from src.knowledge.knowledge_base import KnowledgeBase
from src.knowledge.base import KnowledgeBase
from src.utils import logger

View File

@ -10,8 +10,8 @@ from neo4j import GraphDatabase
from pymilvus import connections, utility
from src.knowledge.indexing import process_file_to_markdown, process_url_to_markdown
from src.knowledge.kb_utils import get_embedding_config, prepare_item_metadata
from src.knowledge.knowledge_base import KnowledgeBase
from src.knowledge.utils.kb_utils import get_embedding_config, prepare_item_metadata
from src.knowledge.base import KnowledgeBase
from src.utils import hashstr, logger
LIGHTRAG_LLM_PROVIDER = os.getenv("LIGHTRAG_LLM_PROVIDER", "siliconflow")

View File

@ -7,13 +7,13 @@ from typing import Any
from pymilvus import Collection, CollectionSchema, DataType, FieldSchema, connections, db, utility
from src.knowledge.indexing import process_file_to_markdown, process_url_to_markdown
from src.knowledge.kb_utils import (
from src.knowledge.utils.kb_utils import (
get_embedding_config,
prepare_item_metadata,
split_text_into_chunks,
split_text_into_qa_chunks,
)
from src.knowledge.knowledge_base import KnowledgeBase
from src.knowledge.base import KnowledgeBase
from src.models.embed import OtherEmbedding
from src.utils import hashstr, logger

View File

@ -3,8 +3,8 @@ import json
import os
from datetime import datetime
from src.knowledge.kb_factory import KnowledgeBaseFactory
from src.knowledge.knowledge_base import KBNotFoundError, KnowledgeBase
from src.knowledge.factory import KnowledgeBaseFactory
from src.knowledge.base import KBNotFoundError, KnowledgeBase
from src.utils import logger

View File

@ -0,0 +1,22 @@
"""知识库工具模块
包含知识库相关的工具函数
- kb_utils: 知识库通用工具函数
- indexing: 文件处理和索引相关功能
"""
from .kb_utils import (
get_embedding_config,
prepare_item_metadata,
split_text_into_chunks,
split_text_into_qa_chunks,
validate_file_path,
)
__all__ = [
"get_embedding_config",
"prepare_item_metadata",
"split_text_into_chunks",
"split_text_into_qa_chunks",
"validate_file_path",
]