Merge pull request #2322 from danielaskdd/fix-delete
Fix: Remove Duplicate Entity/Realtion Tracking Deletion in adelete_by_doc_id
This commit is contained in:
commit
366a1e0f5f
1 changed files with 17 additions and 24 deletions
|
|
@ -3235,38 +3235,31 @@ class LightRAG:
|
||||||
|
|
||||||
if entity_chunk_updates and self.entity_chunks:
|
if entity_chunk_updates and self.entity_chunks:
|
||||||
entity_upsert_payload = {}
|
entity_upsert_payload = {}
|
||||||
entity_delete_ids: set[str] = set()
|
|
||||||
for entity_name, remaining in entity_chunk_updates.items():
|
for entity_name, remaining in entity_chunk_updates.items():
|
||||||
if not remaining:
|
if not remaining:
|
||||||
entity_delete_ids.add(entity_name)
|
# Empty entities are deleted alongside graph nodes later
|
||||||
else:
|
continue
|
||||||
entity_upsert_payload[entity_name] = {
|
entity_upsert_payload[entity_name] = {
|
||||||
"chunk_ids": remaining,
|
"chunk_ids": remaining,
|
||||||
"count": len(remaining),
|
"count": len(remaining),
|
||||||
"updated_at": current_time,
|
"updated_at": current_time,
|
||||||
}
|
}
|
||||||
|
|
||||||
if entity_delete_ids:
|
|
||||||
await self.entity_chunks.delete(list(entity_delete_ids))
|
|
||||||
if entity_upsert_payload:
|
if entity_upsert_payload:
|
||||||
await self.entity_chunks.upsert(entity_upsert_payload)
|
await self.entity_chunks.upsert(entity_upsert_payload)
|
||||||
|
|
||||||
if relation_chunk_updates and self.relation_chunks:
|
if relation_chunk_updates and self.relation_chunks:
|
||||||
relation_upsert_payload = {}
|
relation_upsert_payload = {}
|
||||||
relation_delete_ids: set[str] = set()
|
|
||||||
for edge_tuple, remaining in relation_chunk_updates.items():
|
for edge_tuple, remaining in relation_chunk_updates.items():
|
||||||
storage_key = make_relation_chunk_key(*edge_tuple)
|
|
||||||
if not remaining:
|
if not remaining:
|
||||||
relation_delete_ids.add(storage_key)
|
# Empty relations are deleted alongside graph edges later
|
||||||
else:
|
continue
|
||||||
relation_upsert_payload[storage_key] = {
|
storage_key = make_relation_chunk_key(*edge_tuple)
|
||||||
"chunk_ids": remaining,
|
relation_upsert_payload[storage_key] = {
|
||||||
"count": len(remaining),
|
"chunk_ids": remaining,
|
||||||
"updated_at": current_time,
|
"count": len(remaining),
|
||||||
}
|
"updated_at": current_time,
|
||||||
|
}
|
||||||
|
|
||||||
if relation_delete_ids:
|
|
||||||
await self.relation_chunks.delete(list(relation_delete_ids))
|
|
||||||
if relation_upsert_payload:
|
if relation_upsert_payload:
|
||||||
await self.relation_chunks.upsert(relation_upsert_payload)
|
await self.relation_chunks.upsert(relation_upsert_payload)
|
||||||
|
|
||||||
|
|
@ -3296,7 +3289,7 @@ class LightRAG:
|
||||||
# 6. Delete relationships that have no remaining sources
|
# 6. Delete relationships that have no remaining sources
|
||||||
if relationships_to_delete:
|
if relationships_to_delete:
|
||||||
try:
|
try:
|
||||||
# Delete from vector database
|
# Delete from relation vdb
|
||||||
rel_ids_to_delete = []
|
rel_ids_to_delete = []
|
||||||
for src, tgt in relationships_to_delete:
|
for src, tgt in relationships_to_delete:
|
||||||
rel_ids_to_delete.extend(
|
rel_ids_to_delete.extend(
|
||||||
|
|
@ -3401,7 +3394,7 @@ class LightRAG:
|
||||||
list(entities_to_delete)
|
list(entities_to_delete)
|
||||||
)
|
)
|
||||||
|
|
||||||
# Delete from vector database
|
# Delete from vector vdb
|
||||||
entity_vdb_ids = [
|
entity_vdb_ids = [
|
||||||
compute_mdhash_id(entity, prefix="ent-")
|
compute_mdhash_id(entity, prefix="ent-")
|
||||||
for entity in entities_to_delete
|
for entity in entities_to_delete
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue