@rushdb/langchain 0.0.0-stage → 0.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/LICENSE +201 -0
- package/README.md +127 -2
- package/dist/checkpoint.d.ts +45 -0
- package/dist/checkpoint.d.ts.map +1 -0
- package/dist/checkpoint.js +291 -0
- package/dist/checkpoint.js.map +1 -0
- package/dist/connection.d.ts +43 -0
- package/dist/connection.d.ts.map +1 -0
- package/dist/connection.js +142 -0
- package/dist/connection.js.map +1 -0
- package/dist/filters.d.ts +8 -0
- package/dist/filters.d.ts.map +1 -0
- package/dist/filters.js +75 -0
- package/dist/filters.js.map +1 -0
- package/dist/index.d.ts +11 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +7 -0
- package/dist/index.js.map +1 -0
- package/dist/retrievers.d.ts +46 -0
- package/dist/retrievers.d.ts.map +1 -0
- package/dist/retrievers.js +70 -0
- package/dist/retrievers.js.map +1 -0
- package/dist/store.d.ts +78 -0
- package/dist/store.d.ts.map +1 -0
- package/dist/store.js +442 -0
- package/dist/store.js.map +1 -0
- package/dist/vectorstores.d.ts +97 -0
- package/dist/vectorstores.d.ts.map +1 -0
- package/dist/vectorstores.js +257 -0
- package/dist/vectorstores.js.map +1 -0
- package/package.json +72 -4
package/dist/store.js
ADDED
|
@@ -0,0 +1,442 @@
|
|
|
1
|
+
/** RushDB-backed LangGraph long-term memory store. */
|
|
2
|
+
import { BaseStore, getTextAtPath } from '@langchain/langgraph-checkpoint';
|
|
3
|
+
import { FAR_FUTURE, clientFromEnv, createRows, deleteIds, findAll, isScalar, iso, mirror, nowIso, toJson, transact } from './connection.js';
|
|
4
|
+
export const VALUE_PREFIX = 'value';
|
|
5
|
+
const SEARCH_POOL_MAX = 10_000;
|
|
6
|
+
export function namespaceString(namespace) {
|
|
7
|
+
return namespace.join('.');
|
|
8
|
+
}
|
|
9
|
+
/** Records whose namespace equals `prefix` or starts with it. */
|
|
10
|
+
export function prefixWhere(prefix) {
|
|
11
|
+
if (!prefix.length)
|
|
12
|
+
return {};
|
|
13
|
+
const ns = namespaceString(prefix);
|
|
14
|
+
return { $or: [{ ns }, { ns: { $startsWith: `${ns}.` } }] };
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* LangGraph `BaseStore` on RushDB, Cloud or self-hosted alike.
|
|
18
|
+
*
|
|
19
|
+
* Items are records of `itemLabel`; with `index` configured, every embedded
|
|
20
|
+
* text of an item is a record of `vectorLabel` carrying an external vector
|
|
21
|
+
* (see the repository's `spec/README.md`).
|
|
22
|
+
*/
|
|
23
|
+
export class RushDBStore extends BaseStore {
|
|
24
|
+
client;
|
|
25
|
+
itemLabel;
|
|
26
|
+
vectorLabel;
|
|
27
|
+
ttl;
|
|
28
|
+
indexConfig;
|
|
29
|
+
indexFields;
|
|
30
|
+
vectorIndexReady = false;
|
|
31
|
+
sweeper;
|
|
32
|
+
constructor(config = {}) {
|
|
33
|
+
super();
|
|
34
|
+
this.client = config.client ?? clientFromEnv();
|
|
35
|
+
this.itemLabel = config.itemLabel ?? 'LG_STORE_ITEM';
|
|
36
|
+
this.vectorLabel = config.vectorLabel ?? 'LG_STORE_VECTOR';
|
|
37
|
+
this.ttl = config.ttl;
|
|
38
|
+
this.indexConfig = config.index;
|
|
39
|
+
this.indexFields = config.index ? (config.index.fields ?? ['$']) : [];
|
|
40
|
+
}
|
|
41
|
+
// ── BaseStore ──────────────────────────────────────────────────────────
|
|
42
|
+
async batch(operations) {
|
|
43
|
+
const results = [];
|
|
44
|
+
for (const op of operations) {
|
|
45
|
+
if ('namespacePrefix' in op) {
|
|
46
|
+
results.push(await this.searchOp(op));
|
|
47
|
+
}
|
|
48
|
+
else if ('value' in op) {
|
|
49
|
+
await this.putOp(op);
|
|
50
|
+
results.push(undefined);
|
|
51
|
+
}
|
|
52
|
+
else if ('key' in op && 'namespace' in op) {
|
|
53
|
+
results.push(await this.getOp(op));
|
|
54
|
+
}
|
|
55
|
+
else {
|
|
56
|
+
results.push(await this.listNamespacesOp(op));
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
return results;
|
|
60
|
+
}
|
|
61
|
+
/** Starts the TTL sweeper when the store has a TTL. */
|
|
62
|
+
start() {
|
|
63
|
+
if (this.ttl)
|
|
64
|
+
this.startTtlSweeper();
|
|
65
|
+
}
|
|
66
|
+
stop() {
|
|
67
|
+
this.stopTtlSweeper();
|
|
68
|
+
}
|
|
69
|
+
// ── get ────────────────────────────────────────────────────────────────
|
|
70
|
+
live() {
|
|
71
|
+
return { expires_at: { $gt: nowIso() } };
|
|
72
|
+
}
|
|
73
|
+
get refreshOnRead() {
|
|
74
|
+
return this.ttl?.refreshOnRead ?? true;
|
|
75
|
+
}
|
|
76
|
+
async itemRows(namespace, key) {
|
|
77
|
+
return findAll(this.client, {
|
|
78
|
+
labels: [this.itemLabel],
|
|
79
|
+
where: { ns: namespaceString(namespace), key }
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
async getOp(op) {
|
|
83
|
+
const rows = (await this.itemRows(op.namespace, op.key)).filter((r) => !expired(r));
|
|
84
|
+
if (!rows.length)
|
|
85
|
+
return null;
|
|
86
|
+
if (this.refreshOnRead)
|
|
87
|
+
await this.refresh([rows[0]]);
|
|
88
|
+
return toItem(rows[0]);
|
|
89
|
+
}
|
|
90
|
+
async refresh(rows) {
|
|
91
|
+
for (const row of rows) {
|
|
92
|
+
const minutes = row.ttl_minutes;
|
|
93
|
+
if (typeof minutes !== 'number')
|
|
94
|
+
continue;
|
|
95
|
+
const expires = iso(new Date(Date.now() + minutes * 60_000));
|
|
96
|
+
await this.client.records.update({
|
|
97
|
+
target: row.__id,
|
|
98
|
+
label: this.itemLabel,
|
|
99
|
+
data: { expires_at: expires }
|
|
100
|
+
});
|
|
101
|
+
row.expires_at = expires;
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
// ── put / delete ───────────────────────────────────────────────────────
|
|
105
|
+
async putOp(op) {
|
|
106
|
+
const existing = await this.itemRows(op.namespace, op.key);
|
|
107
|
+
const oldVectors = await this.vectorIds(op.namespace, op.key);
|
|
108
|
+
if (op.value === null) {
|
|
109
|
+
await deleteIds(this.client, [...existing.map((r) => r.__id), ...oldVectors]);
|
|
110
|
+
return;
|
|
111
|
+
}
|
|
112
|
+
const now = nowIso();
|
|
113
|
+
const createdAt = existing[0]?.created_at ?? now;
|
|
114
|
+
const ttl = this.ttl?.defaultTtl;
|
|
115
|
+
const expiresAt = ttl !== undefined ? iso(new Date(Date.now() + ttl * 60_000)) : FAR_FUTURE;
|
|
116
|
+
const value = { ...op.value };
|
|
117
|
+
const mirrored = mirror(VALUE_PREFIX, value);
|
|
118
|
+
const item = {
|
|
119
|
+
ns: namespaceString(op.namespace),
|
|
120
|
+
ns_depth: op.namespace.length,
|
|
121
|
+
key: op.key,
|
|
122
|
+
lg_value: toJson(value),
|
|
123
|
+
created_at: createdAt,
|
|
124
|
+
updated_at: now,
|
|
125
|
+
expires_at: expiresAt,
|
|
126
|
+
...mirrored
|
|
127
|
+
};
|
|
128
|
+
if (ttl !== undefined)
|
|
129
|
+
item.ttl_minutes = ttl;
|
|
130
|
+
await transact(this.client, existing.map((r) => r.__id), [[this.itemLabel, [item]]]);
|
|
131
|
+
await deleteIds(this.client, oldVectors);
|
|
132
|
+
const texts = this.texts(value, op.index);
|
|
133
|
+
if (texts.length && this.indexConfig) {
|
|
134
|
+
const vectors = await this.indexConfig.embeddings.embedDocuments(texts.map(([, text]) => text));
|
|
135
|
+
await this.ensureVectorIndex();
|
|
136
|
+
const rows = texts.map(([field, text]) => ({
|
|
137
|
+
ns: item.ns,
|
|
138
|
+
ns_depth: item.ns_depth,
|
|
139
|
+
key: op.key,
|
|
140
|
+
field,
|
|
141
|
+
text,
|
|
142
|
+
...mirrored
|
|
143
|
+
}));
|
|
144
|
+
await createRows(this.client, this.vectorLabel, rows, vectors.map((vector) => [{ propertyName: 'text', vector, similarityFunction: 'cosine' }]));
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
texts(value, index) {
|
|
148
|
+
if (!this.indexConfig || index === false)
|
|
149
|
+
return [];
|
|
150
|
+
const fields = Array.isArray(index) ? index : this.indexFields;
|
|
151
|
+
const out = [];
|
|
152
|
+
for (const path of fields) {
|
|
153
|
+
for (const text of getTextAtPath(value, path)) {
|
|
154
|
+
if (text)
|
|
155
|
+
out.push([path, text]);
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
return out;
|
|
159
|
+
}
|
|
160
|
+
async vectorIds(namespace, key) {
|
|
161
|
+
if (!this.indexConfig)
|
|
162
|
+
return [];
|
|
163
|
+
const rows = await findAll(this.client, {
|
|
164
|
+
labels: [this.vectorLabel],
|
|
165
|
+
where: { ns: namespaceString(namespace), key }
|
|
166
|
+
});
|
|
167
|
+
return rows.map((r) => r.__id);
|
|
168
|
+
}
|
|
169
|
+
async ensureVectorIndex() {
|
|
170
|
+
if (this.vectorIndexReady || !this.indexConfig)
|
|
171
|
+
return;
|
|
172
|
+
const dims = this.indexConfig.dims;
|
|
173
|
+
const existing = ((await this.client.ai.indexes.find()).data ?? []);
|
|
174
|
+
const found = existing.some((index) => index.label === this.vectorLabel &&
|
|
175
|
+
index.propertyName === 'text' &&
|
|
176
|
+
index.sourceType === 'external' &&
|
|
177
|
+
index.dimensions === dims &&
|
|
178
|
+
index.similarityFunction === 'cosine');
|
|
179
|
+
if (!found) {
|
|
180
|
+
await this.client.ai.indexes.create({
|
|
181
|
+
label: this.vectorLabel,
|
|
182
|
+
propertyName: 'text',
|
|
183
|
+
external: true,
|
|
184
|
+
dimensions: dims,
|
|
185
|
+
similarityFunction: 'cosine'
|
|
186
|
+
});
|
|
187
|
+
}
|
|
188
|
+
this.vectorIndexReady = true;
|
|
189
|
+
}
|
|
190
|
+
// ── search ─────────────────────────────────────────────────────────────
|
|
191
|
+
async searchOp(op) {
|
|
192
|
+
const limit = op.limit ?? 10;
|
|
193
|
+
const offset = op.offset ?? 0;
|
|
194
|
+
const [pushed0, exact] = pushdown(op.filter);
|
|
195
|
+
let pushed = pushed0;
|
|
196
|
+
if (op.namespacePrefix.length) {
|
|
197
|
+
const prefix = prefixWhere(op.namespacePrefix);
|
|
198
|
+
pushed = Object.keys(pushed).length ? { $and: [pushed, prefix] } : prefix;
|
|
199
|
+
}
|
|
200
|
+
let items;
|
|
201
|
+
if (op.query && this.indexConfig) {
|
|
202
|
+
// Liveness is checked on the item: vectors carry no expiry.
|
|
203
|
+
items = await this.vectorSearch(op, pushed, offset, limit);
|
|
204
|
+
}
|
|
205
|
+
else {
|
|
206
|
+
const where = Object.keys(pushed).length ? { $and: [this.live(), pushed] } : this.live();
|
|
207
|
+
const search = { labels: [this.itemLabel], where, orderBy: { updated_at: 'desc' } };
|
|
208
|
+
let rows;
|
|
209
|
+
if (exact) {
|
|
210
|
+
const page = await this.client.records.find({ ...search, skip: offset, limit });
|
|
211
|
+
rows = page.data.map((r) => r.data);
|
|
212
|
+
}
|
|
213
|
+
else {
|
|
214
|
+
const matched = (await findAll(this.client, search)).filter((r) => matches(value(r), op.filter));
|
|
215
|
+
rows = matched.slice(offset, offset + limit);
|
|
216
|
+
}
|
|
217
|
+
items = rows.map((r) => toSearchItem(r, undefined));
|
|
218
|
+
}
|
|
219
|
+
if (this.refreshOnRead && items.length)
|
|
220
|
+
await this.refreshItems(items);
|
|
221
|
+
return items;
|
|
222
|
+
}
|
|
223
|
+
async vectorSearch(op, where, offset, limit) {
|
|
224
|
+
const index = this.indexConfig;
|
|
225
|
+
const vector = await index.embeddings.embedQuery(op.query ?? '');
|
|
226
|
+
await this.ensureVectorIndex();
|
|
227
|
+
const wanted = offset + limit;
|
|
228
|
+
let pool = Math.max(wanted * Math.max(1, this.indexFields.length) * 2, 10);
|
|
229
|
+
for (;;) {
|
|
230
|
+
const params = {
|
|
231
|
+
labels: [this.vectorLabel],
|
|
232
|
+
propertyName: 'text',
|
|
233
|
+
queryVector: vector,
|
|
234
|
+
similarityFunction: 'cosine',
|
|
235
|
+
limit: pool
|
|
236
|
+
};
|
|
237
|
+
if (Object.keys(where).length)
|
|
238
|
+
params.where = where;
|
|
239
|
+
const result = await this.client.records.vectorSearch(params);
|
|
240
|
+
const hits = result.data.map((r) => r.data);
|
|
241
|
+
const best = new Map();
|
|
242
|
+
for (const hit of hits) {
|
|
243
|
+
const ident = JSON.stringify([hit.ns, hit.key]);
|
|
244
|
+
const score = Number(hit.__score ?? 0);
|
|
245
|
+
const seen = best.get(ident);
|
|
246
|
+
if (!seen || score > seen[2])
|
|
247
|
+
best.set(ident, [hit.ns, hit.key, score]);
|
|
248
|
+
}
|
|
249
|
+
const ranked = [...best.values()].sort((a, b) => b[2] - a[2]);
|
|
250
|
+
const items = [];
|
|
251
|
+
for (const [ns, key, score] of ranked) {
|
|
252
|
+
const rows = (await findAll(this.client, { labels: [this.itemLabel], where: { ns, key } })).filter((r) => !expired(r));
|
|
253
|
+
if (rows.length && matches(value(rows[0]), op.filter))
|
|
254
|
+
items.push(toSearchItem(rows[0], score));
|
|
255
|
+
if (items.length >= wanted)
|
|
256
|
+
break;
|
|
257
|
+
}
|
|
258
|
+
if (items.length >= wanted || hits.length < pool || pool >= SEARCH_POOL_MAX) {
|
|
259
|
+
return items.slice(offset, offset + limit);
|
|
260
|
+
}
|
|
261
|
+
pool = Math.min(pool * 4, SEARCH_POOL_MAX);
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
async refreshItems(items) {
|
|
265
|
+
for (const item of items) {
|
|
266
|
+
const rows = (await this.itemRows(item.namespace, item.key)).filter((r) => typeof r.ttl_minutes === 'number');
|
|
267
|
+
await this.refresh(rows);
|
|
268
|
+
}
|
|
269
|
+
}
|
|
270
|
+
// ── namespaces ─────────────────────────────────────────────────────────
|
|
271
|
+
async listNamespacesOp(op) {
|
|
272
|
+
const rows = await findAll(this.client, {
|
|
273
|
+
labels: [this.itemLabel],
|
|
274
|
+
where: this.live(),
|
|
275
|
+
select: { items: { $count: '*' } },
|
|
276
|
+
groupBy: ['ns']
|
|
277
|
+
});
|
|
278
|
+
const seen = new Map();
|
|
279
|
+
for (const row of rows) {
|
|
280
|
+
const ns = row.ns;
|
|
281
|
+
if (typeof ns !== 'string' || !ns)
|
|
282
|
+
continue;
|
|
283
|
+
let path = ns.split('.');
|
|
284
|
+
if (op.matchConditions?.length && !op.matchConditions.every((c) => doesMatch(c, path)))
|
|
285
|
+
continue;
|
|
286
|
+
if (op.maxDepth !== undefined)
|
|
287
|
+
path = path.slice(0, op.maxDepth);
|
|
288
|
+
seen.set(JSON.stringify(path), path);
|
|
289
|
+
}
|
|
290
|
+
const ordered = [...seen.values()].sort(compareNamespaces);
|
|
291
|
+
const offset = op.offset ?? 0;
|
|
292
|
+
return ordered.slice(offset, offset + (op.limit ?? ordered.length));
|
|
293
|
+
}
|
|
294
|
+
// ── TTL sweeping ───────────────────────────────────────────────────────
|
|
295
|
+
/** Delete expired items and their vectors; returns how many items expired. */
|
|
296
|
+
async sweep() {
|
|
297
|
+
const items = await findAll(this.client, {
|
|
298
|
+
labels: [this.itemLabel],
|
|
299
|
+
where: { expires_at: { $lte: nowIso() } }
|
|
300
|
+
});
|
|
301
|
+
for (const row of items) {
|
|
302
|
+
const vectors = await this.vectorIds(row.ns.split('.'), row.key);
|
|
303
|
+
await deleteIds(this.client, [row.__id, ...vectors]);
|
|
304
|
+
}
|
|
305
|
+
return items.length;
|
|
306
|
+
}
|
|
307
|
+
/** Run `sweep()` every `sweepIntervalMinutes` (default: the TTL config's, else 5). */
|
|
308
|
+
startTtlSweeper(sweepIntervalMinutes) {
|
|
309
|
+
if (this.sweeper)
|
|
310
|
+
return;
|
|
311
|
+
const minutes = sweepIntervalMinutes ?? this.ttl?.sweepIntervalMinutes ?? 5;
|
|
312
|
+
this.sweeper = setInterval(() => {
|
|
313
|
+
this.sweep().catch((error) => console.warn(`[@rushdb/langchain] TTL sweep failed: ${String(error)}`));
|
|
314
|
+
}, minutes * 60_000);
|
|
315
|
+
this.sweeper.unref?.();
|
|
316
|
+
}
|
|
317
|
+
stopTtlSweeper() {
|
|
318
|
+
if (this.sweeper)
|
|
319
|
+
clearInterval(this.sweeper);
|
|
320
|
+
this.sweeper = undefined;
|
|
321
|
+
}
|
|
322
|
+
}
|
|
323
|
+
// ── helpers ──────────────────────────────────────────────────────────────
|
|
324
|
+
function expired(row) {
|
|
325
|
+
return typeof row.expires_at === 'string' && new Date(row.expires_at).getTime() <= Date.now();
|
|
326
|
+
}
|
|
327
|
+
function value(row) {
|
|
328
|
+
const raw = row.lg_value;
|
|
329
|
+
const loaded = typeof raw === 'string' ? JSON.parse(raw) : {};
|
|
330
|
+
return loaded && typeof loaded === 'object' && !Array.isArray(loaded) ? loaded : {};
|
|
331
|
+
}
|
|
332
|
+
function toItem(row) {
|
|
333
|
+
return {
|
|
334
|
+
value: value(row),
|
|
335
|
+
key: row.key,
|
|
336
|
+
namespace: row.ns.split('.'),
|
|
337
|
+
createdAt: new Date(row.created_at),
|
|
338
|
+
updatedAt: new Date(row.updated_at)
|
|
339
|
+
};
|
|
340
|
+
}
|
|
341
|
+
function toSearchItem(row, score) {
|
|
342
|
+
return { ...toItem(row), score };
|
|
343
|
+
}
|
|
344
|
+
function compareNamespaces(a, b) {
|
|
345
|
+
for (let i = 0; i < Math.min(a.length, b.length); i += 1) {
|
|
346
|
+
if (a[i] !== b[i])
|
|
347
|
+
return a[i] < b[i] ? -1 : 1;
|
|
348
|
+
}
|
|
349
|
+
return a.length - b.length;
|
|
350
|
+
}
|
|
351
|
+
/**
|
|
352
|
+
* The part of `filter` the engine answers exactly, and whether that is all of it.
|
|
353
|
+
*
|
|
354
|
+
* Only equality on top-level scalars is pushed down: comparisons and `$ne`
|
|
355
|
+
* keep LangGraph's semantics (number coercion, missing fields) in the client.
|
|
356
|
+
*/
|
|
357
|
+
export function pushdown(filter) {
|
|
358
|
+
if (!filter || !Object.keys(filter).length)
|
|
359
|
+
return [{}, true];
|
|
360
|
+
const pushed = {};
|
|
361
|
+
let exact = true;
|
|
362
|
+
for (const [key, val] of Object.entries(filter)) {
|
|
363
|
+
if (isScalar(val)) {
|
|
364
|
+
pushed[`${VALUE_PREFIX}.${key}`] = val;
|
|
365
|
+
}
|
|
366
|
+
else if (val !== null &&
|
|
367
|
+
typeof val === 'object' &&
|
|
368
|
+
!Array.isArray(val) &&
|
|
369
|
+
Object.keys(val).length === 1 &&
|
|
370
|
+
'$eq' in val &&
|
|
371
|
+
isScalar(val.$eq)) {
|
|
372
|
+
pushed[`${VALUE_PREFIX}.${key}`] = val.$eq;
|
|
373
|
+
}
|
|
374
|
+
else {
|
|
375
|
+
exact = false;
|
|
376
|
+
}
|
|
377
|
+
}
|
|
378
|
+
return [pushed, exact];
|
|
379
|
+
}
|
|
380
|
+
export function matches(item, filter) {
|
|
381
|
+
if (!filter)
|
|
382
|
+
return true;
|
|
383
|
+
return Object.entries(filter).every(([k, v]) => compare(item[k], v));
|
|
384
|
+
}
|
|
385
|
+
function isObject(value) {
|
|
386
|
+
return typeof value === 'object' && value !== null && !Array.isArray(value);
|
|
387
|
+
}
|
|
388
|
+
function compare(itemValue, filterValue) {
|
|
389
|
+
if (isObject(filterValue)) {
|
|
390
|
+
if (Object.keys(filterValue).some((k) => k.startsWith('$'))) {
|
|
391
|
+
return Object.entries(filterValue).every(([op, operand]) => operator(itemValue, op, operand));
|
|
392
|
+
}
|
|
393
|
+
if (!isObject(itemValue))
|
|
394
|
+
return false;
|
|
395
|
+
return Object.entries(filterValue).every(([k, v]) => compare(itemValue[k], v));
|
|
396
|
+
}
|
|
397
|
+
if (Array.isArray(filterValue)) {
|
|
398
|
+
return (Array.isArray(itemValue) &&
|
|
399
|
+
itemValue.length === filterValue.length &&
|
|
400
|
+
filterValue.every((f, i) => compare(itemValue[i], f)));
|
|
401
|
+
}
|
|
402
|
+
return itemValue === filterValue;
|
|
403
|
+
}
|
|
404
|
+
function operator(value, op, operand) {
|
|
405
|
+
switch (op) {
|
|
406
|
+
case '$eq':
|
|
407
|
+
return value === operand;
|
|
408
|
+
case '$ne':
|
|
409
|
+
return value !== operand;
|
|
410
|
+
case '$gt':
|
|
411
|
+
case '$gte':
|
|
412
|
+
case '$lt':
|
|
413
|
+
case '$lte': {
|
|
414
|
+
const left = Number(value);
|
|
415
|
+
const right = Number(operand);
|
|
416
|
+
if (value === null || value === undefined || Number.isNaN(left) || Number.isNaN(right))
|
|
417
|
+
return false;
|
|
418
|
+
if (op === '$gt')
|
|
419
|
+
return left > right;
|
|
420
|
+
if (op === '$gte')
|
|
421
|
+
return left >= right;
|
|
422
|
+
if (op === '$lt')
|
|
423
|
+
return left < right;
|
|
424
|
+
return left <= right;
|
|
425
|
+
}
|
|
426
|
+
case '$in':
|
|
427
|
+
return Array.isArray(operand) && operand.includes(value);
|
|
428
|
+
case '$nin':
|
|
429
|
+
return Array.isArray(operand) ? !operand.includes(value) : true;
|
|
430
|
+
default:
|
|
431
|
+
throw new Error(`Unsupported operator: ${op}`);
|
|
432
|
+
}
|
|
433
|
+
}
|
|
434
|
+
function doesMatch(condition, key) {
|
|
435
|
+
const { matchType, path } = condition;
|
|
436
|
+
if (path.length > key.length)
|
|
437
|
+
return false;
|
|
438
|
+
if (matchType === 'prefix')
|
|
439
|
+
return path.every((p, i) => p === '*' || key[i] === p);
|
|
440
|
+
return path.every((p, i) => p === '*' || key[key.length - path.length + i] === p);
|
|
441
|
+
}
|
|
442
|
+
//# sourceMappingURL=store.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"store.js","sourceRoot":"","sources":["../src/store.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
import { Document, type DocumentInterface } from '@langchain/core/documents';
|
|
2
|
+
import type { EmbeddingsInterface } from '@langchain/core/embeddings';
|
|
3
|
+
import { VectorStore } from '@langchain/core/vectorstores';
|
|
4
|
+
import { type Client, type Row } from './connection.js';
|
|
5
|
+
import { type Filter } from './filters.js';
|
|
6
|
+
export type Similarity = 'cosine' | 'dot' | 'euclidean';
|
|
7
|
+
export declare const ID_PROPERTY = "lc_id";
|
|
8
|
+
export declare const METADATA_PROPERTY = "lc_metadata";
|
|
9
|
+
export declare const METADATA_PREFIX = "metadata";
|
|
10
|
+
export interface RushDBVectorStoreConfig {
|
|
11
|
+
/** A RushDB client; built from the environment when omitted. */
|
|
12
|
+
client?: Client;
|
|
13
|
+
/** The record label documents are stored under. */
|
|
14
|
+
label?: string;
|
|
15
|
+
/** The property holding the document text. */
|
|
16
|
+
textProperty?: string;
|
|
17
|
+
/** The vector index similarity. */
|
|
18
|
+
similarity?: Similarity;
|
|
19
|
+
/** Also create a text (BM25) index, needed by `RushDBHybridRetriever`. */
|
|
20
|
+
hybrid?: boolean;
|
|
21
|
+
/** `eventual` (engine default) or `immediate`. */
|
|
22
|
+
textIndexConsistency?: 'eventual' | 'immediate';
|
|
23
|
+
}
|
|
24
|
+
export interface SearchOptions {
|
|
25
|
+
k?: number;
|
|
26
|
+
/** A LangChain-style filter on document metadata. */
|
|
27
|
+
filter?: Filter;
|
|
28
|
+
/** A raw RushDB `where`; it can also match related records. */
|
|
29
|
+
where?: Record<string, unknown>;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* LangChain vector store backed by RushDB, Cloud or self-hosted alike.
|
|
33
|
+
*
|
|
34
|
+
* Each document is one record of `label`: its text, its full metadata as JSON
|
|
35
|
+
* and the metadata's top-level scalar fields as filterable `metadata.<key>`
|
|
36
|
+
* properties (see the repository's `spec/README.md`). Vectors live in a RushDB
|
|
37
|
+
* external vector index created on first use.
|
|
38
|
+
*
|
|
39
|
+
* `embeddings` turn texts into vectors on every backend. `"managed"` lets
|
|
40
|
+
* RushDB Cloud compute them instead; a self-hosted engine refuses it, as it
|
|
41
|
+
* never computes embeddings.
|
|
42
|
+
*/
|
|
43
|
+
export declare class RushDBVectorStore extends VectorStore {
|
|
44
|
+
FilterType: Filter;
|
|
45
|
+
readonly client: Client;
|
|
46
|
+
readonly managed: boolean;
|
|
47
|
+
readonly label: string;
|
|
48
|
+
readonly textProperty: string;
|
|
49
|
+
readonly similarity: Similarity;
|
|
50
|
+
readonly hybrid: boolean;
|
|
51
|
+
readonly textIndexConsistency: 'eventual' | 'immediate';
|
|
52
|
+
private indexReady;
|
|
53
|
+
private textIndexReady;
|
|
54
|
+
constructor(embeddings: EmbeddingsInterface | 'managed', config?: RushDBVectorStoreConfig);
|
|
55
|
+
_vectorstoreType(): string;
|
|
56
|
+
/** Create the vector index (and the text index when `hybrid`) if missing. */
|
|
57
|
+
ensureIndexes(dimensions?: number): Promise<void>;
|
|
58
|
+
private ensureVectorIndex;
|
|
59
|
+
private ensureTextIndex;
|
|
60
|
+
addDocuments(documents: DocumentInterface[], options?: {
|
|
61
|
+
ids?: string[];
|
|
62
|
+
}): Promise<string[]>;
|
|
63
|
+
addVectors(vectors: number[][], documents: DocumentInterface[], options?: {
|
|
64
|
+
ids?: string[];
|
|
65
|
+
}): Promise<string[]>;
|
|
66
|
+
/**
|
|
67
|
+
* Store `documents`; a document whose id already exists replaces it.
|
|
68
|
+
*
|
|
69
|
+
* New documents are written in one atomic import; records of existing ids
|
|
70
|
+
* are deleted first.
|
|
71
|
+
*/
|
|
72
|
+
private write;
|
|
73
|
+
private row;
|
|
74
|
+
private recordIds;
|
|
75
|
+
/** Delete the documents with `ids`, or every document with `deleteAll: true`. */
|
|
76
|
+
delete(params?: {
|
|
77
|
+
ids?: string[];
|
|
78
|
+
deleteAll?: boolean;
|
|
79
|
+
}): Promise<void>;
|
|
80
|
+
getByIds(ids: string[]): Promise<Document[]>;
|
|
81
|
+
private document;
|
|
82
|
+
/** The RushDB vector search request; `where` is a raw RushDB filter. */
|
|
83
|
+
searchParams(query: string | undefined, vector: number[] | undefined, k: number, filter?: Filter, where?: Record<string, unknown>): Row;
|
|
84
|
+
runSearch(params: Row): Promise<Array<[Document, number]>>;
|
|
85
|
+
/** Search with a LangChain `filter`, a raw RushDB `where`, or both. */
|
|
86
|
+
searchWithScore(query: string, options?: SearchOptions): Promise<Array<[Document, number]>>;
|
|
87
|
+
similaritySearchVectorWithScore(query: number[], k: number, filter?: Filter): Promise<Array<[Document, number]>>;
|
|
88
|
+
similaritySearchWithScore(query: string, k?: number, filter?: Filter): Promise<Array<[Document, number]>>;
|
|
89
|
+
similaritySearch(query: string, k?: number, filter?: Filter): Promise<Document[]>;
|
|
90
|
+
/** Results with relevance in [0, 1] (see `relevanceFn`). */
|
|
91
|
+
similaritySearchWithRelevanceScores(query: string, k?: number, filter?: Filter): Promise<Array<[Document, number]>>;
|
|
92
|
+
static fromTexts(texts: string[], metadatas: object[] | object, embeddings: EmbeddingsInterface, config?: RushDBVectorStoreConfig): Promise<RushDBVectorStore>;
|
|
93
|
+
static fromDocuments(docs: DocumentInterface[], embeddings: EmbeddingsInterface, config?: RushDBVectorStoreConfig): Promise<RushDBVectorStore>;
|
|
94
|
+
}
|
|
95
|
+
/** Map an engine score (higher is closer) to a relevance in [0, 1]. */
|
|
96
|
+
export declare function relevanceFn(similarity: Similarity): (score: number) => number;
|
|
97
|
+
//# sourceMappingURL=vectorstores.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vectorstores.d.ts","sourceRoot":"","sources":["../src/vectorstores.ts"],"names":[],"mappings":"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"}
|