@n8n/n8n-nodes-langchain 2.2.2 → 2.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/nodes/agents/Agent/agents/ToolsAgent/V3/helpers/runAgent.js +4 -2
- package/dist/nodes/agents/Agent/agents/ToolsAgent/V3/helpers/runAgent.js.map +1 -1
- package/dist/nodes/mcp/McpClientTool/McpClientTool.node.js +14 -1
- package/dist/nodes/mcp/McpClientTool/McpClientTool.node.js.map +1 -1
- package/dist/nodes/tools/ToolCode/ToolCode.node.js +23 -32
- package/dist/nodes/tools/ToolCode/ToolCode.node.js.map +1 -1
- package/dist/nodes/trigger/ChatTrigger/constants.js +1 -11
- package/dist/nodes/trigger/ChatTrigger/constants.js.map +1 -1
- package/dist/nodes/vector_store/VectorStoreWeaviate/VectorStoreWeaviate.node.js +121 -11
- package/dist/nodes/vector_store/VectorStoreWeaviate/VectorStoreWeaviate.node.js.map +1 -1
- package/dist/types/nodes.json +2 -2
- package/dist/utils/agent-execution/buildSteps.js +2 -2
- package/dist/utils/agent-execution/buildSteps.js.map +1 -1
- package/dist/utils/agent-execution/memoryManagement.js +81 -6
- package/dist/utils/agent-execution/memoryManagement.js.map +1 -1
- package/dist/utils/output_parsers/N8nStructuredOutputParser.js +16 -1
- package/dist/utils/output_parsers/N8nStructuredOutputParser.js.map +1 -1
- package/package.json +11 -11
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../nodes/vector_store/VectorStoreWeaviate/VectorStoreWeaviate.node.ts"],"sourcesContent":["import type { Embeddings } from '@langchain/core/embeddings';\nimport { WeaviateStore } from '@langchain/weaviate';\nimport type { WeaviateLibArgs } from '@langchain/weaviate';\nimport type {\n\tIDataObject,\n\tINodeProperties,\n\tINodePropertyCollection,\n\tINodePropertyOptions,\n} from 'n8n-workflow';\nimport { type ProxiesParams, type TimeoutParams } from 'weaviate-client';\n\nimport type { WeaviateCompositeFilter, WeaviateCredential } from './Weaviate.utils';\nimport { createWeaviateClient, parseCompositeFilter } from './Weaviate.utils';\nimport { createVectorStoreNode } from '../shared/createVectorStoreNode/createVectorStoreNode';\nimport { weaviateCollectionsSearch } from '../shared/createVectorStoreNode/methods/listSearch';\nimport { weaviateCollectionRLC } from '../shared/descriptions';\n\nclass ExtendedWeaviateVectorStore extends WeaviateStore {\n\tprivate static defaultFilter: WeaviateCompositeFilter;\n\n\tstatic async fromExistingCollection(\n\t\tembeddings: Embeddings,\n\t\targs: WeaviateLibArgs,\n\t\tdefaultFilter?: WeaviateCompositeFilter,\n\t): Promise<WeaviateStore> {\n\t\tif (defaultFilter) {\n\t\t\tExtendedWeaviateVectorStore.defaultFilter = defaultFilter;\n\t\t}\n\t\treturn await super.fromExistingIndex(embeddings, args);\n\t}\n\n\tasync similaritySearchVectorWithScore(query: number[], k: number, filter?: IDataObject) {\n\t\tfilter = filter ?? ExtendedWeaviateVectorStore.defaultFilter;\n\t\tif (filter) {\n\t\t\tconst composedFilter = parseCompositeFilter(filter as WeaviateCompositeFilter);\n\t\t\treturn await super.similaritySearchVectorWithScore(query, k, composedFilter);\n\t\t} else {\n\t\t\treturn await super.similaritySearchVectorWithScore(query, k, undefined);\n\t\t}\n\t}\n}\n\nconst sharedFields: INodeProperties[] = [weaviateCollectionRLC];\n\nconst shared_options: Array<INodePropertyOptions | INodeProperties | INodePropertyCollection> = [\n\t{\n\t\tdisplayName: 'Tenant Name',\n\t\tname: 'tenant',\n\t\ttype: 'string',\n\t\tdefault: undefined,\n\t\tvalidateType: 'string',\n\t\tdescription: 'Tenant Name. Collection must have been created with tenant support enabled.',\n\t},\n\t{\n\t\tdisplayName: 'Text Key',\n\t\tname: 'textKey',\n\t\ttype: 'string',\n\t\tdefault: 'text',\n\t\tvalidateType: 'string',\n\t\tdescription: 'The key in the document that contains the embedded text',\n\t},\n\t{\n\t\tdisplayName: 'Skip Init Checks',\n\t\tname: 'skip_init_checks',\n\t\ttype: 'boolean',\n\t\tdefault: false,\n\t\tvalidateType: 'boolean',\n\t\tdescription: 'Whether to skip init checks while instantiating the client',\n\t},\n\t{\n\t\tdisplayName: 'Init Timeout',\n\t\tname: 'timeout_init',\n\t\ttype: 'number',\n\t\tdefault: 2,\n\t\tvalidateType: 'number',\n\t\tdescription: 'Number of timeout seconds for initial checks',\n\t},\n\t{\n\t\tdisplayName: 'Insert Timeout',\n\t\tname: 'timeout_insert',\n\t\ttype: 'number',\n\t\tdefault: 90,\n\t\tvalidateType: 'number',\n\t\tdescription: 'Number of timeout seconds for inserts',\n\t},\n\t{\n\t\tdisplayName: 'Query Timeout',\n\t\tname: 'timeout_query',\n\t\ttype: 'number',\n\t\tdefault: 30,\n\t\tvalidateType: 'number',\n\t\tdescription: 'Number of timeout seconds for queries',\n\t},\n\t{\n\t\tdisplayName: 'GRPC Proxy',\n\t\tname: 'proxy_grpc',\n\t\ttype: 'string',\n\t\tdefault: undefined,\n\t\tvalidateType: 'string',\n\t\tdescription: 'Proxy to use for GRPC',\n\t},\n];\n\nconst insertFields: INodeProperties[] = [\n\t{\n\t\tdisplayName: 'Options',\n\t\tname: 'options',\n\t\ttype: 'collection',\n\t\tplaceholder: 'Add Option',\n\t\tdefault: {},\n\t\toptions: [\n\t\t\t...shared_options,\n\t\t\t{\n\t\t\t\tdisplayName: 'Clear Data',\n\t\t\t\tname: 'clearStore',\n\t\t\t\ttype: 'boolean',\n\t\t\t\tdefault: false,\n\t\t\t\tdescription: 'Whether to clear the Collection/Tenant before inserting new data',\n\t\t\t},\n\t\t],\n\t},\n];\n\nconst retrieveFields: INodeProperties[] = [\n\t{\n\t\tdisplayName: 'Options',\n\t\tname: 'options',\n\t\ttype: 'collection',\n\t\tplaceholder: 'Add Option',\n\t\tdefault: {},\n\t\toptions: [\n\t\t\t{\n\t\t\t\tdisplayName: 'Search Filters',\n\t\t\t\tname: 'searchFilterJson',\n\t\t\t\ttype: 'json',\n\t\t\t\ttypeOptions: {\n\t\t\t\t\trows: 5,\n\t\t\t\t},\n\t\t\t\tdefault:\n\t\t\t\t\t'{\\n \"OR\": [\\n {\\n \"path\": [\"pdf_info_Author\"],\\n \"operator\": \"Equal\",\\n \"valueString\": \"Elis\"\\n },\\n {\\n \"path\": [\"pdf_info_Author\"],\\n \"operator\": \"Equal\",\\n \"valueString\": \"Pinnacle\"\\n } \\n ]\\n}',\n\t\t\t\tvalidateType: 'object',\n\t\t\t\tdescription:\n\t\t\t\t\t'Filter pageContent or metadata using this <a href=\"https://weaviate.io/\" target=\"_blank\">filtering syntax</a>',\n\t\t\t},\n\t\t\t{\n\t\t\t\tdisplayName: 'Metadata Keys',\n\t\t\t\tname: 'metadataKeys',\n\t\t\t\ttype: 'string',\n\t\t\t\tdefault: 'source,page',\n\t\t\t\tvalidateType: 'string',\n\t\t\t\tdescription: 'Select the metadata to retrieve along the content',\n\t\t\t},\n\t\t\t...shared_options,\n\t\t],\n\t},\n];\n\nexport class VectorStoreWeaviate extends createVectorStoreNode<ExtendedWeaviateVectorStore>({\n\tmeta: {\n\t\tdisplayName: 'Weaviate Vector Store',\n\t\tname: 'vectorStoreWeaviate',\n\t\tdescription: 'Work with your data in a Weaviate Cluster',\n\t\ticon: 'file:weaviate.svg',\n\t\tdocsUrl:\n\t\t\t'https://docs.n8n.io/integrations/builtin/cluster-nodes/root-nodes/n8n-nodes-langchain.vectorstoreweaviate/',\n\t\tcredentials: [\n\t\t\t{\n\t\t\t\tname: 'weaviateApi',\n\t\t\t\trequired: true,\n\t\t\t},\n\t\t],\n\t},\n\tmethods: {\n\t\tlistSearch: { weaviateCollectionsSearch },\n\t},\n\tloadFields: retrieveFields,\n\tinsertFields,\n\tsharedFields,\n\tretrieveFields,\n\tasync getVectorStoreClient(context, filter, embeddings, itemIndex) {\n\t\tconst collection = context.getNodeParameter('weaviateCollection', itemIndex, '', {\n\t\t\textractValue: true,\n\t\t}) as string;\n\n\t\tconst options = context.getNodeParameter('options', itemIndex, {}) as {\n\t\t\ttenant?: string;\n\t\t\ttextKey?: string;\n\t\t\ttimeout_init: number;\n\t\t\ttimeout_insert: number;\n\t\t\ttimeout_query: number;\n\t\t\tskip_init_checks: boolean;\n\t\t\tproxy_grpc: string;\n\t\t\tmetadataKeys?: string;\n\t\t};\n\t\t// check if textKey is valid\n\n\t\tconst credentials = await context.getCredentials('weaviateApi');\n\n\t\tconst timeout = {\n\t\t\tquery: options.timeout_query,\n\t\t\tinit: options.timeout_init,\n\t\t\tinsert: options.timeout_insert,\n\t\t};\n\n\t\tconst proxies = {\n\t\t\tgrpc: options.proxy_grpc,\n\t\t};\n\n\t\tconst client = await createWeaviateClient(\n\t\t\tcredentials as WeaviateCredential,\n\t\t\ttimeout as TimeoutParams,\n\t\t\tproxies as ProxiesParams,\n\t\t\toptions.skip_init_checks as boolean,\n\t\t);\n\n\t\tconst metadataKeys = options.metadataKeys ? options.metadataKeys.split(',') : [];\n\t\tconst config: WeaviateLibArgs = {\n\t\t\tclient,\n\t\t\tindexName: collection,\n\t\t\ttenant: options.tenant ? options.tenant : undefined,\n\t\t\ttextKey: options.textKey ? options.textKey : 'text',\n\t\t\tmetadataKeys: metadataKeys as string[] | undefined,\n\t\t};\n\n\t\tconst validFilter = (filter && Object.keys(filter).length > 0 ? filter : undefined) as\n\t\t\t| WeaviateCompositeFilter\n\t\t\t| undefined;\n\t\treturn await ExtendedWeaviateVectorStore.fromExistingCollection(\n\t\t\tembeddings,\n\t\t\tconfig,\n\t\t\tvalidFilter,\n\t\t);\n\t},\n\tasync populateVectorStore(context, embeddings, documents, itemIndex) {\n\t\tconst collectionName = context.getNodeParameter('weaviateCollection', itemIndex, '', {\n\t\t\textractValue: true,\n\t\t}) as string;\n\n\t\tconst options = context.getNodeParameter('options', itemIndex, {}) as {\n\t\t\ttenant?: string;\n\t\t\ttextKey?: string;\n\t\t\tclearStore?: boolean;\n\t\t\tmetadataKeys?: string;\n\t\t};\n\n\t\tconst credentials = await context.getCredentials('weaviateApi');\n\n\t\tconst metadataKeys = options.metadataKeys ? options.metadataKeys.split(',') : [];\n\n\t\tconst client = await createWeaviateClient(credentials as WeaviateCredential);\n\n\t\tconst config: WeaviateLibArgs = {\n\t\t\tclient,\n\t\t\tindexName: collectionName,\n\t\t\ttenant: options.tenant ? options.tenant : undefined,\n\t\t\ttextKey: options.textKey ? options.textKey : 'text',\n\t\t\tmetadataKeys: metadataKeys as string[] | undefined,\n\t\t};\n\n\t\tif (options.clearStore) {\n\t\t\tif (!options.tenant) {\n\t\t\t\tawait client.collections.delete(collectionName);\n\t\t\t} else {\n\t\t\t\tconst collection = client.collections.get(collectionName);\n\t\t\t\tawait collection.tenants.remove([{ name: options.tenant }]);\n\t\t\t}\n\t\t}\n\n\t\tawait WeaviateStore.fromDocuments(documents, embeddings, config);\n\t},\n}) {}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,sBAA8B;AAW9B,sBAA2D;AAC3D,mCAAsC;AACtC,wBAA0C;AAC1C,0BAAsC;AAEtC,MAAM,oCAAoC,8BAAc;AAAA,EAGvD,aAAa,uBACZ,YACA,MACA,eACyB;AACzB,QAAI,eAAe;AAClB,kCAA4B,gBAAgB;AAAA,IAC7C;AACA,WAAO,MAAM,MAAM,kBAAkB,YAAY,IAAI;AAAA,EACtD;AAAA,EAEA,MAAM,gCAAgC,OAAiB,GAAW,QAAsB;AACvF,aAAS,UAAU,4BAA4B;AAC/C,QAAI,QAAQ;AACX,YAAM,qBAAiB,sCAAqB,MAAiC;AAC7E,aAAO,MAAM,MAAM,gCAAgC,OAAO,GAAG,cAAc;AAAA,IAC5E,OAAO;AACN,aAAO,MAAM,MAAM,gCAAgC,OAAO,GAAG,MAAS;AAAA,IACvE;AAAA,EACD;AACD;AAEA,MAAM,eAAkC,CAAC,yCAAqB;AAE9D,MAAM,iBAA0F;AAAA,EAC/F;AAAA,IACC,aAAa;AAAA,IACb,MAAM;AAAA,IACN,MAAM;AAAA,IACN,SAAS;AAAA,IACT,cAAc;AAAA,IACd,aAAa;AAAA,EACd;AAAA,EACA;AAAA,IACC,aAAa;AAAA,IACb,MAAM;AAAA,IACN,MAAM;AAAA,IACN,SAAS;AAAA,IACT,cAAc;AAAA,IACd,aAAa;AAAA,EACd;AAAA,EACA;AAAA,IACC,aAAa;AAAA,IACb,MAAM;AAAA,IACN,MAAM;AAAA,IACN,SAAS;AAAA,IACT,cAAc;AAAA,IACd,aAAa;AAAA,EACd;AAAA,EACA;AAAA,IACC,aAAa;AAAA,IACb,MAAM;AAAA,IACN,MAAM;AAAA,IACN,SAAS;AAAA,IACT,cAAc;AAAA,IACd,aAAa;AAAA,EACd;AAAA,EACA;AAAA,IACC,aAAa;AAAA,IACb,MAAM;AAAA,IACN,MAAM;AAAA,IACN,SAAS;AAAA,IACT,cAAc;AAAA,IACd,aAAa;AAAA,EACd;AAAA,EACA;AAAA,IACC,aAAa;AAAA,IACb,MAAM;AAAA,IACN,MAAM;AAAA,IACN,SAAS;AAAA,IACT,cAAc;AAAA,IACd,aAAa;AAAA,EACd;AAAA,EACA;AAAA,IACC,aAAa;AAAA,IACb,MAAM;AAAA,IACN,MAAM;AAAA,IACN,SAAS;AAAA,IACT,cAAc;AAAA,IACd,aAAa;AAAA,EACd;AACD;AAEA,MAAM,eAAkC;AAAA,EACvC;AAAA,IACC,aAAa;AAAA,IACb,MAAM;AAAA,IACN,MAAM;AAAA,IACN,aAAa;AAAA,IACb,SAAS,CAAC;AAAA,IACV,SAAS;AAAA,MACR,GAAG;AAAA,MACH;AAAA,QACC,aAAa;AAAA,QACb,MAAM;AAAA,QACN,MAAM;AAAA,QACN,SAAS;AAAA,QACT,aAAa;AAAA,MACd;AAAA,IACD;AAAA,EACD;AACD;AAEA,MAAM,iBAAoC;AAAA,EACzC;AAAA,IACC,aAAa;AAAA,IACb,MAAM;AAAA,IACN,MAAM;AAAA,IACN,aAAa;AAAA,IACb,SAAS,CAAC;AAAA,IACV,SAAS;AAAA,MACR;AAAA,QACC,aAAa;AAAA,QACb,MAAM;AAAA,QACN,MAAM;AAAA,QACN,aAAa;AAAA,UACZ,MAAM;AAAA,QACP;AAAA,QACA,SACC;AAAA,QACD,cAAc;AAAA,QACd,aACC;AAAA,MACF;AAAA,MACA;AAAA,QACC,aAAa;AAAA,QACb,MAAM;AAAA,QACN,MAAM;AAAA,QACN,SAAS;AAAA,QACT,cAAc;AAAA,QACd,aAAa;AAAA,MACd;AAAA,MACA,GAAG;AAAA,IACJ;AAAA,EACD;AACD;AAEO,MAAM,gCAA4B,oDAAmD;AAAA,EAC3F,MAAM;AAAA,IACL,aAAa;AAAA,IACb,MAAM;AAAA,IACN,aAAa;AAAA,IACb,MAAM;AAAA,IACN,SACC;AAAA,IACD,aAAa;AAAA,MACZ;AAAA,QACC,MAAM;AAAA,QACN,UAAU;AAAA,MACX;AAAA,IACD;AAAA,EACD;AAAA,EACA,SAAS;AAAA,IACR,YAAY,EAAE,uEAA0B;AAAA,EACzC;AAAA,EACA,YAAY;AAAA,EACZ;AAAA,EACA;AAAA,EACA;AAAA,EACA,MAAM,qBAAqB,SAAS,QAAQ,YAAY,WAAW;AAClE,UAAM,aAAa,QAAQ,iBAAiB,sBAAsB,WAAW,IAAI;AAAA,MAChF,cAAc;AAAA,IACf,CAAC;AAED,UAAM,UAAU,QAAQ,iBAAiB,WAAW,WAAW,CAAC,CAAC;AAYjE,UAAM,cAAc,MAAM,QAAQ,eAAe,aAAa;AAE9D,UAAM,UAAU;AAAA,MACf,OAAO,QAAQ;AAAA,MACf,MAAM,QAAQ;AAAA,MACd,QAAQ,QAAQ;AAAA,IACjB;AAEA,UAAM,UAAU;AAAA,MACf,MAAM,QAAQ;AAAA,IACf;AAEA,UAAM,SAAS,UAAM;AAAA,MACpB;AAAA,MACA;AAAA,MACA;AAAA,MACA,QAAQ;AAAA,IACT;AAEA,UAAM,eAAe,QAAQ,eAAe,QAAQ,aAAa,MAAM,GAAG,IAAI,CAAC;AAC/E,UAAM,SAA0B;AAAA,MAC/B;AAAA,MACA,WAAW;AAAA,MACX,QAAQ,QAAQ,SAAS,QAAQ,SAAS;AAAA,MAC1C,SAAS,QAAQ,UAAU,QAAQ,UAAU;AAAA,MAC7C;AAAA,IACD;AAEA,UAAM,cAAe,UAAU,OAAO,KAAK,MAAM,EAAE,SAAS,IAAI,SAAS;AAGzE,WAAO,MAAM,4BAA4B;AAAA,MACxC;AAAA,MACA;AAAA,MACA;AAAA,IACD;AAAA,EACD;AAAA,EACA,MAAM,oBAAoB,SAAS,YAAY,WAAW,WAAW;AACpE,UAAM,iBAAiB,QAAQ,iBAAiB,sBAAsB,WAAW,IAAI;AAAA,MACpF,cAAc;AAAA,IACf,CAAC;AAED,UAAM,UAAU,QAAQ,iBAAiB,WAAW,WAAW,CAAC,CAAC;AAOjE,UAAM,cAAc,MAAM,QAAQ,eAAe,aAAa;AAE9D,UAAM,eAAe,QAAQ,eAAe,QAAQ,aAAa,MAAM,GAAG,IAAI,CAAC;AAE/E,UAAM,SAAS,UAAM,sCAAqB,WAAiC;AAE3E,UAAM,SAA0B;AAAA,MAC/B;AAAA,MACA,WAAW;AAAA,MACX,QAAQ,QAAQ,SAAS,QAAQ,SAAS;AAAA,MAC1C,SAAS,QAAQ,UAAU,QAAQ,UAAU;AAAA,MAC7C;AAAA,IACD;AAEA,QAAI,QAAQ,YAAY;AACvB,UAAI,CAAC,QAAQ,QAAQ;AACpB,cAAM,OAAO,YAAY,OAAO,cAAc;AAAA,MAC/C,OAAO;AACN,cAAM,aAAa,OAAO,YAAY,IAAI,cAAc;AACxD,cAAM,WAAW,QAAQ,OAAO,CAAC,EAAE,MAAM,QAAQ,OAAO,CAAC,CAAC;AAAA,MAC3D;AAAA,IACD;AAEA,UAAM,8BAAc,cAAc,WAAW,YAAY,MAAM;AAAA,EAChE;AACD,CAAC,EAAE;AAAC;","names":[]}
|
|
1
|
+
{"version":3,"sources":["../../../../nodes/vector_store/VectorStoreWeaviate/VectorStoreWeaviate.node.ts"],"sourcesContent":["import { Document } from '@langchain/core/documents';\nimport type { Embeddings } from '@langchain/core/embeddings';\nimport type { WeaviateLibArgs as OriginalWeaviateLibArgs } from '@langchain/weaviate';\nimport { WeaviateStore } from '@langchain/weaviate';\nimport {\n\tApplicationError,\n\ttype IDataObject,\n\ttype INodeProperties,\n\ttype INodePropertyCollection,\n\ttype INodePropertyOptions,\n} from 'n8n-workflow';\nimport { type ProxiesParams, type TimeoutParams } from 'weaviate-client';\n\nimport type { WeaviateCompositeFilter, WeaviateCredential } from './Weaviate.utils';\nimport { createWeaviateClient, parseCompositeFilter } from './Weaviate.utils';\nimport { createVectorStoreNode } from '../shared/createVectorStoreNode/createVectorStoreNode';\nimport { weaviateCollectionsSearch } from '../shared/createVectorStoreNode/methods/listSearch';\nimport { weaviateCollectionRLC } from '../shared/descriptions';\n\ntype WeaviateLibArgs = OriginalWeaviateLibArgs & {\n\thybridQuery?: string;\n\tautoCutLimit?: number;\n\talpha?: number;\n\tqueryProperties?: string;\n\tmaxVectorDistance?: number;\n\tfusionType?: 'Ranked' | 'RelativeScore';\n\thybridExplainScore?: boolean;\n};\n\nclass ExtendedWeaviateVectorStore extends WeaviateStore {\n\tprivate defaultFilter?: WeaviateCompositeFilter;\n\tprivate args!: WeaviateLibArgs;\n\n\tstatic async fromExistingCollection(\n\t\tembeddings: Embeddings,\n\t\targs: WeaviateLibArgs,\n\t\tdefaultFilter?: WeaviateCompositeFilter,\n\t): Promise<ExtendedWeaviateVectorStore> {\n\t\t// Call parent factory method but bound to this (subclass) so the created instance is of the subclass\n\t\tconst ctor = this as unknown as typeof ExtendedWeaviateVectorStore & typeof WeaviateStore;\n\t\tconst baseCandidate = await ctor.fromExistingIndex(embeddings, args);\n\n\t\tif (!(baseCandidate instanceof ExtendedWeaviateVectorStore)) {\n\t\t\tthrow new ApplicationError(\n\t\t\t\t'Weaviate store factory did not return an ExtendedWeaviateVectorStore instance',\n\t\t\t);\n\t\t}\n\n\t\tconst base = baseCandidate;\n\n\t\t// Attach per-instance config\n\t\tbase.args = args;\n\t\tif (defaultFilter) {\n\t\t\tbase.defaultFilter = defaultFilter;\n\t\t}\n\n\t\treturn base;\n\t}\n\n\tasync similaritySearchVectorWithScore(query: number[], k: number, filter?: IDataObject) {\n\t\tfilter = filter ?? this.defaultFilter;\n\t\tconst args = this.args;\n\n\t\tif (args.hybridQuery) {\n\t\t\tconst options = {\n\t\t\t\tlimit: k ?? undefined,\n\t\t\t\tautoLimit: args.autoCutLimit ?? undefined,\n\t\t\t\talpha: args.alpha ?? undefined,\n\t\t\t\tvector: query,\n\t\t\t\tfilter: filter ? parseCompositeFilter(filter as WeaviateCompositeFilter) : undefined,\n\t\t\t\tqueryProperties: args.queryProperties\n\t\t\t\t\t? args.queryProperties.split(',').map((prop) => prop.trim())\n\t\t\t\t\t: undefined,\n\t\t\t\tmaxVectorDistance: args.maxVectorDistance ?? undefined,\n\t\t\t\tfusionType: args.fusionType,\n\t\t\t\treturnMetadata: args.hybridExplainScore ? ['explainScore'] : undefined,\n\t\t\t};\n\t\t\tconst content = await super.hybridSearch(args.hybridQuery, options);\n\t\t\treturn content.map((doc) => {\n\t\t\t\tconst { score, ...metadata } = doc.metadata;\n\t\t\t\tif (typeof score !== 'number') {\n\t\t\t\t\tthrow new ApplicationError(`Unexpected score type: ${typeof score}`);\n\t\t\t\t}\n\t\t\t\treturn [\n\t\t\t\t\tnew Document({\n\t\t\t\t\t\tpageContent: doc.pageContent,\n\t\t\t\t\t\tmetadata,\n\t\t\t\t\t}),\n\t\t\t\t\tscore,\n\t\t\t\t] as [Document, number];\n\t\t\t});\n\t\t}\n\t\treturn await super.similaritySearchVectorWithScore(\n\t\t\tquery,\n\t\t\tk,\n\t\t\tfilter ? parseCompositeFilter(filter as WeaviateCompositeFilter) : undefined,\n\t\t);\n\t}\n}\n\nconst sharedFields: INodeProperties[] = [weaviateCollectionRLC];\n\nconst shared_options: Array<INodePropertyOptions | INodeProperties | INodePropertyCollection> = [\n\t{\n\t\tdisplayName: 'Tenant Name',\n\t\tname: 'tenant',\n\t\ttype: 'string',\n\t\tdefault: undefined,\n\t\tvalidateType: 'string',\n\t\tdescription: 'Tenant Name. Collection must have been created with tenant support enabled.',\n\t},\n\t{\n\t\tdisplayName: 'Text Key',\n\t\tname: 'textKey',\n\t\ttype: 'string',\n\t\tdefault: 'text',\n\t\tvalidateType: 'string',\n\t\tdescription: 'The key in the document that contains the embedded text',\n\t},\n\t{\n\t\tdisplayName: 'Skip Init Checks',\n\t\tname: 'skip_init_checks',\n\t\ttype: 'boolean',\n\t\tdefault: false,\n\t\tvalidateType: 'boolean',\n\t\tdescription: 'Whether to skip init checks while instantiating the client',\n\t},\n\t{\n\t\tdisplayName: 'Init Timeout',\n\t\tname: 'timeout_init',\n\t\ttype: 'number',\n\t\tdefault: 2,\n\t\tvalidateType: 'number',\n\t\tdescription: 'Number of timeout seconds for initial checks',\n\t},\n\t{\n\t\tdisplayName: 'Insert Timeout',\n\t\tname: 'timeout_insert',\n\t\ttype: 'number',\n\t\tdefault: 90,\n\t\tvalidateType: 'number',\n\t\tdescription: 'Number of timeout seconds for inserts',\n\t},\n\t{\n\t\tdisplayName: 'Query Timeout',\n\t\tname: 'timeout_query',\n\t\ttype: 'number',\n\t\tdefault: 30,\n\t\tvalidateType: 'number',\n\t\tdescription: 'Number of timeout seconds for queries',\n\t},\n\t{\n\t\tdisplayName: 'GRPC Proxy',\n\t\tname: 'proxy_grpc',\n\t\ttype: 'string',\n\t\tdefault: undefined,\n\t\tvalidateType: 'string',\n\t\tdescription: 'Proxy to use for GRPC',\n\t},\n];\n\nconst insertFields: INodeProperties[] = [\n\t{\n\t\tdisplayName: 'Options',\n\t\tname: 'options',\n\t\ttype: 'collection',\n\t\tplaceholder: 'Add Option',\n\t\tdefault: {},\n\t\toptions: [\n\t\t\t...shared_options,\n\t\t\t{\n\t\t\t\tdisplayName: 'Clear Data',\n\t\t\t\tname: 'clearStore',\n\t\t\t\ttype: 'boolean',\n\t\t\t\tdefault: false,\n\t\t\t\tdescription: 'Whether to clear the Collection/Tenant before inserting new data',\n\t\t\t},\n\t\t],\n\t},\n];\n\nconst retrieveFields: INodeProperties[] = [\n\t{\n\t\tdisplayName: 'Options',\n\t\tname: 'options',\n\t\ttype: 'collection',\n\t\tplaceholder: 'Add Option',\n\t\tdefault: {},\n\t\toptions: [\n\t\t\t{\n\t\t\t\tdisplayName: 'Search Filters',\n\t\t\t\tname: 'searchFilterJson',\n\t\t\t\ttype: 'json',\n\t\t\t\ttypeOptions: {\n\t\t\t\t\trows: 5,\n\t\t\t\t},\n\t\t\t\tdefault:\n\t\t\t\t\t'{\\n \"OR\": [\\n {\\n \"path\": [\"pdf_info_Author\"],\\n \"operator\": \"Equal\",\\n \"valueString\": \"Elis\"\\n },\\n {\\n \"path\": [\"pdf_info_Author\"],\\n \"operator\": \"Equal\",\\n \"valueString\": \"Pinnacle\"\\n } \\n ]\\n}',\n\t\t\t\tvalidateType: 'object',\n\t\t\t\tdescription:\n\t\t\t\t\t'Filter pageContent or metadata using this <a href=\"https://weaviate.io/\" target=\"_blank\">filtering syntax</a>',\n\t\t\t},\n\t\t\t{\n\t\t\t\tdisplayName: 'Metadata Keys',\n\t\t\t\tname: 'metadataKeys',\n\t\t\t\ttype: 'string',\n\t\t\t\tdefault: 'source,page',\n\t\t\t\tvalidateType: 'string',\n\t\t\t\tdescription: 'Select the metadata to retrieve along the content',\n\t\t\t},\n\t\t\t{\n\t\t\t\tdisplayName: 'Hybrid: Query Text',\n\t\t\t\tname: 'hybridQuery',\n\t\t\t\ttype: 'string',\n\t\t\t\tdefault: '',\n\t\t\t\tvalidateType: 'string',\n\t\t\t\tdescription: 'Provide a query text to combine vector search with a keyword/text search',\n\t\t\t},\n\t\t\t{\n\t\t\t\tdisplayName: 'Hybrid: Explain Score',\n\t\t\t\tname: 'hybridExplainScore',\n\t\t\t\ttype: 'boolean',\n\t\t\t\tdefault: false,\n\t\t\t\tvalidateType: 'boolean',\n\t\t\t\tdescription: 'Whether to show the score fused between hybrid and vector search explanation',\n\t\t\t},\n\t\t\t{\n\t\t\t\tdisplayName: 'Hybrid: Fusion Type',\n\t\t\t\tname: 'fusionType',\n\t\t\t\ttype: 'options',\n\t\t\t\toptions: [\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'Relative Score',\n\t\t\t\t\t\tvalue: 'RelativeScore',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'Ranked',\n\t\t\t\t\t\tvalue: 'Ranked',\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tdefault: 'RelativeScore',\n\t\t\t\tdescription: 'Select the fusion type for combining vector and keyword search results',\n\t\t\t},\n\t\t\t{\n\t\t\t\tdisplayName: 'Hybrid: Auto Cut Limit',\n\t\t\t\tname: 'autoCutLimit',\n\t\t\t\ttype: 'number',\n\t\t\t\tdefault: undefined,\n\t\t\t\tvalidateType: 'number',\n\t\t\t\tdescription: 'Limit result groups by detecting sudden jumps in score',\n\t\t\t},\n\t\t\t{\n\t\t\t\tdisplayName: 'Hybrid: Alpha',\n\t\t\t\tname: 'alpha',\n\t\t\t\ttype: 'number',\n\t\t\t\tdefault: 0.5,\n\t\t\t\tvalidateType: 'number',\n\t\t\t\tdescription:\n\t\t\t\t\t'Change the relative weights of the keyword and vector components. 1.0 = pure vector, 0.0 = pure keyword.',\n\t\t\t},\n\t\t\t{\n\t\t\t\tdisplayName: 'Hybrid: Query Properties',\n\t\t\t\tname: 'queryProperties',\n\t\t\t\ttype: 'string',\n\t\t\t\tdefault: '',\n\t\t\t\tvalidateType: 'string',\n\t\t\t\tdescription:\n\t\t\t\t\t'Comma-separated list of properties to include in the query with optionally weighted values, e.g., \"question^2,answer\"',\n\t\t\t},\n\t\t\t{\n\t\t\t\tdisplayName: 'Hybrid: Max Vector Distance',\n\t\t\t\tname: 'maxVectorDistance',\n\t\t\t\ttype: 'number',\n\t\t\t\tdefault: undefined,\n\t\t\t\tvalidateType: 'number',\n\t\t\t\tdescription: 'Set the maximum allowable distance for the vector search component',\n\t\t\t},\n\t\t\t...shared_options,\n\t\t],\n\t},\n];\n\nexport class VectorStoreWeaviate extends createVectorStoreNode<ExtendedWeaviateVectorStore>({\n\tmeta: {\n\t\tdisplayName: 'Weaviate Vector Store',\n\t\tname: 'vectorStoreWeaviate',\n\t\tdescription: 'Work with your data in a Weaviate Cluster',\n\t\ticon: 'file:weaviate.svg',\n\t\tdocsUrl:\n\t\t\t'https://docs.n8n.io/integrations/builtin/cluster-nodes/root-nodes/n8n-nodes-langchain.vectorstoreweaviate/',\n\t\tcredentials: [\n\t\t\t{\n\t\t\t\tname: 'weaviateApi',\n\t\t\t\trequired: true,\n\t\t\t},\n\t\t],\n\t},\n\tmethods: {\n\t\tlistSearch: { weaviateCollectionsSearch },\n\t},\n\tloadFields: retrieveFields,\n\tinsertFields,\n\tsharedFields,\n\tretrieveFields,\n\tasync getVectorStoreClient(context, filter, embeddings, itemIndex) {\n\t\tconst collection = context.getNodeParameter('weaviateCollection', itemIndex, '', {\n\t\t\textractValue: true,\n\t\t}) as string;\n\n\t\tconst options = context.getNodeParameter('options', itemIndex, {}) as {\n\t\t\tqueryProperties: string;\n\t\t\tmaxVectorDistance: number;\n\t\t\tfusionType: 'Ranked' | 'RelativeScore';\n\t\t\talpha?: number;\n\t\t\tautoCutLimit?: number;\n\t\t\thybridQuery?: string;\n\t\t\ttenant?: string;\n\t\t\ttextKey?: string;\n\t\t\ttimeout_init: number;\n\t\t\ttimeout_insert: number;\n\t\t\ttimeout_query: number;\n\t\t\tskip_init_checks: boolean;\n\t\t\tproxy_grpc: string;\n\t\t\tmetadataKeys?: string;\n\t\t\thybridExplainScore?: boolean;\n\t\t};\n\t\t// check if textKey is valid\n\n\t\tconst credentials = await context.getCredentials('weaviateApi');\n\n\t\tconst timeout = {\n\t\t\tquery: options.timeout_query,\n\t\t\tinit: options.timeout_init,\n\t\t\tinsert: options.timeout_insert,\n\t\t};\n\n\t\tconst proxies = {\n\t\t\tgrpc: options.proxy_grpc,\n\t\t};\n\n\t\tconst client = await createWeaviateClient(\n\t\t\tcredentials as WeaviateCredential,\n\t\t\ttimeout as TimeoutParams,\n\t\t\tproxies as ProxiesParams,\n\t\t\toptions.skip_init_checks,\n\t\t);\n\n\t\tconst metadataKeys = options.metadataKeys ? options.metadataKeys.split(',') : [];\n\t\tconst config: WeaviateLibArgs = {\n\t\t\tclient,\n\t\t\tindexName: collection,\n\t\t\ttenant: options.tenant ?? undefined,\n\t\t\ttextKey: options.textKey ? options.textKey : 'text',\n\t\t\tmetadataKeys: metadataKeys as string[] | undefined,\n\t\t\thybridQuery: options.hybridQuery ?? undefined,\n\t\t\tautoCutLimit: options.autoCutLimit ?? undefined,\n\t\t\talpha: options.alpha ?? undefined,\n\t\t\tqueryProperties: options.queryProperties,\n\t\t\tmaxVectorDistance: options.maxVectorDistance,\n\t\t\tfusionType: options.fusionType,\n\t\t\thybridExplainScore: options.hybridExplainScore ?? false,\n\t\t};\n\n\t\tconst validFilter = (filter && Object.keys(filter).length > 0 ? filter : undefined) as\n\t\t\t| WeaviateCompositeFilter\n\t\t\t| undefined;\n\t\treturn await ExtendedWeaviateVectorStore.fromExistingCollection(\n\t\t\tembeddings,\n\t\t\tconfig,\n\t\t\tvalidFilter,\n\t\t);\n\t},\n\tasync populateVectorStore(context, embeddings, documents, itemIndex) {\n\t\tconst collectionName = context.getNodeParameter('weaviateCollection', itemIndex, '', {\n\t\t\textractValue: true,\n\t\t}) as string;\n\n\t\tconst options = context.getNodeParameter('options', itemIndex, {}) as {\n\t\t\ttenant?: string;\n\t\t\ttextKey?: string;\n\t\t\tclearStore?: boolean;\n\t\t\tmetadataKeys?: string;\n\t\t};\n\n\t\tconst credentials = await context.getCredentials('weaviateApi');\n\n\t\tconst metadataKeys = options.metadataKeys ? options.metadataKeys.split(',') : [];\n\n\t\tconst client = await createWeaviateClient(credentials as WeaviateCredential);\n\n\t\tconst config: WeaviateLibArgs = {\n\t\t\tclient,\n\t\t\tindexName: collectionName,\n\t\t\ttenant: options.tenant ?? undefined,\n\t\t\ttextKey: options.textKey ? options.textKey : 'text',\n\t\t\tmetadataKeys: metadataKeys as string[] | undefined,\n\t\t};\n\n\t\tif (options.clearStore) {\n\t\t\tif (!options.tenant) {\n\t\t\t\tawait client.collections.delete(collectionName);\n\t\t\t} else {\n\t\t\t\tconst collection = client.collections.get(collectionName);\n\t\t\t\tawait collection.tenants.remove([{ name: options.tenant }]);\n\t\t\t}\n\t\t}\n\n\t\tawait WeaviateStore.fromDocuments(documents, embeddings, config);\n\t},\n}) {}\n"],"mappings":"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","names":[]}
|