refactor(knowledge): 重构知识库模块,优化架构和实现
- 优化知识库文件夹结构,增强可维护性 - 新增知识库管理器和工厂类,统一管理不同类型的知识库实例 - 实现知识库的基本操作接口,包括创建、更新和删除数据库 - 引入新的知识库实现类(ChromaKB、MilvusKB、LightRagKB),支持多种存储后端 - 增强文件路径验证,确保安全性 - 更新文档,提供新的知识库接口说明
This commit is contained in:
parent
790c068eb6
commit
2112d4833d
@ -27,6 +27,7 @@
|
||||
- [x] 添加内容审查功能
|
||||
- [x] 补充 embedding 模型和 reranker 模型的配置说明
|
||||
- [ ] 支持 MinerU 的解析方法
|
||||
- [x] 优化 knowledge 文件夹下面的架构
|
||||
|
||||
📝 **Base**
|
||||
|
||||
|
||||
@ -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 的轻量级向量知识库,适合开发和小规模"})
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
from src.knowledge.knowledge_base import KBNotFoundError, KnowledgeBase
|
||||
from src.knowledge.base import KBNotFoundError, KnowledgeBase
|
||||
from src.utils import logger
|
||||
|
||||
|
||||
13
src/knowledge/implementations/__init__.py
Normal file
13
src/knowledge/implementations/__init__.py
Normal 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"]
|
||||
@ -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
|
||||
|
||||
|
||||
@ -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")
|
||||
@ -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
|
||||
|
||||
@ -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
|
||||
|
||||
|
||||
22
src/knowledge/utils/__init__.py
Normal file
22
src/knowledge/utils/__init__.py
Normal 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",
|
||||
]
|
||||
Loading…
Reference in New Issue
Block a user