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.
- package/README.md +117 -5
- package/dist/index.d.ts +0 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -3
- package/dist/index.js.map +1 -1
- package/dist/nodes/Minimemory/BM25Index.d.ts +108 -0
- package/dist/nodes/Minimemory/BM25Index.d.ts.map +1 -0
- package/dist/nodes/Minimemory/BM25Index.js +259 -0
- package/dist/nodes/Minimemory/BM25Index.js.map +1 -0
- package/dist/nodes/Minimemory/HybridSearch.d.ts +59 -0
- package/dist/nodes/Minimemory/HybridSearch.d.ts.map +1 -0
- package/dist/nodes/Minimemory/HybridSearch.js +158 -0
- package/dist/nodes/Minimemory/HybridSearch.js.map +1 -0
- package/dist/nodes/Minimemory/Minimemory.node.d.ts.map +1 -1
- package/dist/nodes/Minimemory/Minimemory.node.js +230 -13
- package/dist/nodes/Minimemory/Minimemory.node.js.map +1 -1
- package/dist/nodes/Minimemory/TextUtils.d.ts +22 -0
- package/dist/nodes/Minimemory/TextUtils.d.ts.map +1 -0
- package/dist/nodes/Minimemory/TextUtils.js +92 -0
- package/dist/nodes/Minimemory/TextUtils.js.map +1 -0
- package/dist/nodes/Minimemory/VectorDB.d.ts +118 -1
- package/dist/nodes/Minimemory/VectorDB.d.ts.map +1 -1
- package/dist/nodes/Minimemory/VectorDB.js +351 -4
- package/dist/nodes/Minimemory/VectorDB.js.map +1 -1
- package/package.json +3 -6
- package/dist/credentials/MinimemoryConfig.credentials.d.ts +0 -8
- package/dist/credentials/MinimemoryConfig.credentials.d.ts.map +0 -1
- package/dist/credentials/MinimemoryConfig.credentials.js +0 -40
- 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;
|
|
1
|
+
{"version":3,"file":"VectorDB.d.ts","sourceRoot":"","sources":["../../../nodes/Minimemory/VectorDB.ts"],"names":[],"mappings":"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"}
|