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