From 228d3cc74f4276b0c8f1815ce28dd6880d50f9d0 Mon Sep 17 00:00:00 2001 From: Gene Ruebsamen Date: Wed, 5 Mar 2025 22:01:50 +0000 Subject: [PATCH 1/2] fix metadata filtering on Weaviate --- .../nodes/vectorstores/Weaviate/Weaviate.ts | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/packages/components/nodes/vectorstores/Weaviate/Weaviate.ts b/packages/components/nodes/vectorstores/Weaviate/Weaviate.ts index 85e66fb46a4..ba8269155f9 100644 --- a/packages/components/nodes/vectorstores/Weaviate/Weaviate.ts +++ b/packages/components/nodes/vectorstores/Weaviate/Weaviate.ts @@ -279,7 +279,24 @@ class Weaviate_VectorStores implements INode { if (weaviateTextKey) obj.textKey = weaviateTextKey if (weaviateMetadataKeys) obj.metadataKeys = JSON.parse(weaviateMetadataKeys.replace(/\s/g, '')) if (weaviateFilter) { - weaviateFilter = typeof weaviateFilter === 'object' ? weaviateFilter : JSON.parse(weaviateFilter) + // Parse the filter if it's a string + const parsedFilter = typeof weaviateFilter === 'object' ? weaviateFilter : JSON.parse(weaviateFilter) + + // Convert simple {key:value} format to Weaviate's expected filter structure + if (parsedFilter && typeof parsedFilter === 'object') { + // Handle the first key-value pair in the filter object + const entries = Object.entries(parsedFilter) + if (entries.length > 0) { + const [key, value] = entries[0] + weaviateFilter = { + where: { + operator: "Equal", + path: [key], + valueText: String(value) + } + } + } + } } const vectorStore = (await WeaviateStore.fromExistingIndex(embeddings, obj)) as unknown as VectorStore From 452479752d0edefc6fb93536712323666c5f5c93 Mon Sep 17 00:00:00 2001 From: Gene Ruebsamen Date: Wed, 5 Mar 2025 22:06:32 +0000 Subject: [PATCH 2/2] linting --- packages/components/nodes/vectorstores/Weaviate/Weaviate.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/components/nodes/vectorstores/Weaviate/Weaviate.ts b/packages/components/nodes/vectorstores/Weaviate/Weaviate.ts index ba8269155f9..83849a7e461 100644 --- a/packages/components/nodes/vectorstores/Weaviate/Weaviate.ts +++ b/packages/components/nodes/vectorstores/Weaviate/Weaviate.ts @@ -290,7 +290,7 @@ class Weaviate_VectorStores implements INode { const [key, value] = entries[0] weaviateFilter = { where: { - operator: "Equal", + operator: 'Equal', path: [key], valueText: String(value) }