n8n-nodes-couchbase 0.1.5 → 1.1.0
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/README.md +26 -52
- package/dist/credentials/CouchbaseApi.credentials.d.ts +8 -0
- package/dist/credentials/CouchbaseApi.credentials.js +39 -0
- package/dist/credentials/CouchbaseApi.credentials.js.map +1 -0
- package/dist/nodes/Couchbase/Couchbase.node.d.ts +14 -0
- package/dist/nodes/Couchbase/Couchbase.node.js +173 -0
- package/dist/nodes/Couchbase/Couchbase.node.js.map +1 -0
- package/dist/nodes/Couchbase/Couchbase.node.json +18 -0
- package/dist/nodes/Couchbase/CouchbaseProperties.d.ts +16 -0
- package/dist/nodes/Couchbase/CouchbaseProperties.js +511 -0
- package/dist/nodes/Couchbase/CouchbaseProperties.js.map +1 -0
- package/dist/nodes/Couchbase/couchbase.dark.svg +14 -0
- package/dist/nodes/Couchbase/couchbase.svg +14 -0
- package/dist/nodes/icons/couchbase.dark.svg +14 -0
- package/dist/nodes/icons/couchbase.svg +14 -0
- package/dist/nodes/vector_store/VectorStoreCouchbaseSearch/VectorStoreCouchbaseSearch.node.d.ts +16 -0
- package/dist/nodes/vector_store/VectorStoreCouchbaseSearch/VectorStoreCouchbaseSearch.node.js +335 -0
- package/dist/nodes/vector_store/VectorStoreCouchbaseSearch/VectorStoreCouchbaseSearch.node.js.map +1 -0
- package/dist/nodes/vector_store/shared/createVectorStoreNode/constants.d.ts +4 -0
- package/dist/nodes/vector_store/shared/createVectorStoreNode/constants.js +45 -0
- package/dist/nodes/vector_store/shared/createVectorStoreNode/constants.js.map +1 -0
- package/dist/nodes/vector_store/shared/createVectorStoreNode/createVectorStoreNode.d.ts +15 -0
- package/dist/nodes/vector_store/shared/createVectorStoreNode/createVectorStoreNode.js +227 -0
- package/dist/nodes/vector_store/shared/createVectorStoreNode/createVectorStoreNode.js.map +1 -0
- package/dist/nodes/vector_store/shared/createVectorStoreNode/operations/index.d.ts +5 -0
- package/dist/nodes/vector_store/shared/createVectorStoreNode/operations/index.js +22 -0
- package/dist/nodes/vector_store/shared/createVectorStoreNode/operations/index.js.map +1 -0
- package/dist/nodes/vector_store/shared/createVectorStoreNode/operations/insertOperation.d.ts +5 -0
- package/dist/nodes/vector_store/shared/createVectorStoreNode/operations/insertOperation.js +36 -0
- package/dist/nodes/vector_store/shared/createVectorStoreNode/operations/insertOperation.js.map +1 -0
- package/dist/nodes/vector_store/shared/createVectorStoreNode/operations/loadOperation.d.ts +5 -0
- package/dist/nodes/vector_store/shared/createVectorStoreNode/operations/loadOperation.js +34 -0
- package/dist/nodes/vector_store/shared/createVectorStoreNode/operations/loadOperation.js.map +1 -0
- package/dist/nodes/vector_store/shared/createVectorStoreNode/operations/retrieveAsToolOperation.d.ts +5 -0
- package/dist/nodes/vector_store/shared/createVectorStoreNode/operations/retrieveAsToolOperation.js +43 -0
- package/dist/nodes/vector_store/shared/createVectorStoreNode/operations/retrieveAsToolOperation.js.map +1 -0
- package/dist/nodes/vector_store/shared/createVectorStoreNode/operations/retrieveOperation.d.ts +5 -0
- package/dist/nodes/vector_store/shared/createVectorStoreNode/operations/retrieveOperation.js +17 -0
- package/dist/nodes/vector_store/shared/createVectorStoreNode/operations/retrieveOperation.js.map +1 -0
- package/dist/nodes/vector_store/shared/createVectorStoreNode/operations/updateOperation.d.ts +5 -0
- package/dist/nodes/vector_store/shared/createVectorStoreNode/operations/updateOperation.js +40 -0
- package/dist/nodes/vector_store/shared/createVectorStoreNode/operations/updateOperation.js.map +1 -0
- package/dist/nodes/vector_store/shared/createVectorStoreNode/types.d.ts +31 -0
- package/dist/nodes/vector_store/shared/createVectorStoreNode/types.js +3 -0
- package/dist/nodes/vector_store/shared/createVectorStoreNode/types.js.map +1 -0
- package/dist/nodes/vector_store/shared/createVectorStoreNode/utils.d.ts +6 -0
- package/dist/nodes/vector_store/shared/createVectorStoreNode/utils.js +22 -0
- package/dist/nodes/vector_store/shared/createVectorStoreNode/utils.js.map +1 -0
- package/dist/nodes/vector_store/shared/processDocuments.d.ts +16 -0
- package/dist/nodes/vector_store/shared/processDocuments.js +28 -0
- package/dist/nodes/vector_store/shared/processDocuments.js.map +1 -0
- package/dist/package.json +37 -19
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/utils/N8nBinaryLoader.d.ts +18 -0
- package/dist/utils/N8nBinaryLoader.js +159 -0
- package/dist/utils/N8nBinaryLoader.js.map +1 -0
- package/dist/utils/N8nJsonLoader.d.ts +11 -0
- package/dist/utils/N8nJsonLoader.js +67 -0
- package/dist/utils/N8nJsonLoader.js.map +1 -0
- package/dist/utils/couchbase/connectToCouchbase.d.ts +6 -0
- package/dist/utils/couchbase/connectToCouchbase.js +88 -0
- package/dist/utils/couchbase/connectToCouchbase.js.map +1 -0
- package/dist/utils/couchbase/populateCouchbaseRLs.d.ts +25 -0
- package/dist/utils/couchbase/populateCouchbaseRLs.js +121 -0
- package/dist/utils/couchbase/populateCouchbaseRLs.js.map +1 -0
- package/dist/utils/couchbase/validateBucketScopeCollection.d.ts +2 -0
- package/dist/utils/couchbase/validateBucketScopeCollection.js +53 -0
- package/dist/utils/couchbase/validateBucketScopeCollection.js.map +1 -0
- package/dist/utils/helpers.d.ts +10 -0
- package/dist/utils/helpers.js +61 -0
- package/dist/utils/helpers.js.map +1 -0
- package/dist/utils/logWrapper.d.ts +20 -0
- package/dist/utils/logWrapper.js +285 -0
- package/dist/utils/logWrapper.js.map +1 -0
- package/dist/utils/sharedFields.d.ts +6 -0
- package/dist/utils/sharedFields.js +122 -0
- package/dist/utils/sharedFields.js.map +1 -0
- package/package.json +43 -27
- package/dist/credentials/CouchbaseCredentialsApi.credentials.d.ts +0 -7
- package/dist/credentials/CouchbaseCredentialsApi.credentials.js +0 -50
- package/dist/credentials/CouchbaseCredentialsApi.credentials.js.map +0 -1
- package/dist/nodes/CouchbaseDB/CBLogomark.svg +0 -350
- package/dist/nodes/CouchbaseDB/CouchbaseNode.node.d.ts +0 -6
- package/dist/nodes/CouchbaseDB/CouchbaseNode.node.js +0 -206
- package/dist/nodes/CouchbaseDB/CouchbaseNode.node.js.map +0 -1
- package/dist/nodes/CouchbaseNode/CBLogomark.svg +0 -350
- package/dist/nodes/CouchbaseNode/CouchbaseNode.node.d.ts +0 -6
- package/dist/nodes/CouchbaseNode/CouchbaseNode.node.js +0 -293
- package/dist/nodes/CouchbaseNode/CouchbaseNode.node.js.map +0 -1
|
@@ -0,0 +1,335 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.VectorStoreCouchbaseSearch = void 0;
|
|
4
|
+
const couchbase_1 = require("@langchain/community/vectorstores/couchbase");
|
|
5
|
+
const n8n_workflow_1 = require("n8n-workflow");
|
|
6
|
+
const sharedFields_1 = require("../../../utils/sharedFields");
|
|
7
|
+
const createVectorStoreNode_1 = require("../shared/createVectorStoreNode/createVectorStoreNode");
|
|
8
|
+
const populateCouchbaseRLs_1 = require("../../../utils/couchbase/populateCouchbaseRLs");
|
|
9
|
+
const connectToCouchbase_1 = require("../../../utils/couchbase/connectToCouchbase");
|
|
10
|
+
const validateBucketScopeCollection_1 = require("../../../utils/couchbase/validateBucketScopeCollection");
|
|
11
|
+
const couchbaseBucketRL = {
|
|
12
|
+
displayName: 'Couchbase Bucket',
|
|
13
|
+
name: 'couchbaseBucket',
|
|
14
|
+
type: 'resourceLocator',
|
|
15
|
+
default: { mode: 'list', value: '' },
|
|
16
|
+
required: true,
|
|
17
|
+
modes: [
|
|
18
|
+
{
|
|
19
|
+
displayName: 'From List',
|
|
20
|
+
name: 'list',
|
|
21
|
+
type: 'list',
|
|
22
|
+
typeOptions: {
|
|
23
|
+
searchListMethod: 'populateCouchbaseBucketRL',
|
|
24
|
+
},
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
displayName: 'Name',
|
|
28
|
+
name: 'name',
|
|
29
|
+
type: 'string',
|
|
30
|
+
placeholder: 'e.g. my_bucket',
|
|
31
|
+
},
|
|
32
|
+
],
|
|
33
|
+
};
|
|
34
|
+
const couchbaseScopeRL = {
|
|
35
|
+
displayName: 'Couchbase Scope',
|
|
36
|
+
name: 'couchbaseScope',
|
|
37
|
+
type: 'resourceLocator',
|
|
38
|
+
default: { mode: 'list', value: '' },
|
|
39
|
+
required: true,
|
|
40
|
+
typeOptions: {
|
|
41
|
+
loadOptionsDependsOn: ['couchbaseBucket.value'],
|
|
42
|
+
},
|
|
43
|
+
modes: [
|
|
44
|
+
{
|
|
45
|
+
displayName: 'From List',
|
|
46
|
+
name: 'list',
|
|
47
|
+
type: 'list',
|
|
48
|
+
typeOptions: {
|
|
49
|
+
searchListMethod: 'populateCouchbaseScopeRL',
|
|
50
|
+
},
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
displayName: 'Name',
|
|
54
|
+
name: 'name',
|
|
55
|
+
type: 'string',
|
|
56
|
+
placeholder: 'e.g. my_scope',
|
|
57
|
+
},
|
|
58
|
+
],
|
|
59
|
+
};
|
|
60
|
+
const couchbaseCollectionRL = {
|
|
61
|
+
displayName: 'Couchbase Collection',
|
|
62
|
+
name: 'couchbaseCollection',
|
|
63
|
+
type: 'resourceLocator',
|
|
64
|
+
default: { mode: 'list', value: '' },
|
|
65
|
+
required: true,
|
|
66
|
+
typeOptions: {
|
|
67
|
+
loadOptionsDependsOn: ['couchbaseBucket.value', 'couchbaseScope.value'],
|
|
68
|
+
},
|
|
69
|
+
modes: [
|
|
70
|
+
{
|
|
71
|
+
displayName: 'From List',
|
|
72
|
+
name: 'list',
|
|
73
|
+
type: 'list',
|
|
74
|
+
typeOptions: {
|
|
75
|
+
searchListMethod: 'populateCouchbaseCollectionRL',
|
|
76
|
+
},
|
|
77
|
+
},
|
|
78
|
+
{
|
|
79
|
+
displayName: 'Name',
|
|
80
|
+
name: 'name',
|
|
81
|
+
type: 'string',
|
|
82
|
+
placeholder: 'e.g. my_collection',
|
|
83
|
+
},
|
|
84
|
+
],
|
|
85
|
+
};
|
|
86
|
+
const useScopedIndex = {
|
|
87
|
+
displayName: 'Use Scoped Index',
|
|
88
|
+
name: 'useScopedIndex',
|
|
89
|
+
type: 'boolean',
|
|
90
|
+
default: true,
|
|
91
|
+
description: 'Whether to use a scoped search index or a global one',
|
|
92
|
+
};
|
|
93
|
+
const vectorIndexRL = {
|
|
94
|
+
displayName: 'Vector Index Name',
|
|
95
|
+
name: 'vectorIndexName',
|
|
96
|
+
type: 'resourceLocator',
|
|
97
|
+
default: { mode: 'list', value: '' },
|
|
98
|
+
required: true,
|
|
99
|
+
description: 'The name of the vector index',
|
|
100
|
+
typeOptions: {
|
|
101
|
+
loadOptionsDependsOn: [
|
|
102
|
+
'useScopedIndex',
|
|
103
|
+
'couchbaseBucket.value',
|
|
104
|
+
'couchbaseScope.value',
|
|
105
|
+
'couchbaseCollection.value',
|
|
106
|
+
],
|
|
107
|
+
},
|
|
108
|
+
modes: [
|
|
109
|
+
{
|
|
110
|
+
displayName: 'From List',
|
|
111
|
+
name: 'list',
|
|
112
|
+
type: 'list',
|
|
113
|
+
typeOptions: {
|
|
114
|
+
searchListMethod: 'populateCouchbaseSearchIndexesRL',
|
|
115
|
+
},
|
|
116
|
+
},
|
|
117
|
+
{
|
|
118
|
+
displayName: 'Name',
|
|
119
|
+
name: 'name',
|
|
120
|
+
type: 'string',
|
|
121
|
+
placeholder: 'e.g. my_index',
|
|
122
|
+
},
|
|
123
|
+
],
|
|
124
|
+
};
|
|
125
|
+
const embeddingField = {
|
|
126
|
+
displayName: 'Embedding Field Key',
|
|
127
|
+
name: 'embedding',
|
|
128
|
+
type: 'string',
|
|
129
|
+
default: 'embedding',
|
|
130
|
+
description: 'The field with the embedding array',
|
|
131
|
+
required: true,
|
|
132
|
+
};
|
|
133
|
+
const textField = {
|
|
134
|
+
displayName: 'Text Field Key',
|
|
135
|
+
name: 'textFieldKey',
|
|
136
|
+
type: 'string',
|
|
137
|
+
default: 'text',
|
|
138
|
+
description: 'The field with the raw (text) data',
|
|
139
|
+
required: true,
|
|
140
|
+
};
|
|
141
|
+
const sharedFields = [
|
|
142
|
+
couchbaseBucketRL,
|
|
143
|
+
couchbaseScopeRL,
|
|
144
|
+
couchbaseCollectionRL,
|
|
145
|
+
useScopedIndex,
|
|
146
|
+
vectorIndexRL,
|
|
147
|
+
embeddingField,
|
|
148
|
+
textField,
|
|
149
|
+
];
|
|
150
|
+
const retrieveFields = [
|
|
151
|
+
{
|
|
152
|
+
displayName: 'Options',
|
|
153
|
+
name: 'options',
|
|
154
|
+
type: 'collection',
|
|
155
|
+
placeholder: 'Add Option',
|
|
156
|
+
default: {},
|
|
157
|
+
options: [sharedFields_1.metadataFilterField],
|
|
158
|
+
},
|
|
159
|
+
];
|
|
160
|
+
const insertFields = [
|
|
161
|
+
{
|
|
162
|
+
displayName: 'Options',
|
|
163
|
+
name: 'options',
|
|
164
|
+
type: 'collection',
|
|
165
|
+
placeholder: 'Add Option',
|
|
166
|
+
default: {},
|
|
167
|
+
options: [
|
|
168
|
+
{
|
|
169
|
+
displayName: 'Add Vector Options',
|
|
170
|
+
name: 'addVectorOptions',
|
|
171
|
+
type: 'fixedCollection',
|
|
172
|
+
default: {},
|
|
173
|
+
description: 'Options for adding vectors with specific ID and metadata',
|
|
174
|
+
options: [
|
|
175
|
+
{
|
|
176
|
+
name: 'values',
|
|
177
|
+
displayName: 'Values',
|
|
178
|
+
values: [
|
|
179
|
+
{
|
|
180
|
+
displayName: 'IDs',
|
|
181
|
+
name: 'ids',
|
|
182
|
+
type: 'string',
|
|
183
|
+
default: '',
|
|
184
|
+
description: 'Comma-separated list of IDs for the vectors',
|
|
185
|
+
placeholder: 'id1,id2,id3',
|
|
186
|
+
},
|
|
187
|
+
{
|
|
188
|
+
displayName: 'Metadata',
|
|
189
|
+
name: 'metadata',
|
|
190
|
+
type: 'json',
|
|
191
|
+
validateType: 'array',
|
|
192
|
+
default: '',
|
|
193
|
+
description: 'Array of metadata objects to attach to the vectors',
|
|
194
|
+
},
|
|
195
|
+
],
|
|
196
|
+
},
|
|
197
|
+
],
|
|
198
|
+
},
|
|
199
|
+
],
|
|
200
|
+
},
|
|
201
|
+
];
|
|
202
|
+
function getCommonNodeParameters(context, itemIndex) {
|
|
203
|
+
const couchbaseBucketName = context.getNodeParameter('couchbaseBucket', itemIndex, '', {
|
|
204
|
+
extractValue: true,
|
|
205
|
+
});
|
|
206
|
+
const couchbaseScopeName = context.getNodeParameter('couchbaseScope', itemIndex, '', {
|
|
207
|
+
extractValue: true,
|
|
208
|
+
});
|
|
209
|
+
const couchbaseCollectionName = context.getNodeParameter('couchbaseCollection', itemIndex, '', {
|
|
210
|
+
extractValue: true,
|
|
211
|
+
});
|
|
212
|
+
const isUseScopedIndex = context.getNodeParameter('useScopedIndex', itemIndex, '');
|
|
213
|
+
const couchbaseVectorIndexName = context.getNodeParameter('vectorIndexName', itemIndex, '', {
|
|
214
|
+
extractValue: true,
|
|
215
|
+
});
|
|
216
|
+
const embeddingFieldName = context.getNodeParameter('embedding', itemIndex, '', {
|
|
217
|
+
extractValue: true,
|
|
218
|
+
});
|
|
219
|
+
const textFieldName = context.getNodeParameter('textFieldKey', itemIndex, '', {
|
|
220
|
+
extractValue: true,
|
|
221
|
+
});
|
|
222
|
+
return {
|
|
223
|
+
couchbaseBucketName,
|
|
224
|
+
couchbaseScopeName,
|
|
225
|
+
couchbaseCollectionName,
|
|
226
|
+
isUseScopedIndex,
|
|
227
|
+
couchbaseVectorIndexName,
|
|
228
|
+
embeddingFieldName,
|
|
229
|
+
textFieldName,
|
|
230
|
+
};
|
|
231
|
+
}
|
|
232
|
+
class VectorStoreCouchbaseSearch extends (0, createVectorStoreNode_1.createVectorStoreNode)({
|
|
233
|
+
meta: {
|
|
234
|
+
displayName: 'Couchbase Search Vector Store',
|
|
235
|
+
name: 'vectorStoreCouchbaseSearch',
|
|
236
|
+
description: 'Work with your data using the Couchbase Search Vector Store. This node conducts vector retrievals using the Search service.',
|
|
237
|
+
icon: {
|
|
238
|
+
light: 'file:../../icons/couchbase.svg',
|
|
239
|
+
dark: 'file:../../icons/couchbase.dark.svg',
|
|
240
|
+
},
|
|
241
|
+
docsUrl: 'https://github.com/Couchbase-Ecosystem/n8n-nodes-couchbase/blob/master/nodes/vector_store/VectorStoreCouchbaseSearch/README.md',
|
|
242
|
+
credentials: [
|
|
243
|
+
{
|
|
244
|
+
name: 'couchbaseApi',
|
|
245
|
+
required: true,
|
|
246
|
+
},
|
|
247
|
+
],
|
|
248
|
+
operationModes: ['load', 'insert', 'retrieve', 'update', 'retrieve-as-tool'],
|
|
249
|
+
},
|
|
250
|
+
methods: {
|
|
251
|
+
listSearch: {
|
|
252
|
+
populateCouchbaseBucketRL: populateCouchbaseRLs_1.populateCouchbaseBucketRL,
|
|
253
|
+
populateCouchbaseScopeRL: populateCouchbaseRLs_1.populateCouchbaseScopeRL,
|
|
254
|
+
populateCouchbaseCollectionRL: populateCouchbaseRLs_1.populateCouchbaseCollectionRL,
|
|
255
|
+
populateCouchbaseSearchIndexesRL: populateCouchbaseRLs_1.populateCouchbaseSearchIndexesRL,
|
|
256
|
+
},
|
|
257
|
+
},
|
|
258
|
+
retrieveFields,
|
|
259
|
+
loadFields: retrieveFields,
|
|
260
|
+
insertFields,
|
|
261
|
+
sharedFields,
|
|
262
|
+
async getVectorStoreClient(context, _filter, embeddings, itemIndex) {
|
|
263
|
+
try {
|
|
264
|
+
const { couchbaseBucketName, couchbaseScopeName, couchbaseCollectionName, isUseScopedIndex, couchbaseVectorIndexName, embeddingFieldName, textFieldName, } = getCommonNodeParameters(context, itemIndex);
|
|
265
|
+
const { cluster } = await (0, connectToCouchbase_1.connectToCouchbase)(context);
|
|
266
|
+
await (0, validateBucketScopeCollection_1.validateBucketScopeCollection)(context, couchbaseBucketName, couchbaseScopeName, couchbaseCollectionName);
|
|
267
|
+
const couchbaseConfig = {
|
|
268
|
+
cluster,
|
|
269
|
+
bucketName: couchbaseBucketName,
|
|
270
|
+
scopeName: couchbaseScopeName,
|
|
271
|
+
collectionName: couchbaseCollectionName,
|
|
272
|
+
indexName: couchbaseVectorIndexName,
|
|
273
|
+
textKey: textFieldName,
|
|
274
|
+
embeddingKey: embeddingFieldName,
|
|
275
|
+
scopedIndex: isUseScopedIndex,
|
|
276
|
+
};
|
|
277
|
+
return couchbase_1.CouchbaseVectorStore.initialize(embeddings, couchbaseConfig);
|
|
278
|
+
}
|
|
279
|
+
catch (error) {
|
|
280
|
+
if (!(error instanceof n8n_workflow_1.NodeOperationError)) {
|
|
281
|
+
throw new n8n_workflow_1.NodeOperationError(context.getNode(), `Error: ${error.message}`);
|
|
282
|
+
}
|
|
283
|
+
throw error;
|
|
284
|
+
}
|
|
285
|
+
},
|
|
286
|
+
async populateVectorStore(context, embeddings, documents, itemIndex) {
|
|
287
|
+
try {
|
|
288
|
+
const { couchbaseBucketName, couchbaseScopeName, couchbaseCollectionName, isUseScopedIndex, couchbaseVectorIndexName, embeddingFieldName, textFieldName, } = getCommonNodeParameters(context, itemIndex);
|
|
289
|
+
const { cluster } = await (0, connectToCouchbase_1.connectToCouchbase)(context);
|
|
290
|
+
await (0, validateBucketScopeCollection_1.validateBucketScopeCollection)(context, couchbaseBucketName, couchbaseScopeName, couchbaseCollectionName);
|
|
291
|
+
const couchbaseConfig = {
|
|
292
|
+
cluster,
|
|
293
|
+
bucketName: couchbaseBucketName,
|
|
294
|
+
scopeName: couchbaseScopeName,
|
|
295
|
+
collectionName: couchbaseCollectionName,
|
|
296
|
+
indexName: couchbaseVectorIndexName,
|
|
297
|
+
textKey: textFieldName,
|
|
298
|
+
embeddingKey: embeddingFieldName,
|
|
299
|
+
scopedIndex: isUseScopedIndex,
|
|
300
|
+
};
|
|
301
|
+
const options = context.getNodeParameter('options', itemIndex, {});
|
|
302
|
+
if (options.addVectorOptions) {
|
|
303
|
+
const vectorOptions = options.addVectorOptions.values;
|
|
304
|
+
if (vectorOptions) {
|
|
305
|
+
const idsString = vectorOptions.ids;
|
|
306
|
+
const ids = idsString ? idsString.split(',').map((id) => id.trim()) : undefined;
|
|
307
|
+
let metadata;
|
|
308
|
+
try {
|
|
309
|
+
const metadataString = vectorOptions.metadata;
|
|
310
|
+
metadata = metadataString ? JSON.parse(metadataString) : undefined;
|
|
311
|
+
}
|
|
312
|
+
catch (error) {
|
|
313
|
+
throw new n8n_workflow_1.NodeOperationError(context.getNode(), 'Invalid metadata JSON format');
|
|
314
|
+
}
|
|
315
|
+
if (ids || metadata) {
|
|
316
|
+
couchbaseConfig.addVectorOptions = {
|
|
317
|
+
ids,
|
|
318
|
+
metadata,
|
|
319
|
+
};
|
|
320
|
+
}
|
|
321
|
+
}
|
|
322
|
+
}
|
|
323
|
+
await couchbase_1.CouchbaseVectorStore.fromDocuments(documents, embeddings, couchbaseConfig);
|
|
324
|
+
}
|
|
325
|
+
catch (error) {
|
|
326
|
+
if (!(error instanceof n8n_workflow_1.NodeOperationError)) {
|
|
327
|
+
throw new n8n_workflow_1.NodeOperationError(context.getNode(), `Error: ${error.message}`);
|
|
328
|
+
}
|
|
329
|
+
throw error;
|
|
330
|
+
}
|
|
331
|
+
},
|
|
332
|
+
}) {
|
|
333
|
+
}
|
|
334
|
+
exports.VectorStoreCouchbaseSearch = VectorStoreCouchbaseSearch;
|
|
335
|
+
//# sourceMappingURL=VectorStoreCouchbaseSearch.node.js.map
|
package/dist/nodes/vector_store/VectorStoreCouchbaseSearch/VectorStoreCouchbaseSearch.node.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"VectorStoreCouchbaseSearch.node.js","sourceRoot":"","sources":["../../../../nodes/vector_store/VectorStoreCouchbaseSearch/VectorStoreCouchbaseSearch.node.ts"],"names":[],"mappings":"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"}
|
|
@@ -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":["../../../../../nodes/vector_store/shared/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,15 @@
|
|
|
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
|
+
} | undefined;
|
|
12
|
+
execute(this: IExecuteFunctions): Promise<INodeExecutionData[][]>;
|
|
13
|
+
supplyData(this: ISupplyDataFunctions, itemIndex: number): Promise<SupplyData>;
|
|
14
|
+
};
|
|
15
|
+
};
|
|
@@ -0,0 +1,227 @@
|
|
|
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 sharedFields_1 = require("../../../../utils/sharedFields");
|
|
6
|
+
const operations_1 = require("./operations");
|
|
7
|
+
const utils_1 = require("./utils");
|
|
8
|
+
const createVectorStoreNode = (args) => class VectorStoreNodeType {
|
|
9
|
+
constructor() {
|
|
10
|
+
var _a, _b, _c, _d;
|
|
11
|
+
this.description = {
|
|
12
|
+
displayName: args.meta.displayName,
|
|
13
|
+
name: args.meta.name,
|
|
14
|
+
description: args.meta.description,
|
|
15
|
+
icon: args.meta.icon,
|
|
16
|
+
iconColor: args.meta.iconColor,
|
|
17
|
+
group: ['transform'],
|
|
18
|
+
version: [1, 1.1],
|
|
19
|
+
defaults: {
|
|
20
|
+
name: args.meta.displayName,
|
|
21
|
+
},
|
|
22
|
+
codex: {
|
|
23
|
+
categories: ['AI'],
|
|
24
|
+
subcategories: {
|
|
25
|
+
AI: ['Vector Stores', 'Tools', 'Root Nodes'],
|
|
26
|
+
Tools: ['Other Tools'],
|
|
27
|
+
},
|
|
28
|
+
resources: {
|
|
29
|
+
primaryDocumentation: [
|
|
30
|
+
{
|
|
31
|
+
url: args.meta.docsUrl,
|
|
32
|
+
},
|
|
33
|
+
],
|
|
34
|
+
},
|
|
35
|
+
},
|
|
36
|
+
credentials: args.meta.credentials,
|
|
37
|
+
inputs: `={{
|
|
38
|
+
((parameters) => {
|
|
39
|
+
const mode = parameters?.mode;
|
|
40
|
+
const inputs = [{ displayName: "Embedding", type: "${n8n_workflow_1.NodeConnectionTypes.AiEmbedding}", required: true, maxConnections: 1}]
|
|
41
|
+
|
|
42
|
+
if (mode === 'retrieve-as-tool') {
|
|
43
|
+
return inputs;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
if (['insert', 'load', 'update'].includes(mode)) {
|
|
47
|
+
inputs.push({ displayName: "", type: "${n8n_workflow_1.NodeConnectionTypes.Main}"})
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
if (['insert'].includes(mode)) {
|
|
51
|
+
inputs.push({ displayName: "Document", type: "${n8n_workflow_1.NodeConnectionTypes.AiDocument}", required: true, maxConnections: 1})
|
|
52
|
+
}
|
|
53
|
+
return inputs
|
|
54
|
+
})($parameter)
|
|
55
|
+
}}`,
|
|
56
|
+
outputs: `={{
|
|
57
|
+
((parameters) => {
|
|
58
|
+
const mode = parameters?.mode ?? 'retrieve';
|
|
59
|
+
|
|
60
|
+
if (mode === 'retrieve-as-tool') {
|
|
61
|
+
return [{ displayName: "Tool", type: "${n8n_workflow_1.NodeConnectionTypes.AiTool}"}]
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
if (mode === 'retrieve') {
|
|
65
|
+
return [{ displayName: "Vector Store", type: "${n8n_workflow_1.NodeConnectionTypes.AiVectorStore}"}]
|
|
66
|
+
}
|
|
67
|
+
return [{ displayName: "", type: "${n8n_workflow_1.NodeConnectionTypes.Main}"}]
|
|
68
|
+
})($parameter)
|
|
69
|
+
}}`,
|
|
70
|
+
properties: [
|
|
71
|
+
{
|
|
72
|
+
displayName: 'Operation Mode',
|
|
73
|
+
name: 'mode',
|
|
74
|
+
type: 'options',
|
|
75
|
+
noDataExpression: true,
|
|
76
|
+
default: '',
|
|
77
|
+
options: (0, utils_1.getOperationModeOptions)(args),
|
|
78
|
+
},
|
|
79
|
+
{
|
|
80
|
+
...(0, sharedFields_1.getConnectionHintNoticeField)([n8n_workflow_1.NodeConnectionTypes.AiRetriever]),
|
|
81
|
+
displayOptions: {
|
|
82
|
+
show: {
|
|
83
|
+
mode: ['retrieve'],
|
|
84
|
+
},
|
|
85
|
+
},
|
|
86
|
+
},
|
|
87
|
+
{
|
|
88
|
+
displayName: 'Name',
|
|
89
|
+
name: 'toolName',
|
|
90
|
+
type: 'string',
|
|
91
|
+
default: '',
|
|
92
|
+
required: true,
|
|
93
|
+
description: 'Name of the vector store',
|
|
94
|
+
placeholder: 'e.g. company_knowledge_base',
|
|
95
|
+
validateType: 'string-alphanumeric',
|
|
96
|
+
displayOptions: {
|
|
97
|
+
show: {
|
|
98
|
+
mode: ['retrieve-as-tool'],
|
|
99
|
+
},
|
|
100
|
+
},
|
|
101
|
+
},
|
|
102
|
+
{
|
|
103
|
+
displayName: 'Description',
|
|
104
|
+
name: 'toolDescription',
|
|
105
|
+
type: 'string',
|
|
106
|
+
default: '',
|
|
107
|
+
required: true,
|
|
108
|
+
typeOptions: { rows: 2 },
|
|
109
|
+
description: 'Explain to the LLM what this tool does, a good, specific description would allow LLMs to produce expected results much more often',
|
|
110
|
+
placeholder: `e.g. ${args.meta.description}`,
|
|
111
|
+
displayOptions: {
|
|
112
|
+
show: {
|
|
113
|
+
mode: ['retrieve-as-tool'],
|
|
114
|
+
},
|
|
115
|
+
},
|
|
116
|
+
},
|
|
117
|
+
...args.sharedFields,
|
|
118
|
+
{
|
|
119
|
+
displayName: 'Embedding Batch Size',
|
|
120
|
+
name: 'embeddingBatchSize',
|
|
121
|
+
type: 'number',
|
|
122
|
+
default: 200,
|
|
123
|
+
description: 'Number of documents to embed in a single batch',
|
|
124
|
+
displayOptions: {
|
|
125
|
+
show: {
|
|
126
|
+
mode: ['insert'],
|
|
127
|
+
'@version': [{ _cnd: { gte: 1.1 } }],
|
|
128
|
+
},
|
|
129
|
+
},
|
|
130
|
+
},
|
|
131
|
+
...(0, utils_1.transformDescriptionForOperationMode)((_a = args.insertFields) !== null && _a !== void 0 ? _a : [], 'insert'),
|
|
132
|
+
{
|
|
133
|
+
displayName: 'Prompt',
|
|
134
|
+
name: 'prompt',
|
|
135
|
+
type: 'string',
|
|
136
|
+
default: '',
|
|
137
|
+
required: true,
|
|
138
|
+
description: 'Search prompt to retrieve matching documents from the vector store using similarity-based ranking',
|
|
139
|
+
displayOptions: {
|
|
140
|
+
show: {
|
|
141
|
+
mode: ['load'],
|
|
142
|
+
},
|
|
143
|
+
},
|
|
144
|
+
},
|
|
145
|
+
{
|
|
146
|
+
displayName: 'Limit',
|
|
147
|
+
name: 'topK',
|
|
148
|
+
type: 'number',
|
|
149
|
+
default: 4,
|
|
150
|
+
description: 'Number of top results to fetch from vector store',
|
|
151
|
+
displayOptions: {
|
|
152
|
+
show: {
|
|
153
|
+
mode: ['load', 'retrieve-as-tool'],
|
|
154
|
+
},
|
|
155
|
+
},
|
|
156
|
+
},
|
|
157
|
+
{
|
|
158
|
+
displayName: 'Include Metadata',
|
|
159
|
+
name: 'includeDocumentMetadata',
|
|
160
|
+
type: 'boolean',
|
|
161
|
+
default: true,
|
|
162
|
+
description: 'Whether or not to include document metadata',
|
|
163
|
+
displayOptions: {
|
|
164
|
+
show: {
|
|
165
|
+
mode: ['load', 'retrieve-as-tool'],
|
|
166
|
+
},
|
|
167
|
+
},
|
|
168
|
+
},
|
|
169
|
+
{
|
|
170
|
+
displayName: 'ID',
|
|
171
|
+
name: 'id',
|
|
172
|
+
type: 'string',
|
|
173
|
+
default: '',
|
|
174
|
+
required: true,
|
|
175
|
+
description: 'ID of an embedding entry',
|
|
176
|
+
displayOptions: {
|
|
177
|
+
show: {
|
|
178
|
+
mode: ['update'],
|
|
179
|
+
},
|
|
180
|
+
},
|
|
181
|
+
},
|
|
182
|
+
...(0, utils_1.transformDescriptionForOperationMode)((_b = args.loadFields) !== null && _b !== void 0 ? _b : [], [
|
|
183
|
+
'load',
|
|
184
|
+
'retrieve-as-tool',
|
|
185
|
+
]),
|
|
186
|
+
...(0, utils_1.transformDescriptionForOperationMode)((_c = args.retrieveFields) !== null && _c !== void 0 ? _c : [], 'retrieve'),
|
|
187
|
+
...(0, utils_1.transformDescriptionForOperationMode)((_d = args.updateFields) !== null && _d !== void 0 ? _d : [], 'update'),
|
|
188
|
+
],
|
|
189
|
+
};
|
|
190
|
+
this.methods = args.methods;
|
|
191
|
+
}
|
|
192
|
+
async execute() {
|
|
193
|
+
const mode = this.getNodeParameter('mode', 0);
|
|
194
|
+
const embeddings = (await this.getInputConnectionData(n8n_workflow_1.NodeConnectionTypes.AiEmbedding, 0));
|
|
195
|
+
if (mode === 'load') {
|
|
196
|
+
const items = this.getInputData(0);
|
|
197
|
+
const resultData = [];
|
|
198
|
+
for (let itemIndex = 0; itemIndex < items.length; itemIndex++) {
|
|
199
|
+
const docs = await (0, operations_1.handleLoadOperation)(this, args, embeddings, itemIndex);
|
|
200
|
+
resultData.push(...docs);
|
|
201
|
+
}
|
|
202
|
+
return [resultData];
|
|
203
|
+
}
|
|
204
|
+
if (mode === 'insert') {
|
|
205
|
+
const resultData = await (0, operations_1.handleInsertOperation)(this, args, embeddings);
|
|
206
|
+
return [resultData];
|
|
207
|
+
}
|
|
208
|
+
if (mode === 'update') {
|
|
209
|
+
const resultData = await (0, operations_1.handleUpdateOperation)(this, args, embeddings);
|
|
210
|
+
return [resultData];
|
|
211
|
+
}
|
|
212
|
+
throw new n8n_workflow_1.NodeOperationError(this.getNode(), 'Only the "load", "update" and "insert" operation modes are supported with execute');
|
|
213
|
+
}
|
|
214
|
+
async supplyData(itemIndex) {
|
|
215
|
+
const mode = this.getNodeParameter('mode', 0);
|
|
216
|
+
const embeddings = (await this.getInputConnectionData(n8n_workflow_1.NodeConnectionTypes.AiEmbedding, 0));
|
|
217
|
+
if (mode === 'retrieve') {
|
|
218
|
+
return await (0, operations_1.handleRetrieveOperation)(this, args, embeddings, itemIndex);
|
|
219
|
+
}
|
|
220
|
+
if (mode === 'retrieve-as-tool') {
|
|
221
|
+
return await (0, operations_1.handleRetrieveAsToolOperation)(this, args, embeddings, itemIndex);
|
|
222
|
+
}
|
|
223
|
+
throw new n8n_workflow_1.NodeOperationError(this.getNode(), 'Only the "retrieve" and "retrieve-as-tool" operation mode is supported to supply data');
|
|
224
|
+
}
|
|
225
|
+
};
|
|
226
|
+
exports.createVectorStoreNode = createVectorStoreNode;
|
|
227
|
+
//# sourceMappingURL=createVectorStoreNode.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createVectorStoreNode.js","sourceRoot":"","sources":["../../../../../nodes/vector_store/shared/createVectorStoreNode/createVectorStoreNode.ts"],"names":[],"mappings":"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"}
|