From 0148ddf350565034db13bd1e49983ca10c23406a Mon Sep 17 00:00:00 2001 From: suhaniiz Date: Tue, 7 Jul 2026 22:02:27 +0530 Subject: [PATCH] fix: resolve redundant type casting and potential ValueError in weight accumulation (#804) --- backend/app/rag/graph_retriever.py | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/backend/app/rag/graph_retriever.py b/backend/app/rag/graph_retriever.py index 39841aa1..2ff1eca2 100644 --- a/backend/app/rag/graph_retriever.py +++ b/backend/app/rag/graph_retriever.py @@ -96,7 +96,15 @@ def get_entity_context( "pages": set(), }, ) - existing["weight"] = int(existing["weight"]) + int(edge.get("weight", 1)) + # Safely extract the raw weight, defaulting to 1 if missing or invalid + raw_weight = edge.get("weight", 1) + try: + # Convert to float first to handle decimals safely, then round/truncate if needed + weight_value = int(float(raw_weight)) if raw_weight is not None else 1 + except (ValueError, TypeError): + weight_value = 1 + + existing["weight"] += weight_value existing["pages"].update(edge.get("pages", [])) except Exception as exc: logger.warning("GraphRAG context retrieval failed: %s", exc) @@ -105,9 +113,10 @@ def get_entity_context( if not relationships: return "" + # Clean sorting without redundant typecasting overhead ranked = sorted( relationships.values(), - key=lambda item: int(item["weight"]), + key=lambda item: item["weight"], reverse=True, )[: settings.GRAPH_MAX_RELATIONSHIPS]