n8n-nodes-minimemory 0.1.0 → 0.3.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.
Files changed (29) hide show
  1. package/README.md +117 -5
  2. package/dist/index.d.ts +0 -1
  3. package/dist/index.d.ts.map +1 -1
  4. package/dist/index.js +1 -3
  5. package/dist/index.js.map +1 -1
  6. package/dist/nodes/Minimemory/BM25Index.d.ts +108 -0
  7. package/dist/nodes/Minimemory/BM25Index.d.ts.map +1 -0
  8. package/dist/nodes/Minimemory/BM25Index.js +259 -0
  9. package/dist/nodes/Minimemory/BM25Index.js.map +1 -0
  10. package/dist/nodes/Minimemory/HybridSearch.d.ts +59 -0
  11. package/dist/nodes/Minimemory/HybridSearch.d.ts.map +1 -0
  12. package/dist/nodes/Minimemory/HybridSearch.js +158 -0
  13. package/dist/nodes/Minimemory/HybridSearch.js.map +1 -0
  14. package/dist/nodes/Minimemory/Minimemory.node.d.ts.map +1 -1
  15. package/dist/nodes/Minimemory/Minimemory.node.js +230 -13
  16. package/dist/nodes/Minimemory/Minimemory.node.js.map +1 -1
  17. package/dist/nodes/Minimemory/TextUtils.d.ts +22 -0
  18. package/dist/nodes/Minimemory/TextUtils.d.ts.map +1 -0
  19. package/dist/nodes/Minimemory/TextUtils.js +92 -0
  20. package/dist/nodes/Minimemory/TextUtils.js.map +1 -0
  21. package/dist/nodes/Minimemory/VectorDB.d.ts +118 -1
  22. package/dist/nodes/Minimemory/VectorDB.d.ts.map +1 -1
  23. package/dist/nodes/Minimemory/VectorDB.js +351 -4
  24. package/dist/nodes/Minimemory/VectorDB.js.map +1 -1
  25. package/package.json +3 -6
  26. package/dist/credentials/MinimemoryConfig.credentials.d.ts +0 -8
  27. package/dist/credentials/MinimemoryConfig.credentials.d.ts.map +0 -1
  28. package/dist/credentials/MinimemoryConfig.credentials.js +0 -40
  29. package/dist/credentials/MinimemoryConfig.credentials.js.map +0 -1
@@ -0,0 +1,92 @@
1
+ "use strict";
2
+ /**
3
+ * Text processing utilities for BM25 keyword search
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.tokenize = tokenize;
7
+ exports.getTermFrequencies = getTermFrequencies;
8
+ exports.extractTextFromMetadata = extractTextFromMetadata;
9
+ const DEFAULT_OPTIONS = {
10
+ lowercase: true,
11
+ removePunctuation: true,
12
+ removeNumbers: false,
13
+ minTokenLength: 1,
14
+ };
15
+ /**
16
+ * Tokenizes text into normalized tokens
17
+ */
18
+ function tokenize(text, options) {
19
+ const opts = { ...DEFAULT_OPTIONS, ...options };
20
+ if (!text || typeof text !== 'string') {
21
+ return [];
22
+ }
23
+ let processed = text;
24
+ // Convert to lowercase
25
+ if (opts.lowercase) {
26
+ processed = processed.toLowerCase();
27
+ }
28
+ // Remove punctuation (keep alphanumeric and spaces)
29
+ if (opts.removePunctuation) {
30
+ processed = processed.replace(/[^\p{L}\p{N}\s]/gu, ' ');
31
+ }
32
+ // Split on whitespace
33
+ let tokens = processed.split(/\s+/).filter(t => t.length > 0);
34
+ // Remove numbers if requested
35
+ if (opts.removeNumbers) {
36
+ tokens = tokens.filter(t => !/^\d+$/.test(t));
37
+ }
38
+ // Filter by minimum length
39
+ if (opts.minTokenLength && opts.minTokenLength > 1) {
40
+ const minLen = opts.minTokenLength;
41
+ tokens = tokens.filter(t => t.length >= minLen);
42
+ }
43
+ return tokens;
44
+ }
45
+ /**
46
+ * Creates term frequency map for a document
47
+ */
48
+ function getTermFrequencies(tokens) {
49
+ const frequencies = new Map();
50
+ for (const token of tokens) {
51
+ const current = frequencies.get(token) || 0;
52
+ frequencies.set(token, current + 1);
53
+ }
54
+ return frequencies;
55
+ }
56
+ /**
57
+ * Gets a nested value from an object using dot notation
58
+ */
59
+ function getNestedValue(obj, path) {
60
+ const parts = path.split('.');
61
+ let current = obj;
62
+ for (const part of parts) {
63
+ if (current === null || current === undefined)
64
+ return undefined;
65
+ if (typeof current !== 'object')
66
+ return undefined;
67
+ current = current[part];
68
+ }
69
+ return current;
70
+ }
71
+ /**
72
+ * Extracts text from metadata fields and concatenates them
73
+ */
74
+ function extractTextFromMetadata(metadata, textFields) {
75
+ if (!metadata) {
76
+ return '';
77
+ }
78
+ const textParts = [];
79
+ for (const field of textFields) {
80
+ const value = getNestedValue(metadata, field);
81
+ if (typeof value === 'string') {
82
+ textParts.push(value);
83
+ }
84
+ else if (Array.isArray(value)) {
85
+ // Handle arrays of strings (e.g., tags)
86
+ const stringValues = value.filter(v => typeof v === 'string');
87
+ textParts.push(...stringValues);
88
+ }
89
+ }
90
+ return textParts.join(' ');
91
+ }
92
+ //# sourceMappingURL=TextUtils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TextUtils.js","sourceRoot":"","sources":["../../../nodes/Minimemory/TextUtils.ts"],"names":[],"mappings":"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"}
@@ -4,8 +4,11 @@
4
4
  * This is a pure TypeScript implementation that works without native bindings.
