From 86e09d726ab54715f3b91207e2f16bc8ebe25a98 Mon Sep 17 00:00:00 2001 From: Pooria Arab <42897904+pooriaarab@users.noreply.github.com> Date: Tue, 5 Sep 2023 11:23:08 -0700 Subject: [PATCH 1/4] Update Chroma_Existing.ts to add metadatafilter --- .../nodes/vectorstores/Chroma/Chroma_Existing.ts | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/packages/components/nodes/vectorstores/Chroma/Chroma_Existing.ts b/packages/components/nodes/vectorstores/Chroma/Chroma_Existing.ts index f55faa40..1d360182 100644 --- a/packages/components/nodes/vectorstores/Chroma/Chroma_Existing.ts +++ b/packages/components/nodes/vectorstores/Chroma/Chroma_Existing.ts @@ -51,6 +51,13 @@ class Chroma_Existing_VectorStores implements INode { type: 'string', optional: true }, + { + label: 'Chroma Metadata Filter', + name: 'chromaMetadataFilter', + type: 'json', + optional: true, + additionalParams: true + }, { label: 'Top K', name: 'topK', @@ -86,13 +93,18 @@ class Chroma_Existing_VectorStores implements INode { const credentialData = await getCredentialData(nodeData.credential ?? '', options) const chromaApiKey = getCredentialParam('chromaApiKey', credentialData, nodeData) + const chromaMetadataFilter = nodeData.inputs?.chromaMetadataFilter; + const metadataFilter = chromaMetadataFilter ? JSON.parse(chromaMetadataFilter) : {}; + const obj: { collectionName: string url?: string chromaApiKey?: string + metadataFilter?: any } = { collectionName } if (chromaURL) obj.url = chromaURL if (chromaApiKey) obj.chromaApiKey = chromaApiKey + if (chromaMetadataFilter) obj.metadataFilter = metadataFilter const vectorStore = await ChromaExtended.fromExistingCollection(embeddings, obj) From bf459bf5abb507df9e3d7b4c22ce92ac93b4d91d Mon Sep 17 00:00:00 2001 From: Pooria Arab <42897904+pooriaarab@users.noreply.github.com> Date: Thu, 7 Sep 2023 08:00:09 -0700 Subject: [PATCH 2/4] Update Chroma_Existing.ts - first OSS PR that works!! --- .../nodes/vectorstores/Chroma/Chroma_Existing.ts | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/packages/components/nodes/vectorstores/Chroma/Chroma_Existing.ts b/packages/components/nodes/vectorstores/Chroma/Chroma_Existing.ts index 1d360182..30662d61 100644 --- a/packages/components/nodes/vectorstores/Chroma/Chroma_Existing.ts +++ b/packages/components/nodes/vectorstores/Chroma/Chroma_Existing.ts @@ -93,18 +93,20 @@ class Chroma_Existing_VectorStores implements INode { const credentialData = await getCredentialData(nodeData.credential ?? '', options) const chromaApiKey = getCredentialParam('chromaApiKey', credentialData, nodeData) - const chromaMetadataFilter = nodeData.inputs?.chromaMetadataFilter; - const metadataFilter = chromaMetadataFilter ? JSON.parse(chromaMetadataFilter) : {}; + const chromaMetadataFilter = nodeData.inputs?.chromaMetadataFilter + const metadataFilter = chromaMetadataFilter ? JSON.parse(chromaMetadataFilter) : {} const obj: { collectionName: string url?: string chromaApiKey?: string - metadataFilter?: any + filter?: object | undefined } = { collectionName } if (chromaURL) obj.url = chromaURL - if (chromaApiKey) obj.chromaApiKey = chromaApiKey - if (chromaMetadataFilter) obj.metadataFilter = metadataFilter + if (chromaMetadataFilter) { + const metadatafilter = typeof chromaMetadataFilter === 'object' ? chromaMetadataFilter : JSON.parse(chromaMetadataFilter) + obj.filter = metadatafilter + } const vectorStore = await ChromaExtended.fromExistingCollection(embeddings, obj) From f9f18b6d2c7631b6e2e97b0f54d2a0c39a7e1173 Mon Sep 17 00:00:00 2001 From: Henry Heng Date: Fri, 8 Sep 2023 14:32:46 +0100 Subject: [PATCH 3/4] Update Chroma_Existing.ts add accidentally removed chromaApiKey --- packages/components/nodes/vectorstores/Chroma/Chroma_Existing.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/components/nodes/vectorstores/Chroma/Chroma_Existing.ts b/packages/components/nodes/vectorstores/Chroma/Chroma_Existing.ts index 30662d61..e268434c 100644 --- a/packages/components/nodes/vectorstores/Chroma/Chroma_Existing.ts +++ b/packages/components/nodes/vectorstores/Chroma/Chroma_Existing.ts @@ -103,6 +103,7 @@ class Chroma_Existing_VectorStores implements INode { filter?: object | undefined } = { collectionName } if (chromaURL) obj.url = chromaURL + if (chromaApiKey) obj.chromaApiKey = chromaApiKey if (chromaMetadataFilter) { const metadatafilter = typeof chromaMetadataFilter === 'object' ? chromaMetadataFilter : JSON.parse(chromaMetadataFilter) obj.filter = metadatafilter From ba9c1cd5682f3a120f56246c058fb7b35cdf6fcf Mon Sep 17 00:00:00 2001 From: Henry Heng Date: Fri, 8 Sep 2023 14:34:07 +0100 Subject: [PATCH 4/4] Update Chroma_Existing.ts remove not needed code --- packages/components/nodes/vectorstores/Chroma/Chroma_Existing.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/components/nodes/vectorstores/Chroma/Chroma_Existing.ts b/packages/components/nodes/vectorstores/Chroma/Chroma_Existing.ts index e268434c..ff929ef1 100644 --- a/packages/components/nodes/vectorstores/Chroma/Chroma_Existing.ts +++ b/packages/components/nodes/vectorstores/Chroma/Chroma_Existing.ts @@ -94,7 +94,6 @@ class Chroma_Existing_VectorStores implements INode { const chromaApiKey = getCredentialParam('chromaApiKey', credentialData, nodeData) const chromaMetadataFilter = nodeData.inputs?.chromaMetadataFilter - const metadataFilter = chromaMetadataFilter ? JSON.parse(chromaMetadataFilter) : {} const obj: { collectionName: string