@n8n/ai-utilities 0.4.2 → 0.5.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.
Files changed (123) hide show
  1. package/dist/cjs/index.d.ts +6 -0
  2. package/dist/cjs/index.js +18 -2
  3. package/dist/cjs/index.js.map +1 -1
  4. package/dist/cjs/typecheck.tsbuildinfo +1 -1
  5. package/dist/cjs/utils/fromai-tool-factory.d.ts +14 -0
  6. package/dist/cjs/utils/fromai-tool-factory.js +45 -0
  7. package/dist/cjs/utils/fromai-tool-factory.js.map +1 -0
  8. package/dist/cjs/utils/shared-fields.d.ts +8 -0
  9. package/dist/cjs/utils/shared-fields.js +159 -0
  10. package/dist/cjs/utils/shared-fields.js.map +1 -0
  11. package/dist/cjs/utils/vector-store/MemoryManager/MemoryCalculator.d.ts +7 -0
  12. package/dist/cjs/utils/vector-store/MemoryManager/MemoryCalculator.js +60 -0
  13. package/dist/cjs/utils/vector-store/MemoryManager/MemoryCalculator.js.map +1 -0
  14. package/dist/cjs/utils/vector-store/MemoryManager/MemoryVectorStoreManager.d.ts +34 -0
  15. package/dist/cjs/utils/vector-store/MemoryManager/MemoryVectorStoreManager.js +186 -0
  16. package/dist/cjs/utils/vector-store/MemoryManager/MemoryVectorStoreManager.js.map +1 -0
  17. package/dist/cjs/utils/vector-store/MemoryManager/StoreCleanupService.d.ts +16 -0
  18. package/dist/cjs/utils/vector-store/MemoryManager/StoreCleanupService.js +105 -0
  19. package/dist/cjs/utils/vector-store/MemoryManager/StoreCleanupService.js.map +1 -0
  20. package/dist/cjs/utils/vector-store/MemoryManager/config.d.ts +4 -0
  21. package/dist/cjs/utils/vector-store/MemoryManager/config.js +48 -0
  22. package/dist/cjs/utils/vector-store/MemoryManager/config.js.map +1 -0
  23. package/dist/cjs/utils/vector-store/MemoryManager/types.d.ts +39 -0
  24. package/dist/cjs/utils/vector-store/MemoryManager/types.js +13 -0
  25. package/dist/cjs/utils/vector-store/MemoryManager/types.js.map +1 -0
  26. package/dist/cjs/utils/vector-store/createVectorStoreNode/constants.d.ts +4 -0
  27. package/dist/cjs/utils/vector-store/createVectorStoreNode/constants.js +55 -0
  28. package/dist/cjs/utils/vector-store/createVectorStoreNode/constants.js.map +1 -0
  29. package/dist/cjs/utils/vector-store/createVectorStoreNode/createVectorStoreNode.d.ts +18 -0
  30. package/dist/cjs/utils/vector-store/createVectorStoreNode/createVectorStoreNode.js +294 -0
  31. package/dist/cjs/utils/vector-store/createVectorStoreNode/createVectorStoreNode.js.map +1 -0
  32. package/dist/cjs/utils/vector-store/createVectorStoreNode/operations/index.d.ts +6 -0
  33. package/dist/cjs/utils/vector-store/createVectorStoreNode/operations/index.js +33 -0
  34. package/dist/cjs/utils/vector-store/createVectorStoreNode/operations/index.js.map +1 -0
  35. package/dist/cjs/utils/vector-store/createVectorStoreNode/operations/insertOperation.d.ts +5 -0
  36. package/dist/cjs/utils/vector-store/createVectorStoreNode/operations/insertOperation.js +48 -0
  37. package/dist/cjs/utils/vector-store/createVectorStoreNode/operations/insertOperation.js.map +1 -0
  38. package/dist/cjs/utils/vector-store/createVectorStoreNode/operations/loadOperation.d.ts +5 -0
  39. package/dist/cjs/utils/vector-store/createVectorStoreNode/operations/loadOperation.js +55 -0
  40. package/dist/cjs/utils/vector-store/createVectorStoreNode/operations/loadOperation.js.map +1 -0
  41. package/dist/cjs/utils/vector-store/createVectorStoreNode/operations/retrieveAsToolExecuteOperation.d.ts +5 -0
  42. package/dist/cjs/utils/vector-store/createVectorStoreNode/operations/retrieveAsToolExecuteOperation.js +74 -0
  43. package/dist/cjs/utils/vector-store/createVectorStoreNode/operations/retrieveAsToolExecuteOperation.js.map +1 -0
  44. package/dist/cjs/utils/vector-store/createVectorStoreNode/operations/retrieveAsToolOperation.d.ts +5 -0
  45. package/dist/cjs/utils/vector-store/createVectorStoreNode/operations/retrieveAsToolOperation.js +70 -0
  46. package/dist/cjs/utils/vector-store/createVectorStoreNode/operations/retrieveAsToolOperation.js.map +1 -0
  47. package/dist/cjs/utils/vector-store/createVectorStoreNode/operations/retrieveOperation.d.ts +5 -0
  48. package/dist/cjs/utils/vector-store/createVectorStoreNode/operations/retrieveOperation.js +39 -0
  49. package/dist/cjs/utils/vector-store/createVectorStoreNode/operations/retrieveOperation.js.map +1 -0
  50. package/dist/cjs/utils/vector-store/createVectorStoreNode/operations/updateOperation.d.ts +5 -0
  51. package/dist/cjs/utils/vector-store/createVectorStoreNode/operations/updateOperation.js +49 -0
  52. package/dist/cjs/utils/vector-store/createVectorStoreNode/operations/updateOperation.js.map +1 -0
  53. package/dist/cjs/utils/vector-store/createVectorStoreNode/types.d.ts +39 -0
  54. package/dist/cjs/utils/vector-store/createVectorStoreNode/types.js +13 -0
  55. package/dist/cjs/utils/vector-store/createVectorStoreNode/types.js.map +1 -0
  56. package/dist/cjs/utils/vector-store/createVectorStoreNode/utils.d.ts +6 -0
  57. package/dist/cjs/utils/vector-store/createVectorStoreNode/utils.js +30 -0
  58. package/dist/cjs/utils/vector-store/createVectorStoreNode/utils.js.map +1 -0
  59. package/dist/cjs/utils/vector-store/processDocuments.d.ts +25 -0
  60. package/dist/cjs/utils/vector-store/processDocuments.js +52 -0
  61. package/dist/cjs/utils/vector-store/processDocuments.js.map +1 -0
  62. package/dist/esm/index.d.ts +6 -0
  63. package/dist/esm/index.js +17 -1
  64. package/dist/esm/index.js.map +1 -1
  65. package/dist/esm/typecheck.tsbuildinfo +1 -1
  66. package/dist/esm/utils/fromai-tool-factory.d.ts +14 -0
  67. package/dist/esm/utils/fromai-tool-factory.js +35 -0
  68. package/dist/esm/utils/fromai-tool-factory.js.map +1 -0
  69. package/dist/esm/utils/shared-fields.d.ts +8 -0
  70. package/dist/esm/utils/shared-fields.js +149 -0
  71. package/dist/esm/utils/shared-fields.js.map +1 -0
  72. package/dist/esm/utils/vector-store/MemoryManager/MemoryCalculator.d.ts +7 -0
  73. package/dist/esm/utils/vector-store/MemoryManager/MemoryCalculator.js +50 -0
  74. package/dist/esm/utils/vector-store/MemoryManager/MemoryCalculator.js.map +1 -0
  75. package/dist/esm/utils/vector-store/MemoryManager/MemoryVectorStoreManager.d.ts +34 -0
  76. package/dist/esm/utils/vector-store/MemoryManager/MemoryVectorStoreManager.js +176 -0
  77. package/dist/esm/utils/vector-store/MemoryManager/MemoryVectorStoreManager.js.map +1 -0
  78. package/dist/esm/utils/vector-store/MemoryManager/StoreCleanupService.d.ts +16 -0
  79. package/dist/esm/utils/vector-store/MemoryManager/StoreCleanupService.js +95 -0
  80. package/dist/esm/utils/vector-store/MemoryManager/StoreCleanupService.js.map +1 -0
  81. package/dist/esm/utils/vector-store/MemoryManager/config.d.ts +4 -0
  82. package/dist/esm/utils/vector-store/MemoryManager/config.js +38 -0
  83. package/dist/esm/utils/vector-store/MemoryManager/config.js.map +1 -0
  84. package/dist/esm/utils/vector-store/MemoryManager/types.d.ts +39 -0
  85. package/dist/esm/utils/vector-store/MemoryManager/types.js +3 -0
  86. package/dist/esm/utils/vector-store/MemoryManager/types.js.map +1 -0
  87. package/dist/esm/utils/vector-store/createVectorStoreNode/constants.d.ts +4 -0
  88. package/dist/esm/utils/vector-store/createVectorStoreNode/constants.js +45 -0
  89. package/dist/esm/utils/vector-store/createVectorStoreNode/constants.js.map +1 -0
  90. package/dist/esm/utils/vector-store/createVectorStoreNode/createVectorStoreNode.d.ts +18 -0
  91. package/dist/esm/utils/vector-store/createVectorStoreNode/createVectorStoreNode.js +284 -0
  92. package/dist/esm/utils/vector-store/createVectorStoreNode/createVectorStoreNode.js.map +1 -0
  93. package/dist/esm/utils/vector-store/createVectorStoreNode/operations/index.d.ts +6 -0
  94. package/dist/esm/utils/vector-store/createVectorStoreNode/operations/index.js +23 -0
  95. package/dist/esm/utils/vector-store/createVectorStoreNode/operations/index.js.map +1 -0
  96. package/dist/esm/utils/vector-store/createVectorStoreNode/operations/insertOperation.d.ts +5 -0
  97. package/dist/esm/utils/vector-store/createVectorStoreNode/operations/insertOperation.js +38 -0
  98. package/dist/esm/utils/vector-store/createVectorStoreNode/operations/insertOperation.js.map +1 -0
  99. package/dist/esm/utils/vector-store/createVectorStoreNode/operations/loadOperation.d.ts +5 -0
  100. package/dist/esm/utils/vector-store/createVectorStoreNode/operations/loadOperation.js +45 -0
  101. package/dist/esm/utils/vector-store/createVectorStoreNode/operations/loadOperation.js.map +1 -0
  102. package/dist/esm/utils/vector-store/createVectorStoreNode/operations/retrieveAsToolExecuteOperation.d.ts +5 -0
  103. package/dist/esm/utils/vector-store/createVectorStoreNode/operations/retrieveAsToolExecuteOperation.js +64 -0
  104. package/dist/esm/utils/vector-store/createVectorStoreNode/operations/retrieveAsToolExecuteOperation.js.map +1 -0
  105. package/dist/esm/utils/vector-store/createVectorStoreNode/operations/retrieveAsToolOperation.d.ts +5 -0
  106. package/dist/esm/utils/vector-store/createVectorStoreNode/operations/retrieveAsToolOperation.js +60 -0
  107. package/dist/esm/utils/vector-store/createVectorStoreNode/operations/retrieveAsToolOperation.js.map +1 -0
  108. package/dist/esm/utils/vector-store/createVectorStoreNode/operations/retrieveOperation.d.ts +5 -0
  109. package/dist/esm/utils/vector-store/createVectorStoreNode/operations/retrieveOperation.js +29 -0
  110. package/dist/esm/utils/vector-store/createVectorStoreNode/operations/retrieveOperation.js.map +1 -0
  111. package/dist/esm/utils/vector-store/createVectorStoreNode/operations/updateOperation.d.ts +5 -0
  112. package/dist/esm/utils/vector-store/createVectorStoreNode/operations/updateOperation.js +39 -0
  113. package/dist/esm/utils/vector-store/createVectorStoreNode/operations/updateOperation.js.map +1 -0
  114. package/dist/esm/utils/vector-store/createVectorStoreNode/types.d.ts +39 -0
  115. package/dist/esm/utils/vector-store/createVectorStoreNode/types.js +3 -0
  116. package/dist/esm/utils/vector-store/createVectorStoreNode/types.js.map +1 -0
  117. package/dist/esm/utils/vector-store/createVectorStoreNode/utils.d.ts +6 -0
  118. package/dist/esm/utils/vector-store/createVectorStoreNode/utils.js +20 -0
  119. package/dist/esm/utils/vector-store/createVectorStoreNode/utils.js.map +1 -0
  120. package/dist/esm/utils/vector-store/processDocuments.d.ts +25 -0
  121. package/dist/esm/utils/vector-store/processDocuments.js +42 -0
  122. package/dist/esm/utils/vector-store/processDocuments.js.map +1 -0
  123. package/package.json +9 -6
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getConfig = getConfig;
4
+ exports.mbToBytes = mbToBytes;
5
+ exports.hoursToMs = hoursToMs;
6
+ const DEFAULT_MAX_MEMORY_MB = -1;
7
+ const DEFAULT_INACTIVE_TTL_HOURS = -1;
8
+ function getConfig() {
9
+ let maxMemoryMB = DEFAULT_MAX_MEMORY_MB;
10
+ if (process.env.N8N_VECTOR_STORE_MAX_MEMORY) {
11
+ const parsed = parseInt(process.env.N8N_VECTOR_STORE_MAX_MEMORY, 10);
12
+ if (!isNaN(parsed)) {
13
+ maxMemoryMB = parsed;
14
+ }
15
+ }
16
+ let ttlHours = DEFAULT_INACTIVE_TTL_HOURS;
17
+ if (process.env.N8N_VECTOR_STORE_TTL_HOURS) {
18
+ const parsed = parseInt(process.env.N8N_VECTOR_STORE_TTL_HOURS, 10);
19
+ if (!isNaN(parsed)) {
20
+ ttlHours = parsed;
21
+ }
22
+ }
23
+ return {
24
+ maxMemoryMB,
25
+ ttlHours,
26
+ };
27
+ }
28
+ function mbToBytes(mb) {
29
+ if (mb <= 0)
30
+ return -1;
31
+ return mb * 1024 * 1024;
32
+ }
33
+ function hoursToMs(hours) {
34
+ if (hours <= 0)
35
+ return -1;
36
+ return hours * 60 * 60 * 1000;
37
+ }
38
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../../../../src/utils/vector-store/MemoryManager/config.ts"],"names":[],"mappings":";;AASA,8BAuBC;AAKD,8BAIC;AAKD,8BAIC;AA/CD,MAAM,qBAAqB,GAAG,CAAC,CAAC,CAAC;AACjC,MAAM,0BAA0B,GAAG,CAAC,CAAC,CAAC;AAKtC,SAAgB,SAAS;IAExB,IAAI,WAAW,GAAG,qBAAqB,CAAC;IACxC,IAAI,OAAO,CAAC,GAAG,CAAC,2BAA2B,EAAE,CAAC;QAC7C,MAAM,MAAM,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,2BAA2B,EAAE,EAAE,CAAC,CAAC;QACrE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC;YACpB,WAAW,GAAG,MAAM,CAAC;QACtB,CAAC;IACF,CAAC;IAGD,IAAI,QAAQ,GAAG,0BAA0B,CAAC;IAC1C,IAAI,OAAO,CAAC,GAAG,CAAC,0BAA0B,EAAE,CAAC;QAC5C,MAAM,MAAM,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,0BAA0B,EAAE,EAAE,CAAC,CAAC;QACpE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC;YACpB,QAAQ,GAAG,MAAM,CAAC;QACnB,CAAC;IACF,CAAC;IAED,OAAO;QACN,WAAW;QACX,QAAQ;KACR,CAAC;AACH,CAAC;AAKD,SAAgB,SAAS,CAAC,EAAU;IAEnC,IAAI,EAAE,IAAI,CAAC;QAAE,OAAO,CAAC,CAAC,CAAC;IACvB,OAAO,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC;AACzB,CAAC;AAKD,SAAgB,SAAS,CAAC,KAAa;IAEtC,IAAI,KAAK,IAAI,CAAC;QAAE,OAAO,CAAC,CAAC,CAAC;IAC1B,OAAO,KAAK,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AAC/B,CAAC"}
@@ -0,0 +1,39 @@
1
+ import type { MemoryVectorStore } from '@langchain/classic/vectorstores/memory';
2
+ import type { Document } from '@langchain/core/documents';
3
+ export interface MemoryVectorStoreConfig {
4
+ maxMemoryMB: number;
5
+ ttlHours: number;
6
+ }
7
+ export interface VectorStoreMetadata {
8
+ size: number;
9
+ createdAt: Date;
10
+ lastAccessed: Date;
11
+ }
12
+ export interface StoreStats {
13
+ sizeBytes: number;
14
+ sizeMB: number;
15
+ percentOfTotal: number;
16
+ vectors: number;
17
+ createdAt: string;
18
+ lastAccessed: string;
19
+ inactive?: boolean;
20
+ inactiveForHours?: number;
21
+ }
22
+ export interface VectorStoreStats {
23
+ totalSizeBytes: number;
24
+ totalSizeMB: number;
25
+ percentOfLimit: number;
26
+ maxMemoryMB: number;
27
+ storeCount: number;
28
+ inactiveStoreCount: number;
29
+ ttlHours: number;
30
+ stores: Record<string, StoreStats>;
31
+ }
32
+ export interface IMemoryCalculator {
33
+ estimateBatchSize(documents: Document[]): number;
34
+ calculateVectorStoreSize(vectorStore: MemoryVectorStore): number;
35
+ }
36
+ export interface IStoreCleanupService {
37
+ cleanupInactiveStores(): void;
38
+ cleanupOldestStores(requiredBytes: number): void;
39
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../../src/utils/vector-store/MemoryManager/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,4 @@
1
+ import type { INodePropertyOptions } from 'n8n-workflow';
2
+ import type { NodeOperationMode } from './types';
3
+ export declare const DEFAULT_OPERATION_MODES: NodeOperationMode[];
4
+ export declare const OPERATION_MODE_DESCRIPTIONS: INodePropertyOptions[];
@@ -0,0 +1,45 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.OPERATION_MODE_DESCRIPTIONS = exports.DEFAULT_OPERATION_MODES = void 0;
4
+ const n8n_workflow_1 = require("n8n-workflow");
5
+ exports.DEFAULT_OPERATION_MODES = [
6
+ 'load',
7
+ 'insert',
8
+ 'retrieve',
9
+ 'retrieve-as-tool',
10
+ ];
11
+ exports.OPERATION_MODE_DESCRIPTIONS = [
12
+ {
13
+ name: 'Get Many',
14
+ value: 'load',
15
+ description: 'Get many ranked documents from vector store for query',
16
+ action: 'Get ranked documents from vector store',
17
+ },
18
+ {
19
+ name: 'Insert Documents',
20
+ value: 'insert',
21
+ description: 'Insert documents into vector store',
22
+ action: 'Add documents to vector store',
23
+ },
24
+ {
25
+ name: 'Retrieve Documents (As Vector Store for Chain/Tool)',
26
+ value: 'retrieve',
27
+ description: 'Retrieve documents from vector store to be used as vector store with AI nodes',
28
+ action: 'Retrieve documents for Chain/Tool as Vector Store',
29
+ outputConnectionType: n8n_workflow_1.NodeConnectionTypes.AiVectorStore,
30
+ },
31
+ {
32
+ name: 'Retrieve Documents (As Tool for AI Agent)',
33
+ value: 'retrieve-as-tool',
34
+ description: 'Retrieve documents from vector store to be used as tool with AI nodes',
35
+ action: 'Retrieve documents for AI Agent as Tool',
36
+ outputConnectionType: n8n_workflow_1.NodeConnectionTypes.AiTool,
37
+ },
38
+ {
39
+ name: 'Update Documents',
40
+ value: 'update',
41
+ description: 'Update documents in vector store by ID',
42
+ action: 'Update vector store documents',
43
+ },
44
+ ];
45
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../../../src/utils/vector-store/createVectorStoreNode/constants.ts"],"names":[],"mappings":";;;AAAA,+CAAmD;AAKtC,QAAA,uBAAuB,GAAwB;IAC3D,MAAM;IACN,QAAQ;IACR,UAAU;IACV,kBAAkB;CAClB,CAAC;AAEW,QAAA,2BAA2B,GAA2B;IAClE;QACC,IAAI,EAAE,UAAU;QAChB,KAAK,EAAE,MAAM;QACb,WAAW,EAAE,uDAAuD;QACpE,MAAM,EAAE,wCAAwC;KAChD;IACD;QACC,IAAI,EAAE,kBAAkB;QACxB,KAAK,EAAE,QAAQ;QACf,WAAW,EAAE,oCAAoC;QACjD,MAAM,EAAE,+BAA+B;KACvC;IACD;QACC,IAAI,EAAE,qDAAqD;QAC3D,KAAK,EAAE,UAAU;QACjB,WAAW,EAAE,+EAA+E;QAC5F,MAAM,EAAE,mDAAmD;QAC3D,oBAAoB,EAAE,kCAAmB,CAAC,aAAa;KACvD;IACD;QACC,IAAI,EAAE,2CAA2C;QACjD,KAAK,EAAE,kBAAkB;QACzB,WAAW,EAAE,uEAAuE;QACpF,MAAM,EAAE,yCAAyC;QACjD,oBAAoB,EAAE,kCAAmB,CAAC,MAAM;KAChD;IACD;QACC,IAAI,EAAE,kBAAkB;QACxB,KAAK,EAAE,QAAQ;QACf,WAAW,EAAE,wCAAwC;QACrD,MAAM,EAAE,+BAA+B;KACvC;CACD,CAAC"}
@@ -0,0 +1,18 @@
1
+ import type { VectorStore } from '@langchain/core/vectorstores';
2
+ import type { IExecuteFunctions, INodeExecutionData, INodeTypeDescription, SupplyData, ISupplyDataFunctions } from 'n8n-workflow';
3
+ import type { VectorStoreNodeConstructorArgs } from './types';
4
+ export declare const createVectorStoreNode: <T extends VectorStore = VectorStore>(args: VectorStoreNodeConstructorArgs<T>) => {
5
+ new (): {
6
+ description: INodeTypeDescription;
7
+ methods: {
8
+ listSearch?: {
9
+ [key: string]: (this: import("n8n-workflow").ILoadOptionsFunctions, filter?: string, paginationToken?: string) => Promise<import("n8n-workflow").INodeListSearchResult>;
10
+ };
11
+ actionHandler?: {
12
+ [functionName: string]: (this: import("n8n-workflow").ILoadOptionsFunctions, payload: import("n8n-workflow").IDataObject | string | undefined) => Promise<import("n8n-workflow").NodeParameterValueType>;
13
+ };
14
+ } | undefined;
15
+ execute(this: IExecuteFunctions): Promise<INodeExecutionData[][]>;
16
+ supplyData(this: ISupplyDataFunctions, itemIndex: number): Promise<SupplyData>;
17
+ };
18
+ };
@@ -0,0 +1,284 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createVectorStoreNode = void 0;
4
+ const n8n_workflow_1 = require("n8n-workflow");
5
+ const operations_1 = require("./operations");
6
+ const utils_1 = require("./utils");
7
+ const shared_fields_1 = require("../../shared-fields");
8
+ const ragStarterCallout = {
9
+ displayName: 'Tip: Get a feel for vector stores in n8n with our',
10
+ name: 'ragStarterCallout',
11
+ type: 'callout',
12
+ typeOptions: {
13
+ calloutAction: {
14
+ label: 'RAG starter template',
15
+ type: 'openSampleWorkflowTemplate',
16
+ templateId: 'rag-starter-template',
17
+ },
18
+ },
19
+ default: '',
20
+ };
21
+ const createVectorStoreNode = (args) => class VectorStoreNodeType {
22
+ constructor() {
23
+ this.description = {
24
+ displayName: args.meta.displayName,
25
+ name: args.meta.name,
26
+ description: args.meta.description,
27
+ icon: args.meta.icon,
28
+ iconColor: args.meta.iconColor,
29
+ group: ['transform'],
30
+ version: [1, 1.1, 1.2, 1.3],
31
+ defaults: {
32
+ name: args.meta.displayName,
33
+ },
34
+ codex: {
35
+ categories: args.meta.categories ?? ['AI'],
36
+ subcategories: args.meta.subcategories ?? {
37
+ AI: ['Vector Stores', 'Tools', 'Root Nodes'],
38
+ 'Vector Stores': ['Other Vector Stores'],
39
+ Tools: ['Other Tools'],
40
+ },
41
+ resources: {
42
+ primaryDocumentation: [
43
+ {
44
+ url: args.meta.docsUrl,
45
+ },
46
+ ],
47
+ },
48
+ },
49
+ builderHint: {
50
+ ...args.meta.builderHint,
51
+ inputs: {
52
+ ai_embedding: { required: true },
53
+ ai_document: {
54
+ required: true,
55
+ displayOptions: { show: { mode: ['insert'] } },
56
+ },
57
+ ai_reranker: {
58
+ required: true,
59
+ displayOptions: {
60
+ show: { mode: ['load', 'retrieve', 'retrieve-as-tool'], useReranker: [true] },
61
+ },
62
+ },
63
+ },
64
+ },
65
+ credentials: args.meta.credentials,
66
+ inputs: `={{
67
+ ((parameters) => {
68
+ const mode = parameters?.mode;
69
+ const useReranker = parameters?.useReranker;
70
+ const inputs = [{ displayName: "Embedding", type: "${n8n_workflow_1.NodeConnectionTypes.AiEmbedding}", required: true, maxConnections: 1}]
71
+
72
+ if (['load', 'retrieve', 'retrieve-as-tool'].includes(mode) && useReranker) {
73
+ inputs.push({ displayName: "Reranker", type: "${n8n_workflow_1.NodeConnectionTypes.AiReranker}", required: true, maxConnections: 1})
74
+ }
75
+
76
+ if (mode === 'retrieve-as-tool') {
77
+ return inputs;
78
+ }
79
+
80
+ if (['insert', 'load', 'update'].includes(mode)) {
81
+ inputs.push({ displayName: "", type: "${n8n_workflow_1.NodeConnectionTypes.Main}"})
82
+ }
83
+
84
+ if (['insert'].includes(mode)) {
85
+ inputs.push({ displayName: "Document", type: "${n8n_workflow_1.NodeConnectionTypes.AiDocument}", required: true, maxConnections: 1})
86
+ }
87
+ return inputs
88
+ })($parameter)
89
+ }}`,
90
+ outputs: `={{
91
+ ((parameters) => {
92
+ const mode = parameters?.mode ?? 'retrieve';
93
+
94
+ if (mode === 'retrieve-as-tool') {
95
+ return [{ displayName: "Tool", type: "${n8n_workflow_1.NodeConnectionTypes.AiTool}"}]
96
+ }
97
+
98
+ if (mode === 'retrieve') {
99
+ return [{ displayName: "Vector Store", type: "${n8n_workflow_1.NodeConnectionTypes.AiVectorStore}"}]
100
+ }
101
+ return [{ displayName: "", type: "${n8n_workflow_1.NodeConnectionTypes.Main}"}]
102
+ })($parameter)
103
+ }}`,
104
+ properties: [
105
+ ragStarterCallout,
106
+ {
107
+ displayName: 'Operation Mode',
108
+ name: 'mode',
109
+ type: 'options',
110
+ noDataExpression: true,
111
+ default: 'retrieve',
112
+ options: (0, utils_1.getOperationModeOptions)(args),
113
+ },
114
+ {
115
+ ...(0, shared_fields_1.getConnectionHintNoticeField)([n8n_workflow_1.NodeConnectionTypes.AiRetriever]),
116
+ displayOptions: {
117
+ show: {
118
+ mode: ['retrieve'],
119
+ },
120
+ },
121
+ },
122
+ {
123
+ displayName: 'Name',
124
+ name: 'toolName',
125
+ type: 'string',
126
+ default: '',
127
+ required: true,
128
+ description: 'Name of the vector store',
129
+ placeholder: 'e.g. company_knowledge_base',
130
+ validateType: 'string-alphanumeric',
131
+ displayOptions: {
132
+ show: {
133
+ '@version': [{ _cnd: { lte: 1.2 } }],
134
+ mode: ['retrieve-as-tool'],
135
+ },
136
+ },
137
+ },
138
+ {
139
+ displayName: 'Description',
140
+ name: 'toolDescription',
141
+ type: 'string',
142
+ default: '',
143
+ required: true,
144
+ typeOptions: { rows: 2 },
145
+ description: 'Explain to the LLM what this tool does, a good, specific description would allow LLMs to produce expected results much more often',
146
+ placeholder: `e.g. ${args.meta.description}`,
147
+ displayOptions: {
148
+ show: {
149
+ mode: ['retrieve-as-tool'],
150
+ },
151
+ },
152
+ },
153
+ ...args.sharedFields,
154
+ {
155
+ displayName: 'Embedding Batch Size',
156
+ name: 'embeddingBatchSize',
157
+ type: 'number',
158
+ default: 200,
159
+ description: 'Number of documents to embed in a single batch',
160
+ displayOptions: {
161
+ show: {
162
+ mode: ['insert'],
163
+ '@version': [{ _cnd: { gte: 1.1 } }],
164
+ },
165
+ },
166
+ },
167
+ ...(0, utils_1.transformDescriptionForOperationMode)(args.insertFields ?? [], 'insert'),
168
+ {
169
+ displayName: 'Prompt',
170
+ name: 'prompt',
171
+ type: 'string',
172
+ default: '',
173
+ required: true,
174
+ description: 'Search prompt to retrieve matching documents from the vector store using similarity-based ranking',
175
+ displayOptions: {
176
+ show: {
177
+ mode: ['load'],
178
+ },
179
+ },
180
+ },
181
+ {
182
+ displayName: 'Limit',
183
+ name: 'topK',
184
+ type: 'number',
185
+ default: 4,
186
+ description: 'Number of top results to fetch from vector store',
187
+ displayOptions: {
188
+ show: {
189
+ mode: ['load', 'retrieve-as-tool'],
190
+ },
191
+ },
192
+ },
193
+ {
194
+ displayName: 'Include Metadata',
195
+ name: 'includeDocumentMetadata',
196
+ type: 'boolean',
197
+ default: true,
198
+ description: 'Whether or not to include document metadata',
199
+ displayOptions: {
200
+ show: {
201
+ mode: ['load', 'retrieve-as-tool'],
202
+ },
203
+ },
204
+ },
205
+ {
206
+ displayName: 'Rerank Results',
207
+ name: 'useReranker',
208
+ type: 'boolean',
209
+ default: false,
210
+ description: 'Whether or not to rerank results',
211
+ displayOptions: {
212
+ show: {
213
+ mode: ['load', 'retrieve', 'retrieve-as-tool'],
214
+ },
215
+ },
216
+ },
217
+ {
218
+ displayName: 'ID',
219
+ name: 'id',
220
+ type: 'string',
221
+ default: '',
222
+ required: true,
223
+ description: 'ID of an embedding entry',
224
+ displayOptions: {
225
+ show: {
226
+ mode: ['update'],
227
+ },
228
+ },
229
+ },
230
+ ...(0, utils_1.transformDescriptionForOperationMode)(args.loadFields ?? [], [
231
+ 'load',
232
+ 'retrieve-as-tool',
233
+ ]),
234
+ ...(0, utils_1.transformDescriptionForOperationMode)(args.retrieveFields ?? [], 'retrieve'),
235
+ ...(0, utils_1.transformDescriptionForOperationMode)(args.updateFields ?? [], 'update'),
236
+ ],
237
+ };
238
+ this.methods = args.methods;
239
+ }
240
+ async execute() {
241
+ const mode = this.getNodeParameter('mode', 0);
242
+ const embeddings = (await this.getInputConnectionData(n8n_workflow_1.NodeConnectionTypes.AiEmbedding, 0));
243
+ if (mode === 'load') {
244
+ const items = this.getInputData(0);
245
+ const resultData = [];
246
+ for (let itemIndex = 0; itemIndex < items.length; itemIndex++) {
247
+ const docs = await (0, operations_1.handleLoadOperation)(this, args, embeddings, itemIndex);
248
+ resultData.push(...docs);
249
+ }
250
+ return [resultData];
251
+ }
252
+ if (mode === 'insert') {
253
+ const resultData = await (0, operations_1.handleInsertOperation)(this, args, embeddings);
254
+ return [resultData];
255
+ }
256
+ if (mode === 'update') {
257
+ const resultData = await (0, operations_1.handleUpdateOperation)(this, args, embeddings);
258
+ return [resultData];
259
+ }
260
+ if (mode === 'retrieve-as-tool') {
261
+ const items = this.getInputData(0);
262
+ const resultData = [];
263
+ for (let itemIndex = 0; itemIndex < items.length; itemIndex++) {
264
+ const docs = await (0, operations_1.handleRetrieveAsToolExecuteOperation)(this, args, embeddings, itemIndex);
265
+ resultData.push(...docs);
266
+ }
267
+ return [resultData];
268
+ }
269
+ throw new n8n_workflow_1.NodeOperationError(this.getNode(), 'Only the "load", "update", "insert", and "retrieve-as-tool" operation modes are supported with execute');
270
+ }
271
+ async supplyData(itemIndex) {
272
+ const mode = this.getNodeParameter('mode', 0);
273
+ const embeddings = (await this.getInputConnectionData(n8n_workflow_1.NodeConnectionTypes.AiEmbedding, 0));
274
+ if (mode === 'retrieve') {
275
+ return await (0, operations_1.handleRetrieveOperation)(this, args, embeddings, itemIndex);
276
+ }
277
+ if (mode === 'retrieve-as-tool') {
278
+ return await (0, operations_1.handleRetrieveAsToolOperation)(this, args, embeddings, itemIndex);
279
+ }
280
+ throw new n8n_workflow_1.NodeOperationError(this.getNode(), 'Only the "retrieve" and "retrieve-as-tool" operation mode is supported to supply data');
281
+ }
282
+ };
283
+ exports.createVectorStoreNode = createVectorStoreNode;
284
+ //# sourceMappingURL=createVectorStoreNode.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createVectorStoreNode.js","sourceRoot":"","sources":["../../../../../src/utils/vector-store/createVectorStoreNode/createVectorStoreNode.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ export * from './loadOperation';
2
+ export * from './insertOperation';
3
+ export * from './updateOperation';
4
+ export * from './retrieveOperation';
5
+ export * from './retrieveAsToolOperation';
6
+ export * from './retrieveAsToolExecuteOperation';
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./loadOperation"), exports);
18
+ __exportStar(require("./insertOperation"), exports);
19
+ __exportStar(require("./updateOperation"), exports);
20
+ __exportStar(require("./retrieveOperation"), exports);
21
+ __exportStar(require("./retrieveAsToolOperation"), exports);
22
+ __exportStar(require("./retrieveAsToolExecuteOperation"), exports);
23
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../src/utils/vector-store/createVectorStoreNode/operations/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,kDAAgC;AAChC,oDAAkC;AAClC,oDAAkC;AAClC,sDAAoC;AACpC,4DAA0C;AAC1C,mEAAiD"}
@@ -0,0 +1,5 @@
1
+ import type { Embeddings } from '@langchain/core/embeddings';
2
+ import type { VectorStore } from '@langchain/core/vectorstores';
3
+ import type { IExecuteFunctions, INodeExecutionData } from 'n8n-workflow';
4
+ import type { VectorStoreNodeConstructorArgs } from '../types';
5
+ export declare function handleInsertOperation<T extends VectorStore = VectorStore>(context: IExecuteFunctions, args: VectorStoreNodeConstructorArgs<T>, embeddings: Embeddings): Promise<INodeExecutionData[]>;
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.handleInsertOperation = handleInsertOperation;
4
+ const n8n_workflow_1 = require("n8n-workflow");
5
+ const log_ai_event_1 = require("../../../log-ai-event");
6
+ const processDocuments_1 = require("../../processDocuments");
7
+ async function handleInsertOperation(context, args, embeddings) {
8
+ const nodeVersion = context.getNode().typeVersion;
9
+ const items = context.getInputData();
10
+ const documentInput = (await context.getInputConnectionData(n8n_workflow_1.NodeConnectionTypes.AiDocument, 0));
11
+ const resultData = [];
12
+ const documentsForEmbedding = [];
13
+ for (let itemIndex = 0; itemIndex < items.length; itemIndex++) {
14
+ if (context.getExecutionCancelSignal()?.aborted) {
15
+ break;
16
+ }
17
+ const itemData = items[itemIndex];
18
+ const processedDocuments = await (0, processDocuments_1.processDocument)(documentInput, itemData, itemIndex);
19
+ resultData.push(...processedDocuments.serializedDocuments);
20
+ documentsForEmbedding.push(...processedDocuments.processedDocuments);
21
+ if (nodeVersion === 1) {
22
+ await args.populateVectorStore(context, embeddings, processedDocuments.processedDocuments, itemIndex);
23
+ }
24
+ (0, log_ai_event_1.logAiEvent)(context, 'ai-vector-store-populated');
25
+ }
26
+ if (nodeVersion >= 1.1) {
27
+ if (args.beforeInsert) {
28
+ await args.beforeInsert(context, embeddings, 0);
29
+ }
30
+ const embeddingBatchSize = context.getNodeParameter('embeddingBatchSize', 0, 200) ?? 200;
31
+ for (let i = 0; i < documentsForEmbedding.length; i += embeddingBatchSize) {
32
+ const nextBatch = documentsForEmbedding.slice(i, i + embeddingBatchSize);
33
+ await args.populateVectorStore(context, embeddings, nextBatch, 0);
34
+ }
35
+ }
36
+ return resultData;
37
+ }
38
+ //# sourceMappingURL=insertOperation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"insertOperation.js","sourceRoot":"","sources":["../../../../../../src/utils/vector-store/createVectorStoreNode/operations/insertOperation.ts"],"names":[],"mappings":";;AAgBA,sDAgEC;AA7ED,+CAAmD;AAGnD,wDAAmD;AAGnD,6DAAyD;AAOlD,KAAK,UAAU,qBAAqB,CAC1C,OAA0B,EAC1B,IAAuC,EACvC,UAAsB;IAEtB,MAAM,WAAW,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,WAAW,CAAC;IAElD,MAAM,KAAK,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IACrC,MAAM,aAAa,GAAG,CAAC,MAAM,OAAO,CAAC,sBAAsB,CAAC,kCAAmB,CAAC,UAAU,EAAE,CAAC,CAAC,CAGnD,CAAC;IAE5C,MAAM,UAAU,GAAyB,EAAE,CAAC;IAC5C,MAAM,qBAAqB,GAA6C,EAAE,CAAC;IAG3E,KAAK,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,GAAG,KAAK,CAAC,MAAM,EAAE,SAAS,EAAE,EAAE,CAAC;QAE/D,IAAI,OAAO,CAAC,wBAAwB,EAAE,EAAE,OAAO,EAAE,CAAC;YACjD,MAAM;QACP,CAAC;QAED,MAAM,QAAQ,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC;QAGlC,MAAM,kBAAkB,GAAG,MAAM,IAAA,kCAAe,EAAC,aAAa,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;QAGrF,UAAU,CAAC,IAAI,CAAC,GAAG,kBAAkB,CAAC,mBAAmB,CAAC,CAAC;QAG3D,qBAAqB,CAAC,IAAI,CAAC,GAAG,kBAAkB,CAAC,kBAAkB,CAAC,CAAC;QAGrE,IAAI,WAAW,KAAK,CAAC,EAAE,CAAC;YACvB,MAAM,IAAI,CAAC,mBAAmB,CAC7B,OAAO,EACP,UAAU,EACV,kBAAkB,CAAC,kBAAkB,EACrC,SAAS,CACT,CAAC;QACH,CAAC;QAED,IAAA,yBAAU,EAAC,OAAO,EAAE,2BAA2B,CAAC,CAAC;IAClD,CAAC;IAGD,IAAI,WAAW,IAAI,GAAG,EAAE,CAAC;QACxB,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACvB,MAAM,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC;QACjD,CAAC;QAED,MAAM,kBAAkB,GACtB,OAAO,CAAC,gBAAgB,CAAC,oBAAoB,EAAE,CAAC,EAAE,GAAG,CAAY,IAAI,GAAG,CAAC;QAG3E,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,qBAAqB,CAAC,MAAM,EAAE,CAAC,IAAI,kBAAkB,EAAE,CAAC;YAC3E,MAAM,SAAS,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,kBAAkB,CAAC,CAAC;YACzE,MAAM,IAAI,CAAC,mBAAmB,CAAC,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC;QACnE,CAAC;IACF,CAAC;IAED,OAAO,UAAU,CAAC;AACnB,CAAC"}
@@ -0,0 +1,5 @@
1
+ import type { Embeddings } from '@langchain/core/embeddings';
2
+ import type { VectorStore } from '@langchain/core/vectorstores';
3
+ import type { IExecuteFunctions, INodeExecutionData } from 'n8n-workflow';
4
+ import type { VectorStoreNodeConstructorArgs } from '../types';
5
+ export declare function handleLoadOperation<T extends VectorStore = VectorStore>(context: IExecuteFunctions, args: VectorStoreNodeConstructorArgs<T>, embeddings: Embeddings, itemIndex: number): Promise<INodeExecutionData[]>;
@@ -0,0 +1,45 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.handleLoadOperation = handleLoadOperation;
4
+ const n8n_workflow_1 = require("n8n-workflow");
5
+ const helpers_1 = require("../../../helpers");
6
+ const log_ai_event_1 = require("../../../log-ai-event");
7
+ async function handleLoadOperation(context, args, embeddings, itemIndex) {
8
+ const filter = (0, helpers_1.getMetadataFiltersValues)(context, itemIndex);
9
+ const vectorStore = await args.getVectorStoreClient(context, undefined, embeddings, itemIndex);
10
+ try {
11
+ const prompt = context.getNodeParameter('prompt', itemIndex);
12
+ const topK = context.getNodeParameter('topK', itemIndex, 4);
13
+ const useReranker = context.getNodeParameter('useReranker', itemIndex, false);
14
+ const includeDocumentMetadata = context.getNodeParameter('includeDocumentMetadata', itemIndex, true);
15
+ const embeddedPrompt = await embeddings.embedQuery(prompt);
16
+ let docs = await vectorStore.similaritySearchVectorWithScore(embeddedPrompt, topK, filter);
17
+ if (useReranker && docs.length > 0) {
18
+ const reranker = (await context.getInputConnectionData(n8n_workflow_1.NodeConnectionTypes.AiReranker, 0));
19
+ const documents = docs.map(([doc]) => doc);
20
+ const rerankedDocuments = await reranker.compressDocuments(documents, prompt);
21
+ docs = rerankedDocuments.map((doc) => {
22
+ const { relevanceScore, ...metadata } = doc.metadata || {};
23
+ return [{ ...doc, metadata }, relevanceScore];
24
+ });
25
+ }
26
+ const serializedDocs = docs.map(([doc, score]) => {
27
+ const document = {
28
+ pageContent: doc.pageContent,
29
+ ...(includeDocumentMetadata ? { metadata: doc.metadata } : {}),
30
+ };
31
+ return {
32
+ json: { document, score },
33
+ pairedItem: {
34
+ item: itemIndex,
35
+ },
36
+ };
37
+ });
38
+ (0, log_ai_event_1.logAiEvent)(context, 'ai-vector-store-searched', { query: prompt });
39
+ return serializedDocs;
40
+ }
41
+ finally {
42
+ args.releaseVectorStoreClient?.(vectorStore);
43
+ }
44
+ }
45
+ //# sourceMappingURL=loadOperation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loadOperation.js","sourceRoot":"","sources":["../../../../../../src/utils/vector-store/createVectorStoreNode/operations/loadOperation.ts"],"names":[],"mappings":";;AAcA,kDAuEC;AAlFD,+CAAmD;AAGnD,8CAA4D;AAC5D,wDAAmD;AAO5C,KAAK,UAAU,mBAAmB,CACxC,OAA0B,EAC1B,IAAuC,EACvC,UAAsB,EACtB,SAAiB;IAEjB,MAAM,MAAM,GAAG,IAAA,kCAAwB,EAAC,OAAO,EAAE,SAAS,CAAC,CAAC;IAC5D,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,oBAAoB,CAClD,OAAO,EAEP,SAAS,EACT,UAAU,EACV,SAAS,CACT,CAAC;IAEF,IAAI,CAAC;QAEJ,MAAM,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC,QAAQ,EAAE,SAAS,CAAW,CAAC;QACvE,MAAM,IAAI,GAAG,OAAO,CAAC,gBAAgB,CAAC,MAAM,EAAE,SAAS,EAAE,CAAC,CAAW,CAAC;QACtE,MAAM,WAAW,GAAG,OAAO,CAAC,gBAAgB,CAAC,aAAa,EAAE,SAAS,EAAE,KAAK,CAAY,CAAC;QAEzF,MAAM,uBAAuB,GAAG,OAAO,CAAC,gBAAgB,CACvD,yBAAyB,EACzB,SAAS,EACT,IAAI,CACO,CAAC;QAGb,MAAM,cAAc,GAAG,MAAM,UAAU,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QAG3D,IAAI,IAAI,GAAG,MAAM,WAAW,CAAC,+BAA+B,CAAC,cAAc,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;QAG3F,IAAI,WAAW,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACpC,MAAM,QAAQ,GAAG,CAAC,MAAM,OAAO,CAAC,sBAAsB,CACrD,kCAAmB,CAAC,UAAU,EAC9B,CAAC,CACD,CAA2B,CAAC;YAC7B,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC;YAE3C,MAAM,iBAAiB,GAAG,MAAM,QAAQ,CAAC,iBAAiB,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;YAC9E,IAAI,GAAG,iBAAiB,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;gBACpC,MAAM,EAAE,cAAc,EAAE,GAAG,QAAQ,EAAE,GAAG,GAAG,CAAC,QAAQ,IAAI,EAAE,CAAC;gBAC3D,OAAO,CAAC,EAAE,GAAG,GAAG,EAAE,QAAQ,EAAE,EAAE,cAAc,CAAC,CAAC;YAC/C,CAAC,CAAC,CAAC;QACJ,CAAC;QAGD,MAAM,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;YAChD,MAAM,QAAQ,GAAG;gBAChB,WAAW,EAAE,GAAG,CAAC,WAAW;gBAC5B,GAAG,CAAC,uBAAuB,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aAC9D,CAAC;YAEF,OAAO;gBACN,IAAI,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE;gBACzB,UAAU,EAAE;oBACX,IAAI,EAAE,SAAS;iBACf;aACD,CAAC;QACH,CAAC,CAAC,CAAC;QAGH,IAAA,yBAAU,EAAC,OAAO,EAAE,0BAA0B,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;QAEnE,OAAO,cAAc,CAAC;IACvB,CAAC;YAAS,CAAC;QAEV,IAAI,CAAC,wBAAwB,EAAE,CAAC,WAAW,CAAC,CAAC;IAC9C,CAAC;AACF,CAAC"}
@@ -0,0 +1,5 @@
1
+ import type { Embeddings } from '@langchain/core/embeddings';
2
+ import type { VectorStore } from '@langchain/core/vectorstores';
3
+ import type { IExecuteFunctions, INodeExecutionData } from 'n8n-workflow';
4
+ import type { VectorStoreNodeConstructorArgs } from '../types';
5
+ export declare function handleRetrieveAsToolExecuteOperation<T extends VectorStore = VectorStore>(context: IExecuteFunctions, args: VectorStoreNodeConstructorArgs<T>, embeddings: Embeddings, itemIndex: number): Promise<INodeExecutionData[]>;