From 0a59483eeb00a4e1a791c531e557386352f12d53 Mon Sep 17 00:00:00 2001 From: Seif Date: Tue, 12 Sep 2023 10:07:40 -0700 Subject: [PATCH] Update langchainjs --- .../vectorstores/Vectara/Vectara_Existing.ts | 2 +- .../vectorstores/Vectara/Vectara_Upload.ts | 27 +++++++++++++++---- .../vectorstores/Vectara/Vectara_Upsert.ts | 2 +- packages/components/package.json | 2 +- 4 files changed, 25 insertions(+), 8 deletions(-) diff --git a/packages/components/nodes/vectorstores/Vectara/Vectara_Existing.ts b/packages/components/nodes/vectorstores/Vectara/Vectara_Existing.ts index 3ef04f07..122fcbd2 100644 --- a/packages/components/nodes/vectorstores/Vectara/Vectara_Existing.ts +++ b/packages/components/nodes/vectorstores/Vectara/Vectara_Existing.ts @@ -92,7 +92,7 @@ class VectaraExisting_VectorStores implements INode { const credentialData = await getCredentialData(nodeData.credential ?? '', options) const apiKey = getCredentialParam('apiKey', credentialData, nodeData) const customerId = getCredentialParam('customerID', credentialData, nodeData) - const corpusId = getCredentialParam('corpusID', credentialData, nodeData) + const corpusId = getCredentialParam('corpusID', credentialData, nodeData).split(',') const vectaraMetadataFilter = nodeData.inputs?.filter as string const sentencesBefore = nodeData.inputs?.sentencesBefore as number diff --git a/packages/components/nodes/vectorstores/Vectara/Vectara_Upload.ts b/packages/components/nodes/vectorstores/Vectara/Vectara_Upload.ts index 048b9288..d957bc1b 100644 --- a/packages/components/nodes/vectorstores/Vectara/Vectara_Upload.ts +++ b/packages/components/nodes/vectorstores/Vectara/Vectara_Upload.ts @@ -1,6 +1,6 @@ import { ICommonObject, INode, INodeData, INodeOutputsValue, INodeParams } from '../../../src/Interface' import { getBaseClasses, getCredentialData, getCredentialParam } from '../../../src/utils' -import { VectaraStore, VectaraLibArgs, VectaraFilter, VectaraContextConfig } from 'langchain/vectorstores/vectara' +import { VectaraStore, VectaraLibArgs, VectaraFilter, VectaraContextConfig, VectaraFile } from 'langchain/vectorstores/vectara' class VectaraUpload_VectorStores implements INode { label: string @@ -99,7 +99,7 @@ class VectaraUpload_VectorStores implements INode { const credentialData = await getCredentialData(nodeData.credential ?? '', options) const apiKey = getCredentialParam('apiKey', credentialData, nodeData) const customerId = getCredentialParam('customerID', credentialData, nodeData) - const corpusId = getCredentialParam('corpusID', credentialData, nodeData) + const corpusId = getCredentialParam('corpusID', credentialData, nodeData).split(',') const fileBase64 = nodeData.inputs?.file const vectaraMetadataFilter = nodeData.inputs?.filter as string @@ -133,17 +133,17 @@ class VectaraUpload_VectorStores implements INode { files = [fileBase64] } - const blobs: Blob[] = [] + const vectaraFiles: VectaraFile[] = [] for (const file of files) { const splitDataURI = file.split(',') splitDataURI.pop() const bf = Buffer.from(splitDataURI.pop() || '', 'base64') const blob = new Blob([bf]) - blobs.push(blob) + vectaraFiles.push({ blob: blob, fileName: getFileName(file) }) } const vectorStore = new VectaraStore(vectaraArgs) - const res = await vectorStore.addFiles(blobs) + await vectorStore.addFiles(vectaraFiles) files = [] if (output === 'retriever') { @@ -157,4 +157,21 @@ class VectaraUpload_VectorStores implements INode { } } +const getFileName = (fileBase64: string) => { + let fileNames = [] + if (fileBase64.startsWith('[') && fileBase64.endsWith(']')) { + const files = JSON.parse(fileBase64) + for (const file of files) { + const splitDataURI = file.split(',') + const filename = splitDataURI[splitDataURI.length - 1].split(':')[1] + fileNames.push(filename) + } + return fileNames.join(', ') + } else { + const splitDataURI = fileBase64.split(',') + const filename = splitDataURI[splitDataURI.length - 1].split(':')[1] + return filename + } +} + module.exports = { nodeClass: VectaraUpload_VectorStores } diff --git a/packages/components/nodes/vectorstores/Vectara/Vectara_Upsert.ts b/packages/components/nodes/vectorstores/Vectara/Vectara_Upsert.ts index 51fb67ed..9918fff2 100644 --- a/packages/components/nodes/vectorstores/Vectara/Vectara_Upsert.ts +++ b/packages/components/nodes/vectorstores/Vectara/Vectara_Upsert.ts @@ -101,7 +101,7 @@ class VectaraUpsert_VectorStores implements INode { const credentialData = await getCredentialData(nodeData.credential ?? '', options) const apiKey = getCredentialParam('apiKey', credentialData, nodeData) const customerId = getCredentialParam('customerID', credentialData, nodeData) - const corpusId = getCredentialParam('corpusID', credentialData, nodeData) + const corpusId = getCredentialParam('corpusID', credentialData, nodeData).split(',') const docs = nodeData.inputs?.document as Document[] const embeddings = {} as Embeddings diff --git a/packages/components/package.json b/packages/components/package.json index 1837609e..85c0dad9 100644 --- a/packages/components/package.json +++ b/packages/components/package.json @@ -41,7 +41,7 @@ "google-auth-library": "^9.0.0", "graphql": "^16.6.0", "html-to-text": "^9.0.5", - "langchain": "^0.0.133", + "langchain": "^0.0.147", "linkifyjs": "^4.1.1", "mammoth": "^1.5.1", "moment": "^2.29.3",