5
5
  * Provides similarity search using cosine, euclidean, or dot product distance.
6
6
  */
7
+ import { BM25SearchResult } from './BM25Index';
8
+ import { SearchMode, FusionMethod, HybridSearchResult } from './HybridSearch';
7
9
  export type DistanceMetric = 'cosine' | 'euclidean' | 'dot';
8
10
  export type IndexType = 'flat' | 'hnsw';
11
+ export type { SearchMode, FusionMethod, HybridSearchResult, BM25SearchResult };
9
12
  export interface VectorDBOptions {
10
13
  dimensions: number;
11
14
  distance?: DistanceMetric;
@@ -17,6 +20,76 @@ export interface SearchResult {
17
20
  similarity: number;
18
21
  metadata?: Record<string, unknown>;
19
22
  }
23
+ /**
24
+ * Filter operators for metadata queries
25
+ */
26
+ export type FilterOperator = '$eq' | '$ne' | '$gt' | '$gte' | '$lt' | '$lte' | '$in' | '$nin' | '$exists' | '$contains' | '$startsWith' | '$endsWith';
27
+ /**
28
+ * Single field filter condition
29
+ */
30
+ export type FilterCondition = {
31
+ $eq: unknown;
32
+ } | {
33
+ $ne: unknown;
34
+ } | {
35
+ $gt: number | string | Date;
36
+ } | {
37
+ $gte: number | string | Date;
38
+ } | {
39
+ $lt: number | string | Date;
40
+ } | {
41
+ $lte: number | string | Date;
42
+ } | {
43
+ $in: unknown[];
44
+ } | {
45
+ $nin: unknown[];
46
+ } | {
47
+ $exists: boolean;
48
+ } | {
49
+ $contains: string;
50
+ } | {
51
+ $startsWith: string;
52
+ } | {
53
+ $endsWith: string;
54
+ };
55
+ /**
56
+ * Metadata filter - can be a simple value (implicit $eq) or a condition object
57
+ */
58
+ export type MetadataFilterValue = unknown | FilterCondition;
59
+ /**
60
+ * Complete metadata filter with optional logical operators
61
+ */
62
+ export interface MetadataFilter {
63
+ [field: string]: MetadataFilterValue | MetadataFilter[] | undefined;
64
+ $and?: MetadataFilter[];
65
+ $or?: MetadataFilter[];
66
+ }
67
+ /**
68
+ * Search options including optional metadata filter
69
+ */
70
+ export interface SearchOptions {
71
+ k: number;
72
+ filter?: MetadataFilter;
73
+ minSimilarity?: number;
74
+ includeVectors?: boolean;
75
+ }
76
+ /**
77
+ * Hybrid search options
78
+ */
79
+ export interface HybridSearchOptions {
80
+ mode: SearchMode;
81
+ k: number;
82
+ queryVector?: number[];
83
+ filter?: MetadataFilter;
84
+ minSimilarity?: number;
85
+ keywords?: string;
86
+ textFields?: string[];
87
+ bm25K1?: number;
88
+ bm25B?: number;
89
+ alpha?: number;
90
+ fusionMethod?: FusionMethod;
91
+ rrfConstant?: number;
92
+ }
20
93
  /**
21
94
  * In-memory vector database
22
95
  */
@@ -25,6 +98,8 @@ export declare class VectorDB {
25
98
  private readonly _dimensions;
26
99
  private readonly _distance;
27
100
  private readonly _indexType;
101
+ private bm25Index;
102
+ private bm25TextFields;
28
103
  constructor(options: VectorDBOptions);
29
104
  /**
30
105
  * Configured number of dimensions
@@ -60,8 +135,17 @@ export declare class VectorDB {
60
135
  upsert(id: string, vector: number[], metadata?: Record<string, unknown>): void;
61
136
  /**
62
137
  * Searches for the k nearest neighbors to the query vector
138
+ * @param query - The query vector
139
+ * @param k - Number of results to return
140
+ * @param options - Optional search options including filter
63
141
  */
64
- search(query: number[], k: number): SearchResult[];
142
+ search(query: number[], k: number, options?: Partial<SearchOptions>): SearchResult[];
143
+ /**
144
+ * Searches with a filter object for more complex queries
145
+ * @param query - The query vector
146
+ * @param options - Search options including k, filter, minSimilarity
147
+ */
148
+ searchWithOptions(query: number[], options: SearchOptions): SearchResult[];
65
149
  /**
66
150
  * Gets a vector by its ID
67
151
  */
@@ -85,6 +169,39 @@ export declare class VectorDB {
85
169
  * Gets all vector IDs
86
170
  */
87
171
  getIds(): string[];
172
+ /**
173
+ * Configures the BM25 index for keyword search
174
+ */
175
+ configureBM25(options: {
176
+ textFields: string[];
177
+ k1?: number;
178
+ b?: number;
179
+ }): void;
180
+ /**
181
+ * Ensures BM25 index is configured (lazy initialization)
182
+ */
183
+ private ensureBM25Index;
184
+ /**
185
+ * Checks if BM25 index is configured
186
+ */
187
+ hasBM25Index(): boolean;
188
+ /**
189
+ * Gets BM25 index statistics
190
+ */
191
+ getBM25Stats(): Record<string, unknown> | null;
192
+ /**
193
+ * Performs keyword-only search using BM25
194
+ */
195
+ keywordSearch(query: string, k: number, options?: {
196
+ textFields?: string[];
197
+ filter?: MetadataFilter;
198
+ k1?: number;
199
+ b?: number;
200
+ }): BM25SearchResult[];
201
+ /**
202
+ * Performs hybrid search combining vector and keyword search
203
+ */
204
+ hybridSearch(options: HybridSearchOptions): HybridSearchResult[];
88
205
  /**
89
206
  * Saves the database to a JSON file
90
207
  */
@@ -1 +1 @@
1
- {"version":3,"file":"VectorDB.d.ts","sourceRoot":"","sources":["../../../nodes/Minimemory/VectorDB.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,MAAM,MAAM,cAAc,GAAG,QAAQ,GAAG,WAAW,GAAG,KAAK,CAAC;AAC5D,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,MAAM,CAAC;AAExC,MAAM,WAAW,eAAe;IAC/B,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,cAAc,CAAC;IAC1B,SAAS,CAAC,EAAE,SAAS,CAAC;CACtB;AAED,MAAM,WAAW,YAAY;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC;AAqED;;GAEG;AACH,qBAAa,QAAQ;IACpB,OAAO,CAAC,OAAO,CAAwC;IACvD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;IACrC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAiB;IAC3C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAY;gBAE3B,OAAO,EAAE,eAAe;IAMpC;;OAEG;IACH,IAAI,UAAU,IAAI,MAAM,CAEvB;IAED;;OAEG;IACH,IAAI,QAAQ,IAAI,cAAc,CAE7B;IAED;;OAEG;IACH,IAAI,SAAS,IAAI,SAAS,CAEzB;IAED;;OAEG;IACH,IAAI,MAAM,IAAI,MAAM,CAEnB;IAED;;OAEG;IACH,OAAO,CAAC,WAAW;IAQnB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAazB;;OAEG;IACH,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAqB9E;;OAEG;IACH,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAiB9E;;OAEG;IACH,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,GAAG,YAAY,EAAE;IA4ClD;;OAEG;IACH,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG;QAAE,MAAM,EAAE,MAAM,EAAE,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAA;KAAE,GAAG,IAAI;IAWtF;;OAEG;IACH,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IAI3B;;OAEG;IACH,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IAI7B;;OAEG;IACH,KAAK,IAAI,IAAI;IAIb;;OAEG;IACH,MAAM,IAAI,MAAM,EAAE;IAIlB;;OAEG;IACH,IAAI,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAkB5B;;OAEG;IACH,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,GAAG,QAAQ;IA2BvC;;OAEG;IACH,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;CAShC;AAKD;;GAEG;AACH,wBAAgB,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,CAQ5C;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,eAAe,GAAG,QAAQ,CAOzE;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,eAAe,GAAG,QAAQ,CAU/E;AAED;;GAEG;AACH,wBAAgB,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,QAAQ,CAI/D;AAED;;GAEG;AACH,wBAAgB,OAAO,IAAI,MAAM,EAAE,CAElC;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAE9C;AAED;;GAEG;AACH,wBAAgB,UAAU,IAAI,IAAI,CAEjC"}
1
+ {"version":3,"file":"VectorDB.d.ts","sourceRoot":"","sources":["../../../nodes/Minimemory/VectorDB.ts"],"names":[],"mappings":"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"}