Skip to content

Commit a892fe4

Browse files
fix: Improve docs_metadata handling in OpenSearch component (langflow-ai#9991)
* Improve docs_metadata handling in OpenSearch component Updated the OpenSearchVectorStoreComponent to better process docs_metadata input, including support for Data objects and improved logging. Also modified input configuration and JWT token loading behavior for clarity and correctness. * Update opensearch.py * Update opensearch.py
1 parent fbad5fa commit a892fe4

1 file changed

Lines changed: 17 additions & 6 deletions

File tree

src/lfx/src/lfx/components/elastic/opensearch.py

Lines changed: 17 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@ class OpenSearchVectorStoreComponent(LCVectorStoreComponent):
8282
},
8383
],
8484
value=[],
85-
advanced=True,
85+
input_types=["Data"],
8686
),
8787
StrInput(
8888
name="opensearch_url",
@@ -206,7 +206,7 @@ class OpenSearchVectorStoreComponent(LCVectorStoreComponent):
206206
name="jwt_token",
207207
display_name="JWT Token",
208208
value="JWT",
209-
load_from_db=True,
209+
load_from_db=False,
210210
show=True,
211211
info=(
212212
"Valid JSON Web Token for authentication. "
@@ -464,10 +464,21 @@ def _add_documents_to_vector_store(self, client: OpenSearch) -> None:
464464
# Process docs_metadata table input into a dict
465465
additional_metadata = {}
466466
if hasattr(self, "docs_metadata") and self.docs_metadata:
467-
for item in self.docs_metadata:
468-
if isinstance(item, dict) and "key" in item and "value" in item:
469-
additional_metadata[item["key"]] = item["value"]
470-
467+
logger.debug(f"[LF] Docs metadata {self.docs_metadata}")
468+
if isinstance(self.docs_metadata[-1], Data):
469+
logger.debug(f"[LF] Docs metadata is a Data object {self.docs_metadata}")
470+
self.docs_metadata = self.docs_metadata[-1].data
471+
logger.debug(f"[LF] Docs metadata is a Data object {self.docs_metadata}")
472+
additional_metadata.update(self.docs_metadata)
473+
else:
474+
for item in self.docs_metadata:
475+
if isinstance(item, dict) and "key" in item and "value" in item:
476+
additional_metadata[item["key"]] = item["value"]
477+
# Replace string "None" values with actual None
478+
for key, value in additional_metadata.items():
479+
if value == "None":
480+
additional_metadata[key] = None
481+
logger.debug(f"[LF] Additional metadata {additional_metadata}")
471482
for doc_obj in docs:
472483
data_copy = json.loads(doc_obj.model_dump_json())
473484
text = data_copy.pop(doc_obj.text_key, doc_obj.default_value)

0 commit comments

Comments
 (0)