mirror of
https://github.com/1Panel-dev/MaxKB.git
synced 2025-12-26 10:12:51 +00:00
feat: Add document_id_list parameter to query methods in vector classes
This commit is contained in:
parent
09c5c9c042
commit
219fe97c87
|
|
@ -67,7 +67,7 @@ class BaseSearchDatasetStep(ISearchDatasetStep):
|
|||
embedding_model = ModelManage.get_model(model_id, lambda _id: get_model(model))
|
||||
embedding_value = embedding_model.embed_query(exec_problem_text)
|
||||
vector = VectorStore.get_embedding_vector()
|
||||
embedding_list = vector.query(exec_problem_text, embedding_value, knowledge_id_list, exclude_document_id_list,
|
||||
embedding_list = vector.query(exec_problem_text, embedding_value, knowledge_id_list, None, exclude_document_id_list,
|
||||
exclude_paragraph_id_list, True, top_n, similarity, SearchMode(search_mode))
|
||||
if embedding_list is None:
|
||||
return []
|
||||
|
|
|
|||
|
|
@ -79,12 +79,14 @@ class BaseSearchKnowledgeNode(ISearchKnowledgeStepNode):
|
|||
self.context['question'] = question
|
||||
self.context['show_knowledge'] = show_knowledge
|
||||
|
||||
document_id_list = None
|
||||
if search_scope_type == 'referencing': # 引用上一步知识库/文档
|
||||
if search_scope_source == 'knowledge': # 知识库
|
||||
knowledge_id_list = self.get_reference_content(search_scope_reference)
|
||||
else: # 文档
|
||||
document_id_list = self.get_reference_content(search_scope_reference)
|
||||
knowledge_id_list = QuerySet(Document).filter(
|
||||
id__in=self.get_reference_content(search_scope_reference)
|
||||
id__in=document_id_list
|
||||
).values_list(
|
||||
'knowledge_id', flat=True
|
||||
).distinct()
|
||||
|
|
@ -105,7 +107,7 @@ class BaseSearchKnowledgeNode(ISearchKnowledgeStepNode):
|
|||
QuerySet(Document).filter(
|
||||
knowledge_id__in=knowledge_id_list,
|
||||
is_active=False)]
|
||||
embedding_list = vector.query(question, embedding_value, knowledge_id_list, exclude_document_id_list,
|
||||
embedding_list = vector.query(question, embedding_value, knowledge_id_list, document_id_list, exclude_document_id_list,
|
||||
exclude_paragraph_id_list, True, knowledge_setting.get('top_n'),
|
||||
knowledge_setting.get('similarity'),
|
||||
SearchMode(knowledge_setting.get('search_mode')))
|
||||
|
|
|
|||
|
|
@ -126,6 +126,7 @@ class BaseVectorStore(ABC):
|
|||
|
||||
@abstractmethod
|
||||
def query(self, query_text: str, query_embedding: List[float], knowledge_id_list: list[str],
|
||||
document_id_list: list[str] | None,
|
||||
exclude_document_id_list: list[str],
|
||||
exclude_paragraph_list: list[str], is_active: bool, top_n: int, similarity: float,
|
||||
search_mode: SearchMode):
|
||||
|
|
|
|||
|
|
@ -97,6 +97,7 @@ class PGVector(BaseVectorStore):
|
|||
return search_handle.handle(query_set, query_text, embedding_query, top_number, similarity, search_mode)
|
||||
|
||||
def query(self, query_text: str, query_embedding: List[float], knowledge_id_list: list[str],
|
||||
document_id_list: list[str],
|
||||
exclude_document_id_list: list[str],
|
||||
exclude_paragraph_list: list[str], is_active: bool, top_n: int, similarity: float,
|
||||
search_mode: SearchMode):
|
||||
|
|
@ -104,6 +105,8 @@ class PGVector(BaseVectorStore):
|
|||
if knowledge_id_list is None or len(knowledge_id_list) == 0:
|
||||
return []
|
||||
query_set = QuerySet(Embedding).filter(knowledge_id__in=knowledge_id_list, is_active=is_active)
|
||||
if document_id_list is not None and len(document_id_list) > 0:
|
||||
query_set = query_set.filter(document_id__in=document_id_list)
|
||||
if exclude_document_id_list is not None and len(exclude_document_id_list) > 0:
|
||||
query_set = query_set.exclude(document_id__in=exclude_document_id_list)
|
||||
if exclude_paragraph_list is not None and len(exclude_paragraph_list) > 0:
|
||||
|
|
|
|||
Loading…
Reference in New Issue