From e653adfc9216ba3818db4a9c4a98856304550d88 Mon Sep 17 00:00:00 2001 From: Kevin Hu Date: Thu, 20 Nov 2025 19:22:13 +0800 Subject: [PATCH] Fix: doc_ids issue. --- agent/tools/retrieval.py | 4 ++-- api/apps/chunk_app.py | 2 +- api/apps/sdk/doc.py | 2 +- api/apps/sdk/session.py | 2 +- api/db/services/dialog_service.py | 9 +++++---- 5 files changed, 10 insertions(+), 9 deletions(-) diff --git a/agent/tools/retrieval.py b/agent/tools/retrieval.py index 001b8a49e..fd9096cb6 100644 --- a/agent/tools/retrieval.py +++ b/agent/tools/retrieval.py @@ -137,7 +137,7 @@ class Retrieval(ToolBase, ABC): if not doc_ids: doc_ids = None elif self._param.meta_data_filter.get("method") == "manual": - filters=self._param.meta_data_filter["manual"] + filters = self._param.meta_data_filter["manual"] for flt in filters: pat = re.compile(self.variable_ref_patt) s = flt["value"] @@ -166,7 +166,7 @@ class Retrieval(ToolBase, ABC): out_parts.append(s[last:]) flt["value"] = "".join(out_parts) doc_ids.extend(meta_filter(metas, filters, self._param.meta_data_filter.get("logic", "and"))) - if not doc_ids: + if filters and not doc_ids: doc_ids = ["-999"] if self._param.cross_languages: diff --git a/api/apps/chunk_app.py b/api/apps/chunk_app.py index f48276d0a..b43fb9af1 100644 --- a/api/apps/chunk_app.py +++ b/api/apps/chunk_app.py @@ -311,7 +311,7 @@ async def retrieval_test(): doc_ids = None elif meta_data_filter.get("method") == "manual": doc_ids.extend(meta_filter(metas, meta_data_filter["manual"], meta_data_filter.get("logic", "and"))) - if not doc_ids: + if meta_data_filter["manual"] and not doc_ids: doc_ids = ["-999"] try: diff --git a/api/apps/sdk/doc.py b/api/apps/sdk/doc.py index f507c3abf..30fbd835e 100644 --- a/api/apps/sdk/doc.py +++ b/api/apps/sdk/doc.py @@ -1445,7 +1445,7 @@ async def retrieval_test(tenant_id): metadata_condition = req.get("metadata_condition", {}) or {} metas = DocumentService.get_meta_by_kbs(kb_ids) doc_ids = meta_filter(metas, convert_conditions(metadata_condition), metadata_condition.get("logic", "and")) - if not doc_ids: + if metadata_condition and not doc_ids: doc_ids = ["-999"] similarity_threshold = float(req.get("similarity_threshold", 0.2)) vector_similarity_weight = float(req.get("vector_similarity_weight", 0.3)) diff --git a/api/apps/sdk/session.py b/api/apps/sdk/session.py index c43292fbb..a8b2712c0 100644 --- a/api/apps/sdk/session.py +++ b/api/apps/sdk/session.py @@ -981,7 +981,7 @@ async def retrieval_test_embedded(): doc_ids = None elif meta_data_filter.get("method") == "manual": doc_ids.extend(meta_filter(metas, meta_data_filter["manual"], meta_data_filter.get("logic", "and"))) - if not doc_ids: + if meta_data_filter["manual"] and not doc_ids: doc_ids = ["-999"] try: diff --git a/api/db/services/dialog_service.py b/api/db/services/dialog_service.py index 2bbe916de..0a09ea532 100644 --- a/api/db/services/dialog_service.py +++ b/api/db/services/dialog_service.py @@ -415,8 +415,9 @@ def chat(dialog, messages, stream=True, **kwargs): if not attachments: attachments = None elif dialog.meta_data_filter.get("method") == "manual": - attachments.extend(meta_filter(metas, dialog.meta_data_filter["manual"], dialog.meta_data_filter.get("logic", "and"))) - if not attachments: + conds = dialog.meta_data_filter["manual"] + attachments.extend(meta_filter(metas, conds, dialog.meta_data_filter.get("logic", "and"))) + if conds and not attachments: attachments = ["-999"] if prompt_config.get("keyword", False): @@ -787,7 +788,7 @@ def ask(question, kb_ids, tenant_id, chat_llm_name=None, search_config={}): doc_ids = None elif meta_data_filter.get("method") == "manual": doc_ids.extend(meta_filter(metas, meta_data_filter["manual"], meta_data_filter.get("logic", "and"))) - if not doc_ids: + if meta_data_filter["manual"] and not doc_ids: doc_ids = ["-999"] kbinfos = retriever.retrieval( @@ -862,7 +863,7 @@ def gen_mindmap(question, kb_ids, tenant_id, search_config={}): doc_ids = None elif meta_data_filter.get("method") == "manual": doc_ids.extend(meta_filter(metas, meta_data_filter["manual"], meta_data_filter.get("logic", "and"))) - if not doc_ids: + if meta_data_filter["manual"] and not doc_ids: doc_ids = ["-999"] ranks = settings.retriever.retrieval(