From 3d76f10a91c3ae56301eb3817b002cc82b03f442 Mon Sep 17 00:00:00 2001 From: Zhichang Yu Date: Tue, 10 Dec 2024 18:28:56 +0800 Subject: [PATCH] Fixed retrieval TypeError: unhashable type: 'list' (#3966) ### What problem does this PR solve? Fixed retrieval TypeError: unhashable type: 'list' ### Type of change - [x] Bug Fix (non-breaking change which fixes an issue) --- rag/utils/infinity_conn.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/rag/utils/infinity_conn.py b/rag/utils/infinity_conn.py index 227c0bc6a..ba1ae2ff3 100644 --- a/rag/utils/infinity_conn.py +++ b/rag/utils/infinity_conn.py @@ -350,8 +350,9 @@ class InfinityConnection(DocStoreConnection): assert "_id" not in d assert "id" in d for k, v in d.items(): - if k.endswith("_kwd") and isinstance(v, list): - d[k] = " ".join(v) + if k in ["important_kwd", "question_kwd", "entities_kwd"]: + assert isinstance(v, list) + d[k] = "###".join(v) elif k == 'kb_id': if isinstance(d[k], list): d[k] = d[k][0] # since d[k] is a list, but we need a str @@ -443,9 +444,9 @@ class InfinityConnection(DocStoreConnection): v = res[fieldnm][i] if isinstance(v, Series): v = list(v) - elif fieldnm.endswith("_kwd"): + elif fieldnm in ["important_kwd", "question_kwd", "entities_kwd"]: assert isinstance(v, str) - v = v.split() + v = [kwd for kwd in v.split("###") if kwd] elif fieldnm == "position_int": assert isinstance(v, str) if v: