|
|
|
@@ -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 |
|
|
|
|
|
|
|
if not keyword_type: |
|
|
|
raise ValueError("Keyword store must be specified.") |
|
|
|
|
|
|
|
if keyword_type == "jieba": |
|
|
|
return Jieba(dataset=self._dataset) |
|
|
|
else: |
|
|
|
raise ValueError(f"Keyword store {keyword_type} is not supported.") |
|
|
|
keyword_type = dify_config.KEYWORD_STORE |
|
|
|
keyword_factory = self.get_keyword_factory(keyword_type) |
|
|
|
return keyword_factory(self._dataset) |
|
|
|
|
|
|
|
@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 |
|
|
|
|
|
|
|
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) |