refactor(knowledge): 重构知识库模块,优化架构和实现
- 优化知识库文件夹结构,增强可维护性 - 新增知识库管理器和工厂类,统一管理不同类型的知识库实例 - 实现知识库的基本操作接口,包括创建、更新和删除数据库 - 引入新的知识库实现类(ChromaKB、MilvusKB、LightRagKB),支持多种存储后端 - 增强文件路径验证,确保安全性 - 更新文档,提供新的知识库接口说明
This commit is contained in:
parent
790c068eb6
commit
2112d4833d
@ -27,6 +27,7 @@
|
|||||||
- [x] 添加内容审查功能
|
- [x] 添加内容审查功能
|
||||||
- [x] 补充 embedding 模型和 reranker 模型的配置说明
|
- [x] 补充 embedding 模型和 reranker 模型的配置说明
|
||||||
- [ ] 支持 MinerU 的解析方法
|
- [ ] 支持 MinerU 的解析方法
|
||||||
|
- [x] 优化 knowledge 文件夹下面的架构
|
||||||
|
|
||||||
📝 **Base**
|
📝 **Base**
|
||||||
|
|
||||||
|
|||||||
@ -1,12 +1,12 @@
|
|||||||
import os
|
import os
|
||||||
|
|
||||||
from ..config import config
|
from ..config import config
|
||||||
from .chroma_kb import ChromaKB
|
from .implementations.chroma import ChromaKB
|
||||||
from .graphbase import GraphDatabase
|
from .graph import GraphDatabase
|
||||||
from .kb_factory import KnowledgeBaseFactory
|
from .factory import KnowledgeBaseFactory
|
||||||
from .kb_manager import KnowledgeBaseManager
|
from .manager import KnowledgeBaseManager
|
||||||
from .lightrag_kb import LightRagKB
|
from .implementations.lightrag import LightRagKB
|
||||||
from .milvus_kb import MilvusKB
|
from .implementations.milvus import MilvusKB
|
||||||
|
|
||||||
# 注册知识库类型
|
# 注册知识库类型
|
||||||
KnowledgeBaseFactory.register("chroma", ChromaKB, {"description": "基于 ChromaDB 的轻量级向量知识库,适合开发和小规模"})
|
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
|
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 chromadb.utils.embedding_functions import OpenAIEmbeddingFunction
|
||||||
|
|
||||||
from src.knowledge.indexing import process_file_to_markdown, process_url_to_markdown
|
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,
|
get_embedding_config,
|
||||||
prepare_item_metadata,
|
prepare_item_metadata,
|
||||||
split_text_into_chunks,
|
split_text_into_chunks,
|
||||||
split_text_into_qa_chunks,
|
split_text_into_qa_chunks,
|
||||||
)
|
)
|
||||||
from src.knowledge.knowledge_base import KnowledgeBase
|
from src.knowledge.base import KnowledgeBase
|
||||||
from src.utils import logger
|
from src.utils import logger
|
||||||
|
|
||||||
|
|
||||||
@ -10,8 +10,8 @@ from neo4j import GraphDatabase
|
|||||||
from pymilvus import connections, utility
|
from pymilvus import connections, utility
|
||||||
|
|
||||||
from src.knowledge.indexing import process_file_to_markdown, process_url_to_markdown
|
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.utils.kb_utils import get_embedding_config, prepare_item_metadata
|
||||||
from src.knowledge.knowledge_base import KnowledgeBase
|
from src.knowledge.base import KnowledgeBase
|
||||||
from src.utils import hashstr, logger
|
from src.utils import hashstr, logger
|
||||||
|
|
||||||
LIGHTRAG_LLM_PROVIDER = os.getenv("LIGHTRAG_LLM_PROVIDER", "siliconflow")
|
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 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.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,
|
get_embedding_config,
|
||||||
prepare_item_metadata,
|
prepare_item_metadata,
|
||||||
split_text_into_chunks,
|
split_text_into_chunks,
|
||||||
split_text_into_qa_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.models.embed import OtherEmbedding
|
||||||
from src.utils import hashstr, logger
|
from src.utils import hashstr, logger
|
||||||
|
|
||||||
@ -3,8 +3,8 @@ import json
|
|||||||
import os
|
import os
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
|
|
||||||
from src.knowledge.kb_factory import KnowledgeBaseFactory
|
from src.knowledge.factory import KnowledgeBaseFactory
|
||||||
from src.knowledge.knowledge_base import KBNotFoundError, KnowledgeBase
|
from src.knowledge.base import KBNotFoundError, KnowledgeBase
|
||||||
from src.utils import logger
|
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