mirror of
http://112.124.100.131/huang.ze/ebiz-dify-ai.git
synced 2025-12-24 18:23:07 +08:00
refactor: Add an enumeration type and use the factory pattern to obtain the corresponding class (#9356)
This commit is contained in:
@@ -1,8 +1,8 @@
|
||||
from typing import Any
|
||||
|
||||
from configs import dify_config
|
||||
from core.rag.datasource.keyword.jieba.jieba import Jieba
|
||||
from core.rag.datasource.keyword.keyword_base import BaseKeyword
|
||||
from core.rag.datasource.keyword.keyword_type import KeyWordType
|
||||
from core.rag.models.document import Document
|
||||
from models.dataset import Dataset
|
||||
|
||||
@@ -13,16 +13,19 @@ class Keyword:
|
||||
self._keyword_processor = self._init_keyword()
|
||||
|
||||
def _init_keyword(self) -> BaseKeyword:
|
||||
config = dify_config
|
||||
keyword_type = config.KEYWORD_STORE
|
||||
keyword_type = dify_config.KEYWORD_STORE
|
||||
keyword_factory = self.get_keyword_factory(keyword_type)
|
||||
return keyword_factory(self._dataset)
|
||||
|
||||
if not keyword_type:
|
||||
raise ValueError("Keyword store must be specified.")
|
||||
@staticmethod
|
||||
def get_keyword_factory(keyword_type: str) -> type[BaseKeyword]:
|
||||
match keyword_type:
|
||||
case KeyWordType.JIEBA:
|
||||
from core.rag.datasource.keyword.jieba.jieba import Jieba
|
||||
|
||||
if keyword_type == "jieba":
|
||||
return Jieba(dataset=self._dataset)
|
||||
else:
|
||||
raise ValueError(f"Keyword store {keyword_type} is not supported.")
|
||||
return Jieba
|
||||
case _:
|
||||
raise ValueError(f"Keyword store {keyword_type} is not supported.")
|
||||
|
||||
def create(self, texts: list[Document], **kwargs):
|
||||
self._keyword_processor.create(texts, **kwargs)
|
||||
|
||||
5
api/core/rag/datasource/keyword/keyword_type.py
Normal file
5
api/core/rag/datasource/keyword/keyword_type.py
Normal file
@@ -0,0 +1,5 @@
|
||||
from enum import Enum
|
||||
|
||||
|
||||
class KeyWordType(str, Enum):
|
||||
JIEBA = "jieba"
|
||||
Reference in New Issue
Block a user