From 89d5b2414ecbcf24989fe98031ec5595bc51a1b6 Mon Sep 17 00:00:00 2001 From: Kevin Hu Date: Wed, 23 Oct 2024 10:12:39 +0800 Subject: [PATCH] fix SILICONFLOW rerank error (#2980) ### What problem does this PR solve? #2977 ### Type of change - [x] Bug Fix (non-breaking change which fixes an issue) --- api/apps/chunk_app.py | 23 +++++++++++++++++++++-- rag/llm/rerank_model.py | 3 +++ 2 files changed, 24 insertions(+), 2 deletions(-) diff --git a/api/apps/chunk_app.py b/api/apps/chunk_app.py index 0ce762a61..f79a3673e 100644 --- a/api/apps/chunk_app.py +++ b/api/apps/chunk_app.py @@ -320,9 +320,28 @@ def knowledge_graph(): for id in sres.ids[:2]: ty = sres.field[id]["knowledge_graph_kwd"] try: - obj[ty] = json.loads(sres.field[id]["content_with_weight"]) + content_json = json.loads(sres.field[id]["content_with_weight"]) except Exception as e: - print(traceback.format_exc(), flush=True) + continue + + if ty == 'mind_map': + node_dict = {} + + def repeat_deal(content_json, node_dict): + if 'id' in content_json: + if content_json['id'] in node_dict: + node_name = content_json['id'] + content_json['id'] += f"({node_dict[content_json['id']]})" + node_dict[node_name] += 1 + else: + node_dict[content_json['id']] = 1 + if 'children' in content_json and content_json['children']: + for item in content_json['children']: + repeat_deal(item, node_dict) + + repeat_deal(content_json, node_dict) + + obj[ty] = content_json return get_json_result(data=obj) diff --git a/rag/llm/rerank_model.py b/rag/llm/rerank_model.py index f68869c12..fc8f6fa03 100644 --- a/rag/llm/rerank_model.py +++ b/rag/llm/rerank_model.py @@ -344,6 +344,9 @@ class SILICONFLOWRerank(Base): self.base_url, json=payload, headers=self.headers ).json() rank = np.zeros(len(texts), dtype=float) + if "results" not in response: + return rank, 0 + for d in response["results"]: rank[d["index"]] = d["relevance_score"] return (