From 568322aeaf75c18090a1ffa9aabdb0c60ec48be2 Mon Sep 17 00:00:00 2001 From: Kung Quang <1468667058@qq.com> Date: Tue, 19 Nov 2024 14:36:10 +0800 Subject: [PATCH] fix(rag): fix error in viewing document chunk and cannot start task_executor server (#3481) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ### What problem does this PR solve? 1. Fix error in viewing document chunk  Pasted Graphic Viewing document chunk details in a BeartypeCallHintParamViolation error. Traceback (most recent call last): File "ragflow/.venv/lib/python3.12/site-packages/flask/app.py", line 880, in full_dispatch_request rv = self.dispatch_request() ^^^^^^^^^^^^^^^^^^^^^^^ File "ragflow/.venv/lib/python3.12/site-packages/flask/app.py", line 865, in dispatch_request return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args) # type: ignore[no-any-return] ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "ragflow/.venv/lib/python3.12/site-packages/flask_login/utils.py", line 290, in decorated_view return current_app.ensure_sync(func)(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "ragflow/api/apps/chunk_app.py", line 311, in knowledge_graph sres = settings.retrievaler.search(req, search.index_name(tenant_id), kb_ids) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "<@beartype(rag.nlp.search.Dealer.search) at 0x3381fd800>", line 39, in search beartype.roar.BeartypeCallHintParamViolation: Method rag.nlp.search.Dealer.search() parameter idx_names='ragflow_0e1e67f431d711ef98fc00155d29195d' violates type hint list[str], as str 'ragflow_0e1e67f431d711ef98fc00155d29195d' not instance of list. 2024-11-19 11:30:29,817 ERROR 91013 Method rag.nlp.search.Dealer.search() parameter idx_names='ragflow_0e1e67f431d711ef98fc00155d29195d' violates type hint list[str], as str 'ragflow_0e1e67f431d711ef98fc00155d29195d' not instance of list. Traceback (most recent call last): File "ragflow/api/apps/chunk_app.py", line 60, in list_chunk sres = settings.retrievaler.search(query, search.index_name(tenant_id), kb_ids, highlight=True) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "<@beartype(rag.nlp.search.Dealer.search) at 0x3381fd800>", line 39, in search beartype.roar.BeartypeCallHintParamViolation: Method rag.nlp.search.Dealer.search() parameter idx_names='ragflow_0e1e67f431d711ef98fc00155d29195d' violates type hint list[str], as str 'ragflow_0e1e67f431d711ef98fc00155d29195d' not instance of list. because in nlp/search.py,the idx_names is only list  Pasted Graphic 2 but the DocStoreConnection.search method accept list or str Pasted Graphic 3  and his implements also list and str es_conn.py  Pasted Graphic 4 infinity_conn.py  Pasted Graphic 5 2. Fix cannot star task_executor server with Unresolved reference 'Mapping' Pasted Graphic 6 ### Type of change - [X] Bug Fix (non-breaking change which fixes an issue) - [ ] New Feature (non-breaking change which adds functionality) - [ ] Documentation Update - [ ] Refactoring - [ ] Performance Improvement - [ ] Other (please describe): --- rag/nlp/search.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rag/nlp/search.py b/rag/nlp/search.py index 92c6ccf27..e7b700903 100644 --- a/rag/nlp/search.py +++ b/rag/nlp/search.py @@ -61,7 +61,7 @@ class Dealer: condition[key] = req[key] return condition - def search(self, req, idx_names: list[str], kb_ids: list[str], emb_mdl=None, highlight = False): + def search(self, req, idx_names: str | list[str], kb_ids: list[str], emb_mdl=None, highlight = False): filters = self.get_filters(req) orderBy = OrderByExpr()