diff --git a/api/apps/chunk_app.py b/api/apps/chunk_app.py index 1d21bc103..56f39d72a 100644 --- a/api/apps/chunk_app.py +++ b/api/apps/chunk_app.py @@ -60,6 +60,11 @@ def list_chunk(): sres = settings.retrievaler.search(query, search.index_name(tenant_id), kb_ids, highlight=True) res = {"total": sres.total, "chunks": [], "doc": doc.to_dict()} for id in sres.ids: + chunk_elem = sres.field[id] + if 'position_list' in chunk_elem: + if isinstance(chunk_elem["position_list"], str): + chunk_elem.pop('position_list') # Infinity will store position list as empty str + d = { "chunk_id": id, "content_with_weight": rmSpace(sres.highlight[id]) if question and id in sres.highlight else sres.field[ diff --git a/rag/utils/infinity_conn.py b/rag/utils/infinity_conn.py index 6f508e8bd..f6345d455 100644 --- a/rag/utils/infinity_conn.py +++ b/rag/utils/infinity_conn.py @@ -328,7 +328,7 @@ class InfinityConnection(DocStoreConnection): table_instance = db_instance.get_table(table_name) except InfinityException as e: # src/common/status.cppm, kTableNotExist = 3022 - if e.error_code != 3022: + if e.error_code != ErrorCode.TABLE_NOT_EXIST: raise vector_size = 0 patt = re.compile(r"q_(?P\d+)_vec") @@ -348,6 +348,9 @@ class InfinityConnection(DocStoreConnection): for k, v in d.items(): if k.endswith("_kwd") and isinstance(v, list): d[k] = " ".join(v) + if k == 'kb_id': + if isinstance(d[k], list): + d[k] = d[k][0] # since d[k] is a list, but we need a str ids = ["'{}'".format(d["id"]) for d in documents] str_ids = ", ".join(ids) str_filter = f"id IN ({str_ids})"