@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
|
@@ -0,0 +1,257 @@
|
|
|
1
|
+
/** RushDB vector store for LangChain. */
|
|
2
|
+
import { randomUUID } from 'node:crypto';
|
|
3
|
+
import { Document } from '@langchain/core/documents';
|
|
4
|
+
import { VectorStore } from '@langchain/core/vectorstores';
|
|
5
|
+
import { clientFromEnv, createRows, deleteIds, findAll, isSelfHosted, mirror, toJson } from './connection.js';
|
|
6
|
+
import { translateFilter } from './filters.js';
|
|
7
|
+
export const ID_PROPERTY = 'lc_id';
|
|
8
|
+
export const METADATA_PROPERTY = 'lc_metadata';
|
|
9
|
+
export const METADATA_PREFIX = 'metadata';
|
|
10
|
+
/** Stands in for `embeddings` when RushDB Cloud computes them. */
|
|
11
|
+
const MANAGED = {
|
|
12
|
+
embedDocuments: async () => {
|
|
13
|
+
throw new Error('Managed embeddings are computed by RushDB Cloud.');
|
|
14
|
+
},
|
|
15
|
+
embedQuery: async () => {
|
|
16
|
+
throw new Error('Managed embeddings are computed by RushDB Cloud.');
|
|
17
|
+
}
|
|
18
|
+
};
|
|
19
|
+
/**
|
|
20
|
+
* LangChain vector store backed by RushDB, Cloud or self-hosted alike.
|
|
21
|
+
*
|
|
22
|
+
* Each document is one record of `label`: its text, its full metadata as JSON
|
|
23
|
+
* and the metadata's top-level scalar fields as filterable `metadata.<key>`
|
|
24
|
+
* properties (see the repository's `spec/README.md`). Vectors live in a RushDB
|
|
25
|
+
* external vector index created on first use.
|
|
26
|
+
*
|
|
27
|
+
* `embeddings` turn texts into vectors on every backend. `"managed"` lets
|
|
28
|
+
* RushDB Cloud compute them instead; a self-hosted engine refuses it, as it
|
|
29
|
+
* never computes embeddings.
|
|
30
|
+
*/
|
|
31
|
+
export class RushDBVectorStore extends VectorStore {
|
|
32
|
+
client;
|
|
33
|
+
managed;
|
|
34
|
+
label;
|
|
35
|
+
textProperty;
|
|
36
|
+
similarity;
|
|
37
|
+
hybrid;
|
|
38
|
+
textIndexConsistency;
|
|
39
|
+
indexReady = false;
|
|
40
|
+
textIndexReady = false;
|
|
41
|
+
constructor(embeddings, config = {}) {
|
|
42
|
+
super(embeddings === 'managed' ? MANAGED : embeddings, config);
|
|
43
|
+
this.client = config.client ?? clientFromEnv();
|
|
44
|
+
this.managed = embeddings === 'managed';
|
|
45
|
+
if (this.managed && isSelfHosted(this.client)) {
|
|
46
|
+
throw new Error('embedding "managed" needs RushDB Cloud: a self-hosted engine never computes ' +
|
|
47
|
+
'embeddings. Pass a LangChain Embeddings instance instead.');
|
|
48
|
+
}
|
|
49
|
+
this.label = config.label ?? 'LC_DOCUMENT';
|
|
50
|
+
this.textProperty = config.textProperty ?? 'page_content';
|
|
51
|
+
if (this.textProperty === ID_PROPERTY ||
|
|
52
|
+
this.textProperty === METADATA_PROPERTY ||
|
|
53
|
+
this.textProperty.startsWith('__')) {
|
|
54
|
+
throw new Error(`textProperty '${this.textProperty}' is reserved.`);
|
|
55
|
+
}
|
|
56
|
+
this.similarity = config.similarity ?? 'cosine';
|
|
57
|
+
this.hybrid = config.hybrid ?? false;
|
|
58
|
+
this.textIndexConsistency = config.textIndexConsistency ?? 'eventual';
|
|
59
|
+
}
|
|
60
|
+
_vectorstoreType() {
|
|
61
|
+
return 'rushdb';
|
|
62
|
+
}
|
|
63
|
+
// ── indexes ────────────────────────────────────────────────────────────
|
|
64
|
+
/** Create the vector index (and the text index when `hybrid`) if missing. */
|
|
65
|
+
async ensureIndexes(dimensions) {
|
|
66
|
+
if (!this.indexReady) {
|
|
67
|
+
await this.ensureVectorIndex(dimensions);
|
|
68
|
+
this.indexReady = true;
|
|
69
|
+
}
|
|
70
|
+
if (this.hybrid && !this.textIndexReady) {
|
|
71
|
+
await this.ensureTextIndex();
|
|
72
|
+
this.textIndexReady = true;
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
async ensureVectorIndex(dimensions) {
|
|
76
|
+
const existing = ((await this.client.ai.indexes.find()).data ?? []);
|
|
77
|
+
for (const index of existing) {
|
|
78
|
+
if (index.label !== this.label || index.propertyName !== this.textProperty)
|
|
79
|
+
continue;
|
|
80
|
+
if (this.managed && index.sourceType !== 'external')
|
|
81
|
+
return;
|
|
82
|
+
if (!this.managed &&
|
|
83
|
+
index.sourceType === 'external' &&
|
|
84
|
+
index.similarityFunction === this.similarity &&
|
|
85
|
+
(dimensions === undefined || index.dimensions === dimensions)) {
|
|
86
|
+
return;
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
const params = { label: this.label, propertyName: this.textProperty };
|
|
90
|
+
if (!this.managed) {
|
|
91
|
+
params.external = true;
|
|
92
|
+
params.dimensions = dimensions ?? (await this.embeddings.embedQuery('dimension probe')).length;
|
|
93
|
+
params.similarityFunction = this.similarity;
|
|
94
|
+
}
|
|
95
|
+
await this.client.ai.indexes.create(params);
|
|
96
|
+
}
|
|
97
|
+
async ensureTextIndex() {
|
|
98
|
+
const existing = ((await this.client.textIndexes.find()).data ?? []);
|
|
99
|
+
if (existing.some((i) => i.label === this.label && i.property === this.textProperty))
|
|
100
|
+
return;
|
|
101
|
+
await this.client.textIndexes.create({
|
|
102
|
+
label: this.label,
|
|
103
|
+
property: this.textProperty,
|
|
104
|
+
consistency: this.textIndexConsistency
|
|
105
|
+
});
|
|
106
|
+
}
|
|
107
|
+
// ── writes ─────────────────────────────────────────────────────────────
|
|
108
|
+
async addDocuments(documents, options) {
|
|
109
|
+
if (this.managed)
|
|
110
|
+
return this.write(documents, undefined, options?.ids);
|
|
111
|
+
const vectors = await this.embeddings.embedDocuments(documents.map((d) => d.pageContent));
|
|
112
|
+
return this.addVectors(vectors, documents, options);
|
|
113
|
+
}
|
|
114
|
+
async addVectors(vectors, documents, options) {
|
|
115
|
+
if (this.managed)
|
|
116
|
+
throw new Error('addVectors needs caller-computed embeddings, not managed ones.');
|
|
117
|
+
return this.write(documents, vectors, options?.ids);
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Store `documents`; a document whose id already exists replaces it.
|
|
121
|
+
*
|
|
122
|
+
* New documents are written in one atomic import; records of existing ids
|
|
123
|
+
* are deleted first.
|
|
124
|
+
*/
|
|
125
|
+
async write(documents, vectors, idsArg) {
|
|
126
|
+
if (idsArg && idsArg.length !== documents.length) {
|
|
127
|
+
throw new Error('ids must have one entry per document.');
|
|
128
|
+
}
|
|
129
|
+
const ids = documents.map((doc, i) => idsArg?.[i] || doc.id || randomUUID());
|
|
130
|
+
if (!documents.length)
|
|
131
|
+
return [];
|
|
132
|
+
await this.ensureIndexes(vectors?.[0]?.length);
|
|
133
|
+
const rows = documents.map((doc, i) => this.row(doc, ids[i]));
|
|
134
|
+
const entries = vectors?.map((vector) => [
|
|
135
|
+
{ propertyName: this.textProperty, vector, similarityFunction: this.similarity }
|
|
136
|
+
]);
|
|
137
|
+
await deleteIds(this.client, await this.recordIds(ids));
|
|
138
|
+
await createRows(this.client, this.label, rows, entries);
|
|
139
|
+
return ids;
|
|
140
|
+
}
|
|
141
|
+
row(doc, id) {
|
|
142
|
+
const metadata = { ...(doc.metadata ?? {}) };
|
|
143
|
+
return {
|
|
144
|
+
[ID_PROPERTY]: id,
|
|
145
|
+
[this.textProperty]: doc.pageContent,
|
|
146
|
+
[METADATA_PROPERTY]: toJson(metadata),
|
|
147
|
+
...mirror(METADATA_PREFIX, metadata)
|
|
148
|
+
};
|
|
149
|
+
}
|
|
150
|
+
async recordIds(ids) {
|
|
151
|
+
if (!ids.length)
|
|
152
|
+
return [];
|
|
153
|
+
const rows = await findAll(this.client, {
|
|
154
|
+
labels: [this.label],
|
|
155
|
+
where: { [ID_PROPERTY]: { $in: ids } }
|
|
156
|
+
});
|
|
157
|
+
return rows.map((row) => row.__id);
|
|
158
|
+
}
|
|
159
|
+
/** Delete the documents with `ids`, or every document with `deleteAll: true`. */
|
|
160
|
+
async delete(params = {}) {
|
|
161
|
+
if (params.deleteAll) {
|
|
162
|
+
await this.client.records.delete({ labels: [this.label] });
|
|
163
|
+
return;
|
|
164
|
+
}
|
|
165
|
+
if (!params.ids)
|
|
166
|
+
throw new Error('delete needs `ids`, or `deleteAll: true`.');
|
|
167
|
+
await deleteIds(this.client, await this.recordIds(params.ids));
|
|
168
|
+
}
|
|
169
|
+
// ── reads ──────────────────────────────────────────────────────────────
|
|
170
|
+
async getByIds(ids) {
|
|
171
|
+
if (!ids.length)
|
|
172
|
+
return [];
|
|
173
|
+
const rows = await findAll(this.client, {
|
|
174
|
+
labels: [this.label],
|
|
175
|
+
where: { [ID_PROPERTY]: { $in: ids } }
|
|
176
|
+
});
|
|
177
|
+
return rows.map((row) => this.document(row));
|
|
178
|
+
}
|
|
179
|
+
document(row) {
|
|
180
|
+
const raw = row[METADATA_PROPERTY];
|
|
181
|
+
const metadata = typeof raw === 'string' && raw ? JSON.parse(raw) : {};
|
|
182
|
+
return new Document({
|
|
183
|
+
id: row[ID_PROPERTY],
|
|
184
|
+
pageContent: row[this.textProperty] ?? '',
|
|
185
|
+
metadata
|
|
186
|
+
});
|
|
187
|
+
}
|
|
188
|
+
/** The RushDB vector search request; `where` is a raw RushDB filter. */
|
|
189
|
+
searchParams(query, vector, k, filter, where) {
|
|
190
|
+
const params = { labels: [this.label], propertyName: this.textProperty, limit: k };
|
|
191
|
+
if (this.managed) {
|
|
192
|
+
params.query = query;
|
|
193
|
+
}
|
|
194
|
+
else {
|
|
195
|
+
params.queryVector = vector;
|
|
196
|
+
params.similarityFunction = this.similarity;
|
|
197
|
+
}
|
|
198
|
+
let combined = translateFilter(filter, METADATA_PREFIX);
|
|
199
|
+
if (where && Object.keys(where).length) {
|
|
200
|
+
combined = Object.keys(combined).length ? { $and: [combined, where] } : { ...where };
|
|
201
|
+
}
|
|
202
|
+
if (Object.keys(combined).length)
|
|
203
|
+
params.where = combined;
|
|
204
|
+
return params;
|
|
205
|
+
}
|
|
206
|
+
async runSearch(params) {
|
|
207
|
+
const vector = params.queryVector;
|
|
208
|
+
await this.ensureIndexes(vector?.length);
|
|
209
|
+
const result = await this.client.records.vectorSearch(params);
|
|
210
|
+
return result.data.map((record) => {
|
|
211
|
+
const row = record.data;
|
|
212
|
+
return [this.document(row), Number(row.__score ?? 0)];
|
|
213
|
+
});
|
|
214
|
+
}
|
|
215
|
+
/** Search with a LangChain `filter`, a raw RushDB `where`, or both. */
|
|
216
|
+
async searchWithScore(query, options = {}) {
|
|
217
|
+
const vector = this.managed ? undefined : await this.embeddings.embedQuery(query);
|
|
218
|
+
return this.runSearch(this.searchParams(query, vector, options.k ?? 4, options.filter, options.where));
|
|
219
|
+
}
|
|
220
|
+
async similaritySearchVectorWithScore(query, k, filter) {
|
|
221
|
+
if (this.managed)
|
|
222
|
+
throw new Error('Search by vector needs caller-computed embeddings, not managed ones.');
|
|
223
|
+
return this.runSearch(this.searchParams(undefined, query, k, filter));
|
|
224
|
+
}
|
|
225
|
+
async similaritySearchWithScore(query, k = 4, filter) {
|
|
226
|
+
return this.searchWithScore(query, { k, filter });
|
|
227
|
+
}
|
|
228
|
+
async similaritySearch(query, k = 4, filter) {
|
|
229
|
+
return (await this.searchWithScore(query, { k, filter })).map(([doc]) => doc);
|
|
230
|
+
}
|
|
231
|
+
/** Results with relevance in [0, 1] (see `relevanceFn`). */
|
|
232
|
+
async similaritySearchWithRelevanceScores(query, k = 4, filter) {
|
|
233
|
+
const relevance = relevanceFn(this.similarity);
|
|
234
|
+
return (await this.searchWithScore(query, { k, filter })).map(([doc, score]) => [doc, relevance(score)]);
|
|
235
|
+
}
|
|
236
|
+
static async fromTexts(texts, metadatas, embeddings, config = {}) {
|
|
237
|
+
const docs = texts.map((text, i) => new Document({
|
|
238
|
+
pageContent: text,
|
|
239
|
+
metadata: (Array.isArray(metadatas) ? metadatas[i] : metadatas) ?? {}
|
|
240
|
+
}));
|
|
241
|
+
return RushDBVectorStore.fromDocuments(docs, embeddings, config);
|
|
242
|
+
}
|
|
243
|
+
static async fromDocuments(docs, embeddings, config = {}) {
|
|
244
|
+
const store = new RushDBVectorStore(embeddings, config);
|
|
245
|
+
await store.addDocuments(docs);
|
|
246
|
+
return store;
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
/** Map an engine score (higher is closer) to a relevance in [0, 1]. */
|
|
250
|
+
export function relevanceFn(similarity) {
|
|
251
|
+
if (similarity === 'cosine')
|
|
252
|
+
return (s) => (1 + s) / 2;
|
|
253
|
+
if (similarity === 'dot')
|
|
254
|
+
return (s) => 1 / (1 + Math.exp(-s));
|
|
255
|
+
return (s) => s;
|
|
256
|
+
}
|
|
257
|
+
//# sourceMappingURL=vectorstores.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vectorstores.js","sourceRoot":"","sources":["../src/vectorstores.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,74 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@rushdb/langchain",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"
|
|
5
|
-
"
|
|
6
|
-
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "LangChain and LangGraph integration for RushDB: vector store, hybrid retriever, long-term memory store and checkpointer, on RushDB Cloud or self-hosted",
|
|
5
|
+
"license": "Apache-2.0",
|
|
6
|
+
"type": "module",
|
|
7
|
+
"main": "./dist/index.js",
|
|
8
|
+
"types": "./dist/index.d.ts",
|
|
9
|
+
"exports": {
|
|
10
|
+
".": {
|
|
11
|
+
"types": "./dist/index.d.ts",
|
|
12
|
+
"import": "./dist/index.js"
|
|
13
|
+
}
|
|
14
|
+
},
|
|
15
|
+
"files": [
|
|
16
|
+
"README.md",
|
|
17
|
+
"dist"
|
|
18
|
+
],
|
|
19
|
+
"repository": {
|
|
20
|
+
"type": "git",
|
|
21
|
+
"url": "git+https://github.com/rush-db/langchain-rushdb.git",
|
|
22
|
+
"directory": "libs/js"
|
|
23
|
+
},
|
|
24
|
+
"homepage": "https://docs.rushdb.com/connect/langchain",
|
|
25
|
+
"keywords": [
|
|
26
|
+
"rushdb",
|
|
27
|
+
"langchain",
|
|
28
|
+
"langgraph",
|
|
29
|
+
"vector store",
|
|
30
|
+
"hybrid search",
|
|
31
|
+
"checkpointer",
|
|
32
|
+
"agent memory",
|
|
33
|
+
"rag",
|
|
34
|
+
"self-hosted"
|
|
35
|
+
],
|
|
36
|
+
"engines": {
|
|
37
|
+
"node": ">=20"
|
|
38
|
+
},
|
|
39
|
+
"scripts": {
|
|
40
|
+
"build": "rimraf dist && tsc -p tsconfig.build.json",
|
|
41
|
+
"types:check": "tsc --noEmit",
|
|
42
|
+
"test": "vitest run",
|
|
43
|
+
"prepack": "pnpm build"
|
|
44
|
+
},
|
|
45
|
+
"dependencies": {
|
|
46
|
+
"@rushdb/javascript-sdk": "^3.3.1"
|
|
47
|
+
},
|
|
48
|
+
"peerDependencies": {
|
|
49
|
+
"@langchain/core": "^1.0.0",
|
|
50
|
+
"@langchain/langgraph-checkpoint": "^1.0.0"
|
|
51
|
+
},
|
|
52
|
+
"devDependencies": {
|
|
53
|
+
"@langchain/core": "1.3.5",
|
|
54
|
+
"@langchain/langgraph": "1.7.2",
|
|
55
|
+
"@langchain/langgraph-checkpoint": "1.2.2",
|
|
56
|
+
"@langchain/langgraph-checkpoint-validation": "1.2.0",
|
|
57
|
+
"@types/node": "^20.19.43",
|
|
58
|
+
"rimraf": "^6.1.4",
|
|
59
|
+
"typescript": "5.7.2",
|
|
60
|
+
"vitest": "^3.2.7"
|
|
61
|
+
},
|
|
62
|
+
"pnpm": {
|
|
63
|
+
"onlyBuiltDependencies": [
|
|
64
|
+
"esbuild"
|
|
65
|
+
]
|
|
66
|
+
},
|
|
67
|
+
"bugs": {
|
|
68
|
+
"url": "https://github.com/rush-db/langchain-rushdb/issues"
|
|
69
|
+
},
|
|
70
|
+
"publishConfig": {
|
|
71
|
+
"access": "public",
|
|
72
|
+
"provenance": true
|
|
73
|
+
}
|
|
74
|
+
}
|