From 767de070b231fb328b6c0640c2e002c9c7af0a83 Mon Sep 17 00:00:00 2001
From: Chris Pang <chrispangg@gmail.com>
Date: Fri, 17 May 2024 15:20:01 +1200
Subject: [PATCH] Allow querying AzureAISearch without non-null metadata field
 (#13531)

---
 .../llama_index/vector_stores/azureaisearch/base.py  | 12 ++++++++----
 .../pyproject.toml                                   |  2 +-
 2 files changed, 9 insertions(+), 5 deletions(-)

diff --git a/llama-index-integrations/vector_stores/llama-index-vector-stores-azureaisearch/llama_index/vector_stores/azureaisearch/base.py b/llama-index-integrations/vector_stores/llama-index-vector-stores-azureaisearch/llama_index/vector_stores/azureaisearch/base.py
index 1f0638b1e8..0809d8aed4 100644
--- a/llama-index-integrations/vector_stores/llama-index-vector-stores-azureaisearch/llama_index/vector_stores/azureaisearch/base.py
+++ b/llama-index-integrations/vector_stores/llama-index-vector-stores-azureaisearch/llama_index/vector_stores/azureaisearch/base.py
@@ -51,7 +51,8 @@ class IndexManagement(int, enum.Enum):
 
 
 class AzureAISearchVectorStore(BasePydanticVectorStore):
-    """Azure AI Search vector store.
+    """
+    Azure AI Search vector store.
 
     Examples:
         `pip install llama-index-vector-stores-azureaisearch`
@@ -495,7 +496,8 @@ class AzureAISearchVectorStore(BasePydanticVectorStore):
         nodes: List[BaseNode],
         **add_kwargs: Any,
     ) -> List[str]:
-        """Add nodes to index associated with the configured search client.
+        """
+        Add nodes to index associated with the configured search client.
 
         Args:
             nodes: List[BaseNode]: nodes with embeddings
@@ -678,7 +680,8 @@ class AzureQueryResultSearchBase:
         score_result = []
         for result in results:
             node_id = result[self._field_mapping["id"]]
-            metadata = json.loads(result[self._field_mapping["metadata"]])
+            metadata_str = result[self._field_mapping["metadata"]]
+            metadata = json.loads(metadata_str) if metadata_str else {}
             score = result["@search.score"]
             chunk = result[self._field_mapping["chunk"]]
 
@@ -795,7 +798,8 @@ class AzureQueryResultSearchSemanticHybrid(AzureQueryResultSearchHybrid):
         score_result = []
         for result in results:
             node_id = result[self._field_mapping["id"]]
-            metadata = json.loads(result[self._field_mapping["metadata"]])
+            metadata_str = result[self._field_mapping["metadata"]]
+            metadata = json.loads(metadata_str) if metadata_str else {}
             # use reranker_score instead of score
             score = result["@search.reranker_score"]
             chunk = result[self._field_mapping["chunk"]]
diff --git a/llama-index-integrations/vector_stores/llama-index-vector-stores-azureaisearch/pyproject.toml b/llama-index-integrations/vector_stores/llama-index-vector-stores-azureaisearch/pyproject.toml
index e277a1b543..e0bc6ecd3e 100644
--- a/llama-index-integrations/vector_stores/llama-index-vector-stores-azureaisearch/pyproject.toml
+++ b/llama-index-integrations/vector_stores/llama-index-vector-stores-azureaisearch/pyproject.toml
@@ -28,7 +28,7 @@ exclude = ["**/BUILD"]
 license = "MIT"
 name = "llama-index-vector-stores-azureaisearch"
 readme = "README.md"
-version = "0.1.6"
+version = "0.1.7"
 
 [tool.poetry.dependencies]
 python = ">=3.8.1,<4.0"
-- 
GitLab