diff --git a/graphrag/query/structured_search/global_search/search.py b/graphrag/query/structured_search/global_search/search.py index 3b52ecbd8c..1aa32cf1e6 100644 --- a/graphrag/query/structured_search/global_search/search.py +++ b/graphrag/query/structured_search/global_search/search.py @@ -6,6 +6,7 @@ import asyncio import json import logging +import re import time from dataclasses import dataclass from typing import Any @@ -229,7 +230,15 @@ def parse_search_response(self, search_response: str) -> list[dict[str, Any]]: list[dict[str, Any]] A list of key points, each key point is a dictionary with "answer" and "score" keys """ - parsed_elements = json.loads(search_response)["points"] + json_match = re.search(r"\{.*\}", search_response, re.DOTALL) + + if not json_match: + msg = "No JSON object found in search response" + raise ValueError(msg) + + json_str = json_match.group(0) + + parsed_elements = json.loads(json_str)["points"] return [ { "answer": element["description"],