diff --git a/docs/changelog/update.md b/docs/changelog/update.md index e59edecf..9ea46feb 100644 --- a/docs/changelog/update.md +++ b/docs/changelog/update.md @@ -27,6 +27,7 @@ - [x] 添加内容审查功能 - [x] 补充 embedding 模型和 reranker 模型的配置说明 - [ ] 支持 MinerU 的解析方法 +- [x] 优化 knowledge 文件夹下面的架构 📝 **Base** diff --git a/src/knowledge/__init__.py b/src/knowledge/__init__.py index fc0b48b6..f4a342f9 100644 --- a/src/knowledge/__init__.py +++ b/src/knowledge/__init__.py @@ -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 的轻量级向量知识库,适合开发和小规模"}) diff --git a/src/knowledge/knowledge_base.py b/src/knowledge/base.py similarity index 100% rename from src/knowledge/knowledge_base.py rename to src/knowledge/base.py diff --git a/src/knowledge/kb_factory.py b/src/knowledge/factory.py similarity index 97% rename from src/knowledge/kb_factory.py rename to src/knowledge/factory.py index dfd1ba71..5778f63d 100644 --- a/src/knowledge/kb_factory.py +++ b/src/knowledge/factory.py @@ -1,4 +1,4 @@ -from src.knowledge.knowledge_base import KBNotFoundError, KnowledgeBase +from src.knowledge.base import KBNotFoundError, KnowledgeBase from src.utils import logger diff --git a/src/knowledge/graphbase.py b/src/knowledge/graph.py similarity index 100% rename from src/knowledge/graphbase.py rename to src/knowledge/graph.py diff --git a/src/knowledge/implementations/__init__.py b/src/knowledge/implementations/__init__.py new file mode 100644 index 00000000..abc0ecd2 --- /dev/null +++ b/src/knowledge/implementations/__init__.py @@ -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"] diff --git a/src/knowledge/chroma_kb.py b/src/knowledge/implementations/chroma.py similarity index 99% rename from src/knowledge/chroma_kb.py rename to src/knowledge/implementations/chroma.py index 71eb4cf9..1dfe70b3 100644 --- a/src/knowledge/chroma_kb.py +++ b/src/knowledge/implementations/chroma.py @@ -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 diff --git a/src/knowledge/lightrag_kb.py b/src/knowledge/implementations/lightrag.py similarity index 99% rename from src/knowledge/lightrag_kb.py rename to src/knowledge/implementations/lightrag.py index d1ce5393..da4a5af6 100644 --- a/src/knowledge/lightrag_kb.py +++ b/src/knowledge/implementations/lightrag.py @@ -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") diff --git a/src/knowledge/milvus_kb.py b/src/knowledge/implementations/milvus.py similarity index 99% rename from src/knowledge/milvus_kb.py rename to src/knowledge/implementations/milvus.py index 0843cf86..aa6554b3 100644 --- a/src/knowledge/milvus_kb.py +++ b/src/knowledge/implementations/milvus.py @@ -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 diff --git a/src/knowledge/kb_manager.py b/src/knowledge/manager.py similarity index 99% rename from src/knowledge/kb_manager.py rename to src/knowledge/manager.py index eb3cd06b..08a2bf49 100644 --- a/src/knowledge/kb_manager.py +++ b/src/knowledge/manager.py @@ -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 diff --git a/src/knowledge/utils/__init__.py b/src/knowledge/utils/__init__.py new file mode 100644 index 00000000..69fac12a --- /dev/null +++ b/src/knowledge/utils/__init__.py @@ -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", +] diff --git a/src/knowledge/kb_utils.py b/src/knowledge/utils/kb_utils.py similarity index 100% rename from src/knowledge/kb_utils.py rename to src/knowledge/utils/kb_utils.py