From f8b15df74c953762fefe118b9ea3a9f1dc787f8b Mon Sep 17 00:00:00 2001 From: LarFii <834462287@qq.com> Date: Thu, 14 Nov 2024 15:59:37 +0800 Subject: [PATCH] fix cache bug --- lightrag/__init__.py | 2 +- lightrag/operate.py | 24 ++++++++++++++++++------ lightrag/utils.py | 18 ++++++++++++------ 3 files changed, 31 insertions(+), 13 deletions(-) diff --git a/lightrag/__init__.py b/lightrag/__init__.py index 6d9003ff..c8b61765 100644 --- a/lightrag/__init__.py +++ b/lightrag/__init__.py @@ -1,5 +1,5 @@ from .lightrag import LightRAG as LightRAG, QueryParam as QueryParam -__version__ = "1.0.0" +__version__ = "1.0.1" __author__ = "Zirui Guo" __url__ = "https://github.com/HKUDS/LightRAG" diff --git a/lightrag/operate.py b/lightrag/operate.py index db7c9401..b11e14fe 100644 --- a/lightrag/operate.py +++ b/lightrag/operate.py @@ -630,10 +630,16 @@ async def _find_most_related_edges_from_entities( all_related_edges = await asyncio.gather( *[knowledge_graph_inst.get_node_edges(dp["entity_name"]) for dp in node_datas] ) - all_edges = set() + all_edges = [] + seen = set() + for this_edges in all_related_edges: - all_edges.update([tuple(sorted(e)) for e in this_edges]) - all_edges = list(all_edges) + for e in this_edges: + sorted_edge = tuple(sorted(e)) + if sorted_edge not in seen: + seen.add(sorted_edge) + all_edges.append(sorted_edge) + all_edges_pack = await asyncio.gather( *[knowledge_graph_inst.get_edge(e[0], e[1]) for e in all_edges] ) @@ -833,10 +839,16 @@ async def _find_most_related_entities_from_relationships( query_param: QueryParam, knowledge_graph_inst: BaseGraphStorage, ): - entity_names = set() + entity_names = [] + seen = set() + for e in edge_datas: - entity_names.add(e["src_id"]) - entity_names.add(e["tgt_id"]) + if e["src_id"] not in seen: + entity_names.append(e["src_id"]) + seen.add(e["src_id"]) + if e["tgt_id"] not in seen: + entity_names.append(e["tgt_id"]) + seen.add(e["tgt_id"]) node_datas = await asyncio.gather( *[knowledge_graph_inst.get_node(entity_name) for entity_name in entity_names] diff --git a/lightrag/utils.py b/lightrag/utils.py index 104c9fec..a849f804 100644 --- a/lightrag/utils.py +++ b/lightrag/utils.py @@ -274,13 +274,19 @@ def process_combine_contexts(hl, ll): if list_ll: list_ll = [",".join(item[1:]) for item in list_ll if item] - combined_sources_set = set(filter(None, list_hl + list_ll)) + combined_sources = [] + seen = set() - combined_sources = [",\t".join(header)] + for item in list_hl + list_ll: + if item and item not in seen: + combined_sources.append(item) + seen.add(item) - for i, item in enumerate(combined_sources_set, start=1): - combined_sources.append(f"{i},\t{item}") + combined_sources_result = [",\t".join(header)] - combined_sources = "\n".join(combined_sources) + for i, item in enumerate(combined_sources, start=1): + combined_sources_result.append(f"{i},\t{item}") - return combined_sources + combined_sources_result = "\n".join(combined_sources_result) + + return combined_sources_result