@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.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"checkpoint.js","sourceRoot":"","sources":["../src/checkpoint.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,43 @@
1
+ /** Client construction and the record helpers every component shares. */
2
+ import RushDB from '@rushdb/javascript-sdk';
3
+ export type Client = InstanceType<typeof RushDB>;
4
+ export type Row = Record<string, any>;
5
+ export declare const PAGE_SIZE = 1000;
6
+ export declare const FAR_FUTURE = "9999-12-31T23:59:59.000Z";
7
+ export declare const CONFLICT_RETRIES = 10;
8
+ /**
9
+ * Build a RushDB client from the environment.
10
+ *
11
+ * RushDB Cloud: `RUSHDB_API_KEY` (and optionally `RUSHDB_URL`).
12
+ * Self-hosted engine: `RUSHDB_ENGINE_URL` and `RUSHDB_ENGINE_TOKEN` (and
13
+ * `RUSHDB_SCOPE` on a multitenant engine). Setting both is an error.
14
+ */
15
+ export declare function clientFromEnv(env?: Record<string, string | undefined>): Client;
16
+ export declare function isSelfHosted(client: Client): boolean;
17
+ /** The data of every record `search` matches, page by page. */
18
+ export declare function findAll(client: Client, search: Row): Promise<Row[]>;
19
+ /**
20
+ * Create `rows` in one engine commit, each with its inline `vectors`.
21
+ *
22
+ * `records.importJson` rather than `createMany`: rows may hold flat arrays,
23
+ * which the engine stores as array properties.
24
+ */
25
+ export declare function createRows(client: Client, label: string, rows: Row[], vectors?: Array<Row[] | undefined>, transaction?: any): Promise<void>;
26
+ export declare function deleteIds(client: Client, ids: string[]): Promise<void>;
27
+ /**
28
+ * Delete records by id and create rows in one transaction.
29
+ *
30
+ * Concurrent transactions can conflict; the engine reports that as retryable,
31
+ * so the transaction is replayed with backoff.
32
+ */
33
+ export declare function transact(client: Client, remove: string[], create: Array<[string, Row[]]>): Promise<void>;
34
+ export declare function sleep(ms: number): Promise<void>;
35
+ export declare function isScalar(value: unknown): value is string | number | boolean;
36
+ /** The filterable properties of `obj`: top-level scalars and flat arrays of one kind. */
37
+ export declare function mirror(prefix: string, obj: Record<string, unknown>): Row;
38
+ export declare function toJson(value: unknown): string;
39
+ export declare function b64(data: Uint8Array): string;
40
+ export declare function unb64(data: string): Uint8Array;
41
+ export declare function iso(date: Date): string;
42
+ export declare function nowIso(): string;
43
+ //# sourceMappingURL=connection.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"connection.d.ts","sourceRoot":"","sources":["../src/connection.ts"],"names":[],"mappings":"AAAA,yEAAyE;AACzE,OAAO,MAA4B,MAAM,wBAAwB,CAAA;AAEjE,MAAM,MAAM,MAAM,GAAG,YAAY,CAAC,OAAO,MAAM,CAAC,CAAA;AAChD,MAAM,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;AAErC,eAAO,MAAM,SAAS,OAAO,CAAA;AAC7B,eAAO,MAAM,UAAU,6BAA6B,CAAA;AACpD,eAAO,MAAM,gBAAgB,KAAK,CAAA;AAGlC;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,GAAG,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAe,GAAG,MAAM,CAqB3F;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAEpD;AAED,+DAA+D;AAC/D,wBAAsB,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,CAQzE;AAED;;;;;GAKG;AACH,wBAAsB,UAAU,CAC9B,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,GAAG,EAAE,EACX,OAAO,CAAC,EAAE,KAAK,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC,EAClC,WAAW,CAAC,EAAE,GAAG,GAChB,OAAO,CAAC,IAAI,CAAC,CAOf;AAED,wBAAsB,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAE5E;AAED;;;;;GAKG;AACH,wBAAsB,QAAQ,CAC5B,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EAAE,EAChB,MAAM,EAAE,KAAK,CAAC,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,GAC7B,OAAO,CAAC,IAAI,CAAC,CAmBf;AAUD,wBAAgB,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAE/C;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,GAAG,MAAM,GAAG,OAAO,CAM3E;AAED,yFAAyF;AACzF,wBAAgB,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,GAAG,CAexE;AAED,wBAAgB,MAAM,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAE7C;AAED,wBAAgB,GAAG,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM,CAE5C;AAED,wBAAgB,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,CAE9C;AAED,wBAAgB,GAAG,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM,CAEtC;AAED,wBAAgB,MAAM,IAAI,MAAM,CAE/B"}
@@ -0,0 +1,142 @@
1
+ /** Client construction and the record helpers every component shares. */
2
+ import RushDB from '@rushdb/javascript-sdk';
3
+ export const PAGE_SIZE = 1000;
4
+ export const FAR_FUTURE = '9999-12-31T23:59:59.000Z';
5
+ export const CONFLICT_RETRIES = 10;
6
+ const CONFLICT_BACKOFF_CAP_MS = 2000;
7
+ /**
8
+ * Build a RushDB client from the environment.
9
+ *
10
+ * RushDB Cloud: `RUSHDB_API_KEY` (and optionally `RUSHDB_URL`).
11
+ * Self-hosted engine: `RUSHDB_ENGINE_URL` and `RUSHDB_ENGINE_TOKEN` (and
12
+ * `RUSHDB_SCOPE` on a multitenant engine). Setting both is an error.
13
+ */
14
+ export function clientFromEnv(env = process.env) {
15
+ const apiKey = env.RUSHDB_API_KEY;
16
+ const engineUrl = env.RUSHDB_ENGINE_URL;
17
+ if (apiKey && engineUrl) {
18
+ throw new Error('Both RUSHDB_API_KEY (RushDB Cloud) and RUSHDB_ENGINE_URL (self-hosted) are set; ' +
19
+ 'set the variables of one mode only.');
20
+ }
21
+ if (engineUrl) {
22
+ const token = env.RUSHDB_ENGINE_TOKEN;
23
+ if (!token)
24
+ throw new Error('RUSHDB_ENGINE_URL is set but RUSHDB_ENGINE_TOKEN is not.');
25
+ return new RushDB(token, { direct: true, engineUrl, scope: env.RUSHDB_SCOPE || undefined });
26
+ }
27
+ if (apiKey) {
28
+ return env.RUSHDB_URL ? new RushDB(apiKey, { url: env.RUSHDB_URL }) : new RushDB(apiKey);
29
+ }
30
+ throw new Error('No RushDB connection configured: set RUSHDB_API_KEY for RushDB Cloud, or ' +
31
+ 'RUSHDB_ENGINE_URL and RUSHDB_ENGINE_TOKEN for a self-hosted engine.');
32
+ }
33
+ export function isSelfHosted(client) {
34
+ return client.direct !== undefined;
35
+ }
36
+ /** The data of every record `search` matches, page by page. */
37
+ export async function findAll(client, search) {
38
+ const out = [];
39
+ for (let skip = 0;; skip += PAGE_SIZE) {
40
+ const page = await client.records.find({ ...search, skip, limit: PAGE_SIZE });
41
+ const rows = page.data.map((record) => record.data);
42
+ out.push(...rows);
43
+ if (rows.length < PAGE_SIZE)
44
+ return out;
45
+ }
46
+ }
47
+ /**
48
+ * Create `rows` in one engine commit, each with its inline `vectors`.
49
+ *
50
+ * `records.importJson` rather than `createMany`: rows may hold flat arrays,
51
+ * which the engine stores as array properties.
52
+ */
53
+ export async function createRows(client, label, rows, vectors, transaction) {
54
+ if (!rows.length)
55
+ return;
56
+ const data = rows.map((row, i) => (vectors?.[i]?.length ? { ...row, $vectors: vectors[i] } : row));
57
+ await client.records.importJson({ label, data, options: { returnResult: false, suggestTypes: true } }, transaction);
58
+ }
59
+ export async function deleteIds(client, ids) {
60
+ if (ids.length)
61
+ await client.records.deleteById(ids);
62
+ }
63
+ /**
64
+ * Delete records by id and create rows in one transaction.
65
+ *
66
+ * Concurrent transactions can conflict; the engine reports that as retryable,
67
+ * so the transaction is replayed with backoff.
68
+ */
69
+ export async function transact(client, remove, create) {
70
+ if (!remove.length && !create.some(([, rows]) => rows.length))
71
+ return;
72
+ for (let attempt = 0; attempt < CONFLICT_RETRIES; attempt += 1) {
73
+ const tx = await client.tx.begin();
74
+ let committing = false;
75
+ try {
76
+ for (const id of remove)
77
+ await client.records.deleteById(id, tx);
78
+ for (const [label, rows] of create)
79
+ await createRows(client, label, rows, undefined, tx);
80
+ committing = true;
81
+ await client.tx.commit(tx);
82
+ return;
83
+ }
84
+ catch (error) {
85
+ // A failed commit has already ended the transaction.
86
+ if (!committing)
87
+ await rollback(client, tx, error);
88
+ const conflict = String(error?.message ?? error).includes('transaction_conflict');
89
+ if (!conflict || attempt === CONFLICT_RETRIES - 1)
90
+ throw error;
91
+ await sleep(Math.min(CONFLICT_BACKOFF_CAP_MS, 50 * 2 ** attempt) * (1 + Math.random()));
92
+ }
93
+ }
94
+ }
95
+ async function rollback(client, tx, cause) {
96
+ try {
97
+ await client.tx.rollback(tx);
98
+ }
99
+ catch (error) {
100
+ console.warn(`[@rushdb/langchain] rollback after ${String(cause)} also failed: ${String(error)}`);
101
+ }
102
+ }
103
+ export function sleep(ms) {
104
+ return new Promise((resolve) => setTimeout(resolve, ms));
105
+ }
106
+ export function isScalar(value) {
107
+ return (typeof value === 'string' ||
108
+ typeof value === 'boolean' ||
109
+ (typeof value === 'number' && Number.isFinite(value)));
110
+ }
111
+ /** The filterable properties of `obj`: top-level scalars and flat arrays of one kind. */
112
+ export function mirror(prefix, obj) {
113
+ const out = {};
114
+ for (const [key, value] of Object.entries(obj)) {
115
+ if (isScalar(value)) {
116
+ out[`${prefix}.${key}`] = value;
117
+ }
118
+ else if (Array.isArray(value) &&
119
+ value.length &&
120
+ value.every(isScalar) &&
121
+ new Set(value.map((v) => typeof v)).size === 1) {
122
+ out[`${prefix}.${key}`] = [...value];
123
+ }
124
+ }
125
+ return out;
126
+ }
127
+ export function toJson(value) {
128
+ return JSON.stringify(value);
129
+ }
130
+ export function b64(data) {
131
+ return Buffer.from(data).toString('base64');
132
+ }
133
+ export function unb64(data) {
134
+ return new Uint8Array(Buffer.from(data, 'base64'));
135
+ }
136
+ export function iso(date) {
137
+ return date.toISOString();
138
+ }
139
+ export function nowIso() {
140
+ return new Date().toISOString();
141
+ }
142
+ //# sourceMappingURL=connection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"connection.js","sourceRoot":"","sources":["../src/connection.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ export type Filter = Record<string, unknown>;
2
+ /** A filter that cannot be translated; never silently ignored. */
3
+ export declare class FilterError extends Error {
4
+ constructor(message: string);
5
+ }
6
+ /** Rename every field to `<prefix>.<field>` and validate the operators. */
7
+ export declare function translateFilter(filter: Filter | undefined | null, prefix: string): Record<string, unknown>;
8
+ //# sourceMappingURL=filters.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"filters.d.ts","sourceRoot":"","sources":["../src/filters.ts"],"names":[],"mappings":"AAOA,MAAM,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;AAE5C,kEAAkE;AAClE,qBAAa,WAAY,SAAQ,KAAK;gBACxB,OAAO,EAAE,MAAM;CAI5B;AAMD,2EAA2E;AAC3E,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAmB1G"}
@@ -0,0 +1,75 @@
1
+ /** Translation of LangChain-style filters to a RushDB `where` (spec: Filters). */
2
+ import { isScalar } from './connection.js';
3
+ const COMPARISON = new Set(['$eq', '$ne', '$gt', '$gte', '$lt', '$lte']);
4
+ const MEMBERSHIP = new Set(['$in', '$nin']);
5
+ const STRING_MATCH = new Set(['$contains', '$startsWith', '$endsWith']);
6
+ /** A filter that cannot be translated; never silently ignored. */
7
+ export class FilterError extends Error {
8
+ constructor(message) {
9
+ super(message);
10
+ this.name = 'FilterError';
11
+ }
12
+ }
13
+ function isPlainObject(value) {
14
+ return typeof value === 'object' && value !== null && !Array.isArray(value);
15
+ }
16
+ /** Rename every field to `<prefix>.<field>` and validate the operators. */
17
+ export function translateFilter(filter, prefix) {
18
+ if (filter === undefined || filter === null)
19
+ return {};
20
+ if (!isPlainObject(filter))
21
+ throw new FilterError(`A filter is an object, got ${typeof filter}.`);
22
+ const where = {};
23
+ for (const [key, value] of Object.entries(filter)) {
24
+ if (key === '$and' || key === '$or') {
25
+ if (!Array.isArray(value) || !value.length) {
26
+ throw new FilterError(`${key} takes a non-empty list of filters.`);
27
+ }
28
+ where[key] = value.map((item) => translateFilter(item, prefix));
29
+ }
30
+ else if (key === '$not') {
31
+ where[key] = translateFilter(value, prefix);
32
+ }
33
+ else if (key.startsWith('$')) {
34
+ throw new FilterError(`Unsupported logic operator '${key}'.`);
35
+ }
36
+ else {
37
+ where[`${prefix}.${key}`] = condition(key, value);
38
+ }
39
+ }
40
+ return where;
41
+ }
42
+ function condition(field, value) {
43
+ if (isScalar(value))
44
+ return value;
45
+ if (!isPlainObject(value) || !Object.keys(value).length) {
46
+ throw new FilterError(`The condition on '${field}' must be a string, number, boolean or an operator object, ` +
47
+ `got ${JSON.stringify(value)}.`);
48
+ }
49
+ const out = {};
50
+ for (const [op, operand] of Object.entries(value)) {
51
+ if (COMPARISON.has(op)) {
52
+ if (!isScalar(operand))
53
+ throw new FilterError(`${op} on '${field}' takes a string, number or boolean.`);
54
+ }
55
+ else if (MEMBERSHIP.has(op)) {
56
+ if (!Array.isArray(operand) || !operand.every(isScalar)) {
57
+ throw new FilterError(`${op} on '${field}' takes a list of scalars.`);
58
+ }
59
+ }
60
+ else if (op === '$exists') {
61
+ if (typeof operand !== 'boolean')
62
+ throw new FilterError(`$exists on '${field}' takes a boolean.`);
63
+ }
64
+ else if (STRING_MATCH.has(op)) {
65
+ if (typeof operand !== 'string')
66
+ throw new FilterError(`${op} on '${field}' takes a string.`);
67
+ }
68
+ else {
69
+ throw new FilterError(`Unsupported operator '${op}' on '${field}'.`);
70
+ }
71
+ out[op] = operand;
72
+ }
73
+ return out;
74
+ }
75
+ //# sourceMappingURL=filters.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"filters.js","sourceRoot":"","sources":["../src/filters.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ export { clientFromEnv, isSelfHosted } from './connection.js';
2
+ export { FilterError, translateFilter } from './filters.js';
3
+ export { RushDBVectorStore, relevanceFn } from './vectorstores.js';
4
+ export type { RushDBVectorStoreConfig, SearchOptions, Similarity } from './vectorstores.js';
5
+ export { RushDBHybridRetriever } from './retrievers.js';
6
+ export type { RushDBHybridRetrieverInput } from './retrievers.js';
7
+ export { RushDBStore } from './store.js';
8
+ export type { RushDBStoreConfig, TTLConfig } from './store.js';
9
+ export { RushDBSaver } from './checkpoint.js';
10
+ export type { RushDBSaverConfig } from './checkpoint.js';
11
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAC7D,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AAC3D,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAClE,YAAY,EAAE,uBAAuB,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAC3F,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAA;AACvD,YAAY,EAAE,0BAA0B,EAAE,MAAM,iBAAiB,CAAA;AACjE,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AACxC,YAAY,EAAE,iBAAiB,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AAC9D,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAC7C,YAAY,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAA"}
package/dist/index.js ADDED
@@ -0,0 +1,7 @@
1
+ export { clientFromEnv, isSelfHosted } from './connection.js';
2
+ export { FilterError, translateFilter } from './filters.js';
3
+ export { RushDBVectorStore, relevanceFn } from './vectorstores.js';
4
+ export { RushDBHybridRetriever } from './retrievers.js';
5
+ export { RushDBStore } from './store.js';
6
+ export { RushDBSaver } from './checkpoint.js';
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAC7D,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AAC3D,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAElE,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAA;AAEvD,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAExC,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA"}
@@ -0,0 +1,46 @@
1
+ /** Hybrid (vector + BM25) retriever over a `RushDBVectorStore`. */
2
+ import type { Document } from '@langchain/core/documents';
3
+ import { BaseRetriever, type BaseRetrieverInput } from '@langchain/core/retrievers';
4
+ import type { Filter } from './filters.js';
5
+ import type { RushDBVectorStore } from './vectorstores.js';
6
+ export interface RushDBHybridRetrieverInput extends BaseRetrieverInput {
7
+ vectorstore: RushDBVectorStore;
8
+ k?: number;
9
+ fusion?: 'rrf' | 'dbsf';
10
+ rrfK?: number;
11
+ vectorWeight?: number;
12
+ textWeight?: number;
13
+ prefetchLimit?: number;
14
+ allTerms?: boolean;
15
+ phrase?: boolean;
16
+ /** A LangChain-style filter on document metadata. */
17
+ filter?: Filter;
18
+ /** A raw RushDB `where`; it can also match related records. */
19
+ where?: Record<string, unknown>;
20
+ }
21
+ /**
22
+ * Retrieve with RushDB hybrid search: a vector leg and a BM25 keyword leg,
23
+ * filtered before ranking and fused in the engine (RRF or DBSF).
24
+ *
25
+ * The vector store must be created with `hybrid: true` so its text index
26
+ * exists. Each returned document carries the fused score in
27
+ * `metadata.score`.
28
+ */
29
+ export declare class RushDBHybridRetriever extends BaseRetriever {
30
+ static lc_name(): string;
31
+ lc_namespace: string[];
32
+ vectorstore: RushDBVectorStore;
33
+ k: number;
34
+ fusion: 'rrf' | 'dbsf';
35
+ rrfK?: number;
36
+ vectorWeight?: number;
37
+ textWeight?: number;
38
+ prefetchLimit?: number;
39
+ allTerms: boolean;
40
+ phrase: boolean;
41
+ filter?: Filter;
42
+ where?: Record<string, unknown>;
43
+ constructor(fields: RushDBHybridRetrieverInput);
44
+ _getRelevantDocuments(query: string): Promise<Document[]>;
45
+ }
46
+ //# sourceMappingURL=retrievers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"retrievers.d.ts","sourceRoot":"","sources":["../src/retrievers.ts"],"names":[],"mappings":"AAAA,mEAAmE;AACnE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAA;AACzD,OAAO,EAAE,aAAa,EAAE,KAAK,kBAAkB,EAAE,MAAM,4BAA4B,CAAA;AAGnF,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;AAC1C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AAE1D,MAAM,WAAW,0BAA2B,SAAQ,kBAAkB;IACpE,WAAW,EAAE,iBAAiB,CAAA;IAC9B,CAAC,CAAC,EAAE,MAAM,CAAA;IACV,MAAM,CAAC,EAAE,KAAK,GAAG,MAAM,CAAA;IACvB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,qDAAqD;IACrD,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,+DAA+D;IAC/D,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAChC;AAED;;;;;;;GAOG;AACH,qBAAa,qBAAsB,SAAQ,aAAa;IACtD,MAAM,CAAC,OAAO,IAAI,MAAM;IAIxB,YAAY,WAA2B;IAEvC,WAAW,EAAE,iBAAiB,CAAA;IAC9B,CAAC,EAAE,MAAM,CAAA;IACT,MAAM,EAAE,KAAK,GAAG,MAAM,CAAA;IACtB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,QAAQ,EAAE,OAAO,CAAA;IACjB,MAAM,EAAE,OAAO,CAAA;IACf,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;gBAEnB,MAAM,EAAE,0BAA0B;IAexC,qBAAqB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;CAwBhE"}
@@ -0,0 +1,70 @@
1
+ import { BaseRetriever } from '@langchain/core/retrievers';
2
+ /**
3
+ * Retrieve with RushDB hybrid search: a vector leg and a BM25 keyword leg,
4
+ * filtered before ranking and fused in the engine (RRF or DBSF).
5
+ *
6
+ * The vector store must be created with `hybrid: true` so its text index
7
+ * exists. Each returned document carries the fused score in
8
+ * `metadata.score`.
9
+ */
10
+ export class RushDBHybridRetriever extends BaseRetriever {
11
+ static lc_name() {
12
+ return 'RushDBHybridRetriever';
13
+ }
14
+ lc_namespace = ['rushdb', 'retrievers'];
15
+ vectorstore;
16
+ k;
17
+ fusion;
18
+ rrfK;
19
+ vectorWeight;
20
+ textWeight;
21
+ prefetchLimit;
22
+ allTerms;
23
+ phrase;
24
+ filter;
25
+ where;
26
+ constructor(fields) {
27
+ super(fields);
28
+ this.vectorstore = fields.vectorstore;
29
+ this.k = fields.k ?? 4;
30
+ this.fusion = fields.fusion ?? 'rrf';
31
+ this.rrfK = fields.rrfK;
32
+ this.vectorWeight = fields.vectorWeight;
33
+ this.textWeight = fields.textWeight;
34
+ this.prefetchLimit = fields.prefetchLimit;
35
+ this.allTerms = fields.allTerms ?? false;
36
+ this.phrase = fields.phrase ?? false;
37
+ this.filter = fields.filter;
38
+ this.where = fields.where;
39
+ }
40
+ async _getRelevantDocuments(query) {
41
+ const store = this.vectorstore;
42
+ if (!store.hybrid) {
43
+ throw new Error('RushDBHybridRetriever needs a RushDBVectorStore with hybrid: true.');
44
+ }
45
+ const vector = store.managed ? undefined : await store.embeddings.embedQuery(query);
46
+ const params = store.searchParams(query, vector, this.k, this.filter, this.where);
47
+ const text = { query, property: store.textProperty };
48
+ if (this.allTerms)
49
+ text.allTerms = true;
50
+ if (this.phrase)
51
+ text.phrase = true;
52
+ if (this.textWeight !== undefined)
53
+ text.weight = this.textWeight;
54
+ if (this.prefetchLimit !== undefined) {
55
+ text.prefetchLimit = this.prefetchLimit;
56
+ params.prefetchLimit = this.prefetchLimit;
57
+ }
58
+ if (this.vectorWeight !== undefined)
59
+ params.weight = this.vectorWeight;
60
+ params.text = text;
61
+ params.fusion = this.fusion;
62
+ if (this.rrfK !== undefined)
63
+ params.rrfK = this.rrfK;
64
+ return (await store.runSearch(params)).map(([doc, score]) => {
65
+ doc.metadata.score = score;
66
+ return doc;
67
+ });
68
+ }
69
+ }
70
+ //# sourceMappingURL=retrievers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"retrievers.js","sourceRoot":"","sources":["../src/retrievers.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAA2B,MAAM,4BAA4B,CAAA;AAsBnF;;;;;;;GAOG;AACH,MAAM,OAAO,qBAAsB,SAAQ,aAAa;IACtD,MAAM,CAAC,OAAO;QACZ,OAAO,uBAAuB,CAAA;IAChC,CAAC;IAED,YAAY,GAAG,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAA;IAEvC,WAAW,CAAmB;IAC9B,CAAC,CAAQ;IACT,MAAM,CAAgB;IACtB,IAAI,CAAS;IACb,YAAY,CAAS;IACrB,UAAU,CAAS;IACnB,aAAa,CAAS;IACtB,QAAQ,CAAS;IACjB,MAAM,CAAS;IACf,MAAM,CAAS;IACf,KAAK,CAA0B;IAE/B,YAAY,MAAkC;QAC5C,KAAK,CAAC,MAAM,CAAC,CAAA;QACb,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,WAAW,CAAA;QACrC,IAAI,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,IAAI,CAAC,CAAA;QACtB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,IAAI,KAAK,CAAA;QACpC,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAA;QACvB,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,YAAY,CAAA;QACvC,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,CAAA;QACnC,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,aAAa,CAAA;QACzC,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,IAAI,KAAK,CAAA;QACxC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,IAAI,KAAK,CAAA;QACpC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAA;QAC3B,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAA;IAC3B,CAAC;IAED,KAAK,CAAC,qBAAqB,CAAC,KAAa;QACvC,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAA;QAC9B,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;YAClB,MAAM,IAAI,KAAK,CAAC,oEAAoE,CAAC,CAAA;QACvF,CAAC;QACD,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,UAAU,CAAC,UAAU,CAAC,KAAK,CAAC,CAAA;QACnF,MAAM,MAAM,GAAG,KAAK,CAAC,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,CAAA;QACjF,MAAM,IAAI,GAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,CAAC,YAAY,EAAE,CAAA;QACzD,IAAI,IAAI,CAAC,QAAQ;YAAE,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAA;QACvC,IAAI,IAAI,CAAC,MAAM;YAAE,IAAI,CAAC,MAAM,GAAG,IAAI,CAAA;QACnC,IAAI,IAAI,CAAC,UAAU,KAAK,SAAS;YAAE,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,UAAU,CAAA;QAChE,IAAI,IAAI,CAAC,aAAa,KAAK,SAAS,EAAE,CAAC;YACrC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAA;YACvC,MAAM,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAA;QAC3C,CAAC;QACD,IAAI,IAAI,CAAC,YAAY,KAAK,SAAS;YAAE,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,YAAY,CAAA;QACtE,MAAM,CAAC,IAAI,GAAG,IAAI,CAAA;QAClB,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAA;QAC3B,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS;YAAE,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAA;QACpD,OAAO,CAAC,MAAM,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;YAC1D,GAAG,CAAC,QAAQ,CAAC,KAAK,GAAG,KAAK,CAAA;YAC1B,OAAO,GAAG,CAAA;QACZ,CAAC,CAAC,CAAA;IACJ,CAAC;CACF"}
@@ -0,0 +1,78 @@
1
+ /** RushDB-backed LangGraph long-term memory store. */
2
+ import { BaseStore, type IndexConfig, type Operation, type OperationResults } from '@langchain/langgraph-checkpoint';
3
+ import { type Client } from './connection.js';
4
+ export declare const VALUE_PREFIX = "value";
5
+ /** LangGraph's TTL settings, in minutes. */
6
+ export interface TTLConfig {
7
+ /** TTL of every item put; none when omitted. */
8
+ defaultTtl?: number;
9
+ /** Reads extend an item's expiry by its TTL (default true). */
10
+ refreshOnRead?: boolean;
11
+ /** Interval of the sweeper `start()` runs (default 5). */
12
+ sweepIntervalMinutes?: number;
13
+ }
14
+ export interface RushDBStoreConfig {
15
+ /** A RushDB client; built from the environment when omitted. */
16
+ client?: Client;
17
+ /** `dims`, `embeddings` and optional `fields`, to enable semantic `search({ query })`. */
18
+ index?: IndexConfig;
19
+ /**
20
+ * RushDB has no record TTL, so expiry is an `expires_at` property every read
21
+ * filters on; `sweep()` (or the sweeper `start()` runs) deletes expired items.
22
+ */
23
+ ttl?: TTLConfig;
24
+ itemLabel?: string;
25
+ vectorLabel?: string;
26
+ }
27
+ export declare function namespaceString(namespace: string[]): string;
28
+ /** Records whose namespace equals `prefix` or starts with it. */
29
+ export declare function prefixWhere(prefix: string[]): Record<string, unknown>;
30
+ /**
31
+ * LangGraph `BaseStore` on RushDB, Cloud or self-hosted alike.
32
+ *
33
+ * Items are records of `itemLabel`; with `index` configured, every embedded
34
+ * text of an item is a record of `vectorLabel` carrying an external vector
35
+ * (see the repository's `spec/README.md`).
36
+ */
37
+ export declare class RushDBStore extends BaseStore {
38
+ readonly client: Client;
39
+ readonly itemLabel: string;
40
+ readonly vectorLabel: string;
41
+ readonly ttl?: TTLConfig;
42
+ readonly indexConfig?: IndexConfig;
43
+ private readonly indexFields;
44
+ private vectorIndexReady;
45
+ private sweeper?;
46
+ constructor(config?: RushDBStoreConfig);
47
+ batch<Op extends Operation[]>(operations: Op): Promise<OperationResults<Op>>;
48
+ /** Starts the TTL sweeper when the store has a TTL. */
49
+ start(): void;
50
+ stop(): void;
51
+ private live;
52
+ private get refreshOnRead();
53
+ private itemRows;
54
+ private getOp;
55
+ private refresh;
56
+ private putOp;
57
+ private texts;
58
+ private vectorIds;
59
+ private ensureVectorIndex;
60
+ private searchOp;
61
+ private vectorSearch;
62
+ private refreshItems;
63
+ private listNamespacesOp;
64
+ /** Delete expired items and their vectors; returns how many items expired. */
65
+ sweep(): Promise<number>;
66
+ /** Run `sweep()` every `sweepIntervalMinutes` (default: the TTL config's, else 5). */
67
+ startTtlSweeper(sweepIntervalMinutes?: number): void;
68
+ stopTtlSweeper(): void;
69
+ }
70
+ /**
71
+ * The part of `filter` the engine answers exactly, and whether that is all of it.
72
+ *
73
+ * Only equality on top-level scalars is pushed down: comparisons and `$ne`
74
+ * keep LangGraph's semantics (number coercion, missing fields) in the client.
75
+ */
76
+ export declare function pushdown(filter?: Record<string, any>): [Record<string, unknown>, boolean];
77
+ export declare function matches(item: Record<string, any>, filter?: Record<string, any>): boolean;
78
+ //# sourceMappingURL=store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../src/store.ts"],"names":[],"mappings":"AAAA,sDAAsD;AACtD,OAAO,EACL,SAAS,EAET,KAAK,WAAW,EAIhB,KAAK,SAAS,EACd,KAAK,gBAAgB,EAKtB,MAAM,iCAAiC,CAAA;AAExC,OAAO,EACL,KAAK,MAAM,EAaZ,MAAM,iBAAiB,CAAA;AAExB,eAAO,MAAM,YAAY,UAAU,CAAA;AAGnC,4CAA4C;AAC5C,MAAM,WAAW,SAAS;IACxB,gDAAgD;IAChD,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,+DAA+D;IAC/D,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,0DAA0D;IAC1D,oBAAoB,CAAC,EAAE,MAAM,CAAA;CAC9B;AAED,MAAM,WAAW,iBAAiB;IAChC,gEAAgE;IAChE,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,0FAA0F;IAC1F,KAAK,CAAC,EAAE,WAAW,CAAA;IACnB;;;OAGG;IACH,GAAG,CAAC,EAAE,SAAS,CAAA;IACf,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB;AAED,wBAAgB,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,MAAM,CAE3D;AAED,iEAAiE;AACjE,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAIrE;AAED;;;;;;GAMG;AACH,qBAAa,WAAY,SAAQ,SAAS;IACxC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;IAC5B,QAAQ,CAAC,GAAG,CAAC,EAAE,SAAS,CAAA;IACxB,QAAQ,CAAC,WAAW,CAAC,EAAE,WAAW,CAAA;IAClC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAU;IACtC,OAAO,CAAC,gBAAgB,CAAQ;IAChC,OAAO,CAAC,OAAO,CAAC,CAAgC;gBAEpC,MAAM,GAAE,iBAAsB;IAYpC,KAAK,CAAC,EAAE,SAAS,SAAS,EAAE,EAAE,UAAU,EAAE,EAAE,GAAG,OAAO,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC;IAiBlF,uDAAuD;IACvD,KAAK,IAAI,IAAI;IAIb,IAAI,IAAI,IAAI;IAMZ,OAAO,CAAC,IAAI;IAIZ,OAAO,KAAK,aAAa,GAExB;YAEa,QAAQ;YAOR,KAAK;YAOL,OAAO;YAgBP,KAAK;IAmDnB,OAAO,CAAC,KAAK;YAYC,SAAS;YAST,iBAAiB;YA0BjB,QAAQ;YA8BR,YAAY;YA6CZ,YAAY;YAWZ,gBAAgB;IAuB9B,8EAA8E;IACxE,KAAK,IAAI,OAAO,CAAC,MAAM,CAAC;IAY9B,sFAAsF;IACtF,eAAe,CAAC,oBAAoB,CAAC,EAAE,MAAM,GAAG,IAAI;IASpD,cAAc,IAAI,IAAI;CAIvB;AAmCD;;;;;GAKG;AACH,wBAAgB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,CAqBzF;AAED,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,OAAO,CAGxF"}