@adonis-agora/agent 0.34.1 → 0.35.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/CHANGELOG.md +18 -0
- package/README.md +34 -0
- package/dist/assets/spa/assets/index-7XqfoeQH.js +9 -0
- package/dist/assets/spa/index.html +1 -1
- package/dist/providers/agent_provider.d.ts.map +1 -1
- package/dist/providers/agent_provider.js +4 -0
- package/dist/providers/agent_provider.js.map +1 -1
- package/dist/src/agent-deps-factory.d.ts +5 -0
- package/dist/src/agent-deps-factory.d.ts.map +1 -1
- package/dist/src/agent-deps-factory.js +6 -0
- package/dist/src/agent-deps-factory.js.map +1 -1
- package/dist/src/agent-deps.d.ts +5 -0
- package/dist/src/agent-deps.d.ts.map +1 -1
- package/dist/src/agent-deps.js.map +1 -1
- package/dist/src/define_config.d.ts +12 -0
- package/dist/src/define_config.d.ts.map +1 -1
- package/dist/src/define_config.js.map +1 -1
- package/dist/src/guardrails/agent.d.ts +211 -0
- package/dist/src/guardrails/agent.d.ts.map +1 -0
- package/dist/src/guardrails/agent.js +433 -0
- package/dist/src/guardrails/agent.js.map +1 -0
- package/dist/src/guardrails/detectors/custom.d.ts +9 -0
- package/dist/src/guardrails/detectors/custom.d.ts.map +1 -0
- package/dist/src/guardrails/detectors/custom.js +81 -0
- package/dist/src/guardrails/detectors/custom.js.map +1 -0
- package/dist/src/guardrails/detectors/injection.d.ts +23 -0
- package/dist/src/guardrails/detectors/injection.d.ts.map +1 -0
- package/dist/src/guardrails/detectors/injection.js +208 -0
- package/dist/src/guardrails/detectors/injection.js.map +1 -0
- package/dist/src/guardrails/detectors/pii.d.ts +23 -0
- package/dist/src/guardrails/detectors/pii.d.ts.map +1 -0
- package/dist/src/guardrails/detectors/pii.js +295 -0
- package/dist/src/guardrails/detectors/pii.js.map +1 -0
- package/dist/src/guardrails/detectors/secrets.d.ts +5 -0
- package/dist/src/guardrails/detectors/secrets.d.ts.map +1 -0
- package/dist/src/guardrails/detectors/secrets.js +110 -0
- package/dist/src/guardrails/detectors/secrets.js.map +1 -0
- package/dist/src/guardrails/detectors/tool-poisoning.d.ts +16 -0
- package/dist/src/guardrails/detectors/tool-poisoning.d.ts.map +1 -0
- package/dist/src/guardrails/detectors/tool-poisoning.js +116 -0
- package/dist/src/guardrails/detectors/tool-poisoning.js.map +1 -0
- package/dist/src/guardrails/engine.d.ts +90 -0
- package/dist/src/guardrails/engine.d.ts.map +1 -0
- package/dist/src/guardrails/engine.js +324 -0
- package/dist/src/guardrails/engine.js.map +1 -0
- package/dist/src/guardrails/glob.d.ts +4 -0
- package/dist/src/guardrails/glob.d.ts.map +1 -0
- package/dist/src/guardrails/glob.js +20 -0
- package/dist/src/guardrails/glob.js.map +1 -0
- package/dist/src/guardrails/index.d.ts +20 -0
- package/dist/src/guardrails/index.d.ts.map +1 -0
- package/dist/src/guardrails/index.js +20 -0
- package/dist/src/guardrails/index.js.map +1 -0
- package/dist/src/guardrails/segments.d.ts +14 -0
- package/dist/src/guardrails/segments.d.ts.map +1 -0
- package/dist/src/guardrails/segments.js +32 -0
- package/dist/src/guardrails/segments.js.map +1 -0
- package/dist/src/guardrails/types.d.ts +161 -0
- package/dist/src/guardrails/types.d.ts.map +1 -0
- package/dist/src/guardrails/types.js +49 -0
- package/dist/src/guardrails/types.js.map +1 -0
- package/dist/src/guardrails/vault.d.ts +44 -0
- package/dist/src/guardrails/vault.d.ts.map +1 -0
- package/dist/src/guardrails/vault.js +103 -0
- package/dist/src/guardrails/vault.js.map +1 -0
- package/dist/src/index.d.ts +1 -1
- package/dist/src/index.js +1 -1
- package/dist/src/mcp-client/index.d.ts +1 -1
- package/dist/src/mcp-client/index.d.ts.map +1 -1
- package/dist/src/mcp-client/index.js.map +1 -1
- package/dist/src/mcp-client/options.d.ts +32 -0
- package/dist/src/mcp-client/options.d.ts.map +1 -1
- package/dist/src/mcp-client/tool-source.d.ts +2 -0
- package/dist/src/mcp-client/tool-source.d.ts.map +1 -1
- package/dist/src/mcp-client/tool-source.js +27 -1
- package/dist/src/mcp-client/tool-source.js.map +1 -1
- package/dist/src/rag/http-reranker.d.ts +46 -0
- package/dist/src/rag/http-reranker.d.ts.map +1 -0
- package/dist/src/rag/http-reranker.js +83 -0
- package/dist/src/rag/http-reranker.js.map +1 -0
- package/dist/src/rag/hybrid-retriever.d.ts +6 -1
- package/dist/src/rag/hybrid-retriever.d.ts.map +1 -1
- package/dist/src/rag/hybrid-retriever.js +27 -3
- package/dist/src/rag/hybrid-retriever.js.map +1 -1
- package/dist/src/rag/index.d.ts +5 -2
- package/dist/src/rag/index.d.ts.map +1 -1
- package/dist/src/rag/index.js +5 -2
- package/dist/src/rag/index.js.map +1 -1
- package/dist/src/rag/lexical-retriever.d.ts +23 -0
- package/dist/src/rag/lexical-retriever.d.ts.map +1 -0
- package/dist/src/rag/lexical-retriever.js +28 -0
- package/dist/src/rag/lexical-retriever.js.map +1 -0
- package/dist/src/rag/openai-embeddings.d.ts +62 -0
- package/dist/src/rag/openai-embeddings.d.ts.map +1 -0
- package/dist/src/rag/openai-embeddings.js +106 -0
- package/dist/src/rag/openai-embeddings.js.map +1 -0
- package/dist/src/rag/pg-vector-store.d.ts +111 -6
- package/dist/src/rag/pg-vector-store.d.ts.map +1 -1
- package/dist/src/rag/pg-vector-store.js +224 -31
- package/dist/src/rag/pg-vector-store.js.map +1 -1
- package/dist/src/rag/vector-store.d.ts +15 -0
- package/dist/src/rag/vector-store.d.ts.map +1 -1
- package/dist/src/rag/vector-store.js +4 -0
- package/dist/src/rag/vector-store.js.map +1 -1
- package/dist/src/stores/factory.d.ts +25 -3
- package/dist/src/stores/factory.d.ts.map +1 -1
- package/dist/src/stores/factory.js +21 -3
- package/dist/src/stores/factory.js.map +1 -1
- package/dist/src/testing/fake-embedding-provider.d.ts +12 -0
- package/dist/src/testing/fake-embedding-provider.d.ts.map +1 -1
- package/dist/src/testing/fake-embedding-provider.js +35 -0
- package/dist/src/testing/fake-embedding-provider.js.map +1 -1
- package/dist/src/testing/index.d.ts +1 -1
- package/dist/src/testing/index.d.ts.map +1 -1
- package/dist/src/testing/index.js +1 -1
- package/dist/src/testing/index.js.map +1 -1
- package/package.json +8 -2
- package/dist/assets/spa/assets/index-DjIMQOxi.js +0 -9
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pg-vector-store.d.ts","sourceRoot":"","sources":["../../../src/rag/pg-vector-store.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACtE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,KAAK,EACV,eAAe,EACf,aAAa,EACb,YAAY,EACZ,mBAAmB,EACnB,WAAW,EACZ,MAAM,mBAAmB,CAAC;AAG3B;;;;GAIG;AACH,MAAM,MAAM,cAAc,GAAG,QAAQ,GAAG,IAAI,GAAG,OAAO,CAAC;AAEvD;;;;;GAKG;AACH,MAAM,WAAW,eAAe;IAC9B,6EAA6E;IAC7E,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,yCAAyC;IACzC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,2DAA2D;IAC3D,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,8DAA8D;IAC9D,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,yDAAyD;IACzD,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,oBAAoB;IACnC,sFAAsF;IACtF,KAAK,CAAC,EAAE,MAAM,CAAC;IACf
|
|
1
|
+
{"version":3,"file":"pg-vector-store.d.ts","sourceRoot":"","sources":["../../../src/rag/pg-vector-store.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,19 +4,19 @@ const METRICS = {
|
|
|
4
4
|
cosine: {
|
|
5
5
|
operator: '<=>',
|
|
6
6
|
opclass: 'vector_cosine_ops',
|
|
7
|
-
score: (col) => `1 - (${col} <=>
|
|
7
|
+
score: (col, type = 'vector') => `1 - (${col} <=> ?::${type})`,
|
|
8
8
|
},
|
|
9
9
|
l2: {
|
|
10
10
|
operator: '<->',
|
|
11
11
|
opclass: 'vector_l2_ops',
|
|
12
|
-
score: (col) => `-(${col} <->
|
|
12
|
+
score: (col, type = 'vector') => `-(${col} <-> ?::${type})`,
|
|
13
13
|
},
|
|
14
14
|
inner: {
|
|
15
15
|
// pgvector's `<#>` returns the NEGATIVE inner product, so `-(a <#> b)` recovers the inner product
|
|
16
16
|
// and `ORDER BY a <#> b ASC` ranks the largest inner product first — consistent with the others.
|
|
17
17
|
operator: '<#>',
|
|
18
18
|
opclass: 'vector_ip_ops',
|
|
19
|
-
score: (col) => `-(${col} <#>
|
|
19
|
+
score: (col, type = 'vector') => `-(${col} <#> ?::${type})`,
|
|
20
20
|
},
|
|
21
21
|
};
|
|
22
22
|
/** Only unqualified SQL identifiers (letter/underscore start, then letters/digits/underscores) are allowed. */
|
|
@@ -192,14 +192,39 @@ function documentIdExpr(col) {
|
|
|
192
192
|
export class PgVectorStore {
|
|
193
193
|
db;
|
|
194
194
|
table;
|
|
195
|
+
/** The single width (fixed-dimension table), or `undefined` for a mixed-dimension table. */
|
|
195
196
|
dimension;
|
|
197
|
+
/** The widths with a partial HNSW index, for a mixed-dimension table. */
|
|
198
|
+
indexedDimensions;
|
|
199
|
+
nullableEmbeddings;
|
|
200
|
+
iterativeScan;
|
|
201
|
+
efSearch;
|
|
202
|
+
upsertBatchSize;
|
|
203
|
+
iterativeScanSupport;
|
|
196
204
|
metric;
|
|
197
205
|
metricName;
|
|
198
206
|
col;
|
|
199
207
|
constructor(db, options = {}) {
|
|
200
208
|
this.db = db;
|
|
201
209
|
this.table = assertIdentifier(options.table ?? 'agent_rag_chunks', 'table');
|
|
202
|
-
|
|
210
|
+
const dimension = options.dimension ?? 1536;
|
|
211
|
+
if (typeof dimension === 'number') {
|
|
212
|
+
this.dimension = dimension;
|
|
213
|
+
this.indexedDimensions = [];
|
|
214
|
+
}
|
|
215
|
+
else {
|
|
216
|
+
for (const width of dimension) {
|
|
217
|
+
if (!Number.isInteger(width) || width <= 0) {
|
|
218
|
+
throw new Error(`Invalid pgvector dimension ${String(width)}: must be a positive integer`);
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
this.dimension = undefined;
|
|
222
|
+
this.indexedDimensions = [...new Set(dimension)];
|
|
223
|
+
}
|
|
224
|
+
this.nullableEmbeddings = options.nullableEmbeddings ?? false;
|
|
225
|
+
this.iterativeScan = options.iterativeScan;
|
|
226
|
+
this.efSearch = options.efSearch;
|
|
227
|
+
this.upsertBatchSize = Math.max(1, Math.floor(options.upsertBatchSize ?? 100));
|
|
203
228
|
this.metricName = options.metric ?? 'cosine';
|
|
204
229
|
this.metric = METRICS[this.metricName];
|
|
205
230
|
const columns = options.columns ?? {};
|
|
@@ -223,18 +248,29 @@ export class PgVectorStore {
|
|
|
223
248
|
/** The `CREATE EXTENSION` / `CREATE TABLE` / `CREATE INDEX` statements {@link ensureSchema} issues. */
|
|
224
249
|
schemaStatements() {
|
|
225
250
|
const c = this.col;
|
|
226
|
-
|
|
251
|
+
const mixed = this.dimension === undefined;
|
|
252
|
+
const statements = [
|
|
227
253
|
'CREATE EXTENSION IF NOT EXISTS vector',
|
|
228
254
|
`CREATE TABLE IF NOT EXISTS ${this.table} (
|
|
229
255
|
${c.id} TEXT PRIMARY KEY,
|
|
230
256
|
${c.text} TEXT NOT NULL,
|
|
231
257
|
${c.source} TEXT,
|
|
232
258
|
${c.metadata} JSONB,
|
|
233
|
-
${c.embedding} vector(${this.dimension}) NOT NULL
|
|
259
|
+
${c.embedding} ${mixed ? 'vector' : `vector(${this.dimension})`}${this.nullableEmbeddings ? '' : ' NOT NULL'}
|
|
234
260
|
)`,
|
|
235
|
-
`CREATE INDEX IF NOT EXISTS ${this.table}_${c.embedding}_idx
|
|
236
|
-
ON ${this.table} USING hnsw (${c.embedding} ${this.metric.opclass})`,
|
|
237
261
|
];
|
|
262
|
+
if (mixed) {
|
|
263
|
+
for (const width of this.indexedDimensions) {
|
|
264
|
+
statements.push(`CREATE INDEX IF NOT EXISTS ${this.table}_${c.embedding}_${width}_idx
|
|
265
|
+
ON ${this.table} USING hnsw ((${c.embedding}::vector(${width})) ${this.metric.opclass})
|
|
266
|
+
WHERE vector_dims(${c.embedding}) = ${width}`);
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
else {
|
|
270
|
+
statements.push(`CREATE INDEX IF NOT EXISTS ${this.table}_${c.embedding}_idx
|
|
271
|
+
ON ${this.table} USING hnsw (${c.embedding} ${this.metric.opclass})`);
|
|
272
|
+
}
|
|
273
|
+
return statements;
|
|
238
274
|
}
|
|
239
275
|
/**
|
|
240
276
|
* Every `text`/`jsonb` binding (id, text, source, metadata — including nested metadata values, array
|
|
@@ -242,23 +278,38 @@ export class PgVectorStore {
|
|
|
242
278
|
* (`0x00`) in `text`/`jsonb` outright, while upstream sources (PDF extraction, Qdrant) happily carry
|
|
243
279
|
* it, so an unstripped chunk would otherwise fail this INSERT with `invalid byte sequence for encoding
|
|
244
280
|
* "UTF8": 0x00`. The embedding is untouched — it is never text/jsonb.
|
|
281
|
+
*
|
|
282
|
+
* Written as multi-row `INSERT … ON CONFLICT` statements of {@link PgVectorStoreOptions.upsertBatchSize}
|
|
283
|
+
* rows each (one round trip per batch instead of per chunk). An empty `embedding` is written as `NULL`.
|
|
245
284
|
*/
|
|
246
285
|
async upsert(records) {
|
|
247
|
-
|
|
286
|
+
// The id is stripped before de-duplication, so two ids differing only by a NUL byte are the one
|
|
287
|
+
// row they would be stored as. One statement can't touch a row twice (`ON CONFLICT DO UPDATE
|
|
288
|
+
// command cannot affect row a second time`), so duplicates collapse to the LAST occurrence — the
|
|
289
|
+
// same last-write-wins the old row-by-row loop had.
|
|
290
|
+
const byId = new Map();
|
|
248
291
|
for (const record of records) {
|
|
292
|
+
const id = stripNulBytes(record.id);
|
|
293
|
+
byId.delete(id);
|
|
294
|
+
byId.set(id, { ...record, id });
|
|
295
|
+
}
|
|
296
|
+
const unique = [...byId.values()];
|
|
297
|
+
const c = this.col;
|
|
298
|
+
for (let start = 0; start < unique.length; start += this.upsertBatchSize) {
|
|
299
|
+
const batch = unique.slice(start, start + this.upsertBatchSize);
|
|
300
|
+
const bindings = [];
|
|
301
|
+
for (const record of batch) {
|
|
302
|
+
bindings.push(record.id, stripNulBytes(record.text), stripNulBytes(record.source ?? null), record.metadata !== undefined ? JSON.stringify(stripNulBytes(record.metadata)) : null,
|
|
303
|
+
// An empty embedding is a chunk with no vector yet — NULL (see `nullableEmbeddings`).
|
|
304
|
+
record.embedding.length > 0 ? toVectorLiteral(record.embedding) : null);
|
|
305
|
+
}
|
|
249
306
|
await this.db.rawQuery(`INSERT INTO ${this.table} (${c.id}, ${c.text}, ${c.source}, ${c.metadata}, ${c.embedding})
|
|
250
|
-
VALUES (?, ?, ?, ?::jsonb, ?::vector)
|
|
307
|
+
VALUES ${batch.map(() => '(?, ?, ?, ?::jsonb, ?::vector)').join(', ')}
|
|
251
308
|
ON CONFLICT (${c.id}) DO UPDATE SET
|
|
252
309
|
${c.text} = EXCLUDED.${c.text},
|
|
253
310
|
${c.source} = EXCLUDED.${c.source},
|
|
254
311
|
${c.metadata} = EXCLUDED.${c.metadata},
|
|
255
|
-
${c.embedding} = EXCLUDED.${c.embedding}`,
|
|
256
|
-
stripNulBytes(record.id),
|
|
257
|
-
stripNulBytes(record.text),
|
|
258
|
-
stripNulBytes(record.source ?? null),
|
|
259
|
-
record.metadata !== undefined ? JSON.stringify(stripNulBytes(record.metadata)) : null,
|
|
260
|
-
toVectorLiteral(record.embedding),
|
|
261
|
-
]);
|
|
312
|
+
${c.embedding} = EXCLUDED.${c.embedding}`, bindings);
|
|
262
313
|
}
|
|
263
314
|
}
|
|
264
315
|
/**
|
|
@@ -366,10 +417,33 @@ export class PgVectorStore {
|
|
|
366
417
|
const raw = await this.db.rawQuery(`DELETE FROM ${this.table} ${where.sql} RETURNING ${this.col.id} AS id`, where.bindings);
|
|
367
418
|
return normalizeRows(raw).length;
|
|
368
419
|
}
|
|
420
|
+
/**
|
|
421
|
+
* Nearest first by the configured metric. On a mixed-dimension table only vectors as wide as the
|
|
422
|
+
* query are compared (through that width's partial index when it has one); a chunk without an
|
|
423
|
+
* embedding is never returned.
|
|
424
|
+
*/
|
|
369
425
|
async search(embedding, options) {
|
|
426
|
+
if (embedding.length === 0) {
|
|
427
|
+
return [];
|
|
428
|
+
}
|
|
370
429
|
const c = this.col;
|
|
371
430
|
const vector = toVectorLiteral(embedding);
|
|
372
|
-
|
|
431
|
+
// A fixed-width table keeps the exact expression its index was built on (`embedding`); a mixed one
|
|
432
|
+
// casts both sides to the query's width so the planner can match that width's partial index.
|
|
433
|
+
let vectorType = 'vector';
|
|
434
|
+
const shapeClauses = [];
|
|
435
|
+
if (this.dimension === undefined) {
|
|
436
|
+
const width = embedding.length;
|
|
437
|
+
if (this.indexedDimensions.includes(width)) {
|
|
438
|
+
vectorType = `vector(${width})`;
|
|
439
|
+
}
|
|
440
|
+
shapeClauses.push(`${c.embedding} IS NOT NULL`, `vector_dims(${c.embedding}) = ${width}`);
|
|
441
|
+
}
|
|
442
|
+
else if (this.nullableEmbeddings) {
|
|
443
|
+
shapeClauses.push(`${c.embedding} IS NOT NULL`);
|
|
444
|
+
}
|
|
445
|
+
const column = vectorType === 'vector' ? c.embedding : `(${c.embedding}::${vectorType})`;
|
|
446
|
+
const scoreExpr = this.metric.score(column, vectorType);
|
|
373
447
|
const meta = buildMetadataWhere(options.filter, c.metadata);
|
|
374
448
|
// Combine the metadata predicate with an optional minScore relevance floor. Filtering the score
|
|
375
449
|
// expression in SQL (not in JS after the fact) keeps the floor applied BEFORE `LIMIT`, so the K
|
|
@@ -382,6 +456,7 @@ export class PgVectorStore {
|
|
|
382
456
|
clauses.push(meta.sql.slice('WHERE '.length));
|
|
383
457
|
whereBindings.push(...meta.bindings);
|
|
384
458
|
}
|
|
459
|
+
clauses.push(...shapeClauses);
|
|
385
460
|
if (options.minScore !== undefined) {
|
|
386
461
|
// The score expression carries its own `?::vector`, so the embedding is bound again here.
|
|
387
462
|
clauses.push(`${scoreExpr} >= ?`);
|
|
@@ -392,24 +467,142 @@ export class PgVectorStore {
|
|
|
392
467
|
// then the optional filter/minScore clause(s), then the ORDER BY embedding, then the LIMIT. The
|
|
393
468
|
// embedding is bound once per `?::vector` because a positional `?` cannot be reused like a `$1`.
|
|
394
469
|
const bindings = [vector, ...whereBindings, vector, options.topK];
|
|
395
|
-
const
|
|
470
|
+
const sql = `SELECT ${c.id} AS id, ${c.text} AS text, ${c.source} AS source, ${c.metadata} AS metadata,
|
|
396
471
|
${scoreExpr} AS score
|
|
397
472
|
FROM ${this.table}
|
|
398
473
|
${whereSql}
|
|
399
|
-
ORDER BY ${
|
|
400
|
-
LIMIT
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
474
|
+
ORDER BY ${column} ${this.metric.operator} ?::${vectorType}
|
|
475
|
+
LIMIT ?`;
|
|
476
|
+
const raw = await this.withSearchSettings((runner) => runner.rawQuery(sql, bindings));
|
|
477
|
+
return normalizeRows(raw).map(toPassage);
|
|
478
|
+
}
|
|
479
|
+
/** Run a read with the configured HNSW settings `SET LOCAL` in one transaction, when possible. */
|
|
480
|
+
async withSearchSettings(read) {
|
|
481
|
+
const transaction = this.db.transaction;
|
|
482
|
+
if (typeof transaction !== 'function') {
|
|
483
|
+
return read(this.db);
|
|
484
|
+
}
|
|
485
|
+
const iterative = this.iterativeScan !== undefined && (await this.supportsIterativeScan());
|
|
486
|
+
if (!iterative && this.efSearch === undefined) {
|
|
487
|
+
return read(this.db);
|
|
488
|
+
}
|
|
489
|
+
return transaction.call(this.db, async (trx) => {
|
|
490
|
+
// Lucid's transaction client is a full query client (it has `rawQuery`); the structural type
|
|
491
|
+
// this file sees only promises `from`/`table`, hence the check.
|
|
492
|
+
const runner = trx;
|
|
493
|
+
if (typeof runner.rawQuery !== 'function') {
|
|
494
|
+
return read(this.db);
|
|
495
|
+
}
|
|
496
|
+
const tx = runner;
|
|
497
|
+
if (iterative) {
|
|
498
|
+
await tx.rawQuery(`SELECT set_config('hnsw.iterative_scan', ?, true)`, [
|
|
499
|
+
this.iterativeScan,
|
|
500
|
+
]);
|
|
501
|
+
}
|
|
502
|
+
if (this.efSearch !== undefined) {
|
|
503
|
+
await tx.rawQuery(`SELECT set_config('hnsw.ef_search', ?, true)`, [String(this.efSearch)]);
|
|
504
|
+
}
|
|
505
|
+
return read(tx);
|
|
411
506
|
});
|
|
412
507
|
}
|
|
508
|
+
/** `hnsw.iterative_scan` exists from pgvector 0.8.0; setting it on an older one is an error. */
|
|
509
|
+
supportsIterativeScan() {
|
|
510
|
+
this.iterativeScanSupport ??= this.db
|
|
511
|
+
.rawQuery(`SELECT extversion FROM pg_extension WHERE extname = 'vector'`)
|
|
512
|
+
.then((raw) => {
|
|
513
|
+
const version = String(normalizeRows(raw)[0]?.extversion ?? '0.0');
|
|
514
|
+
const [major = 0, minor = 0] = version.split('.').map(Number);
|
|
515
|
+
return major > 0 || minor >= 8;
|
|
516
|
+
})
|
|
517
|
+
.catch(() => false);
|
|
518
|
+
return this.iterativeScanSupport;
|
|
519
|
+
}
|
|
520
|
+
}
|
|
521
|
+
/**
|
|
522
|
+
* {@link PgVectorStore} plus Postgres full-text search: a {@link LexicalVectorStore}, so a
|
|
523
|
+
* {@link import('./lexical-retriever.js').LexicalRetriever} and a
|
|
524
|
+
* {@link import('./hybrid-retriever.js').HybridRetriever} can fuse the dense and lexical legs over the
|
|
525
|
+
* same rows and ids. `retrievers.pgvector({ fullText: {} })` wires exactly that.
|
|
526
|
+
*
|
|
527
|
+
* Ranking is `ts_rank_cd` (cover density); the query goes through `websearch_to_tsquery` (quoted
|
|
528
|
+
* phrases, `-exclusions`, `or`), falling back to any word (see {@link PgFullTextOptions.anyTermFallback}).
|
|
529
|
+
*
|
|
530
|
+
* A separate class rather than a method on {@link PgVectorStore} on purpose: full-text search needs a
|
|
531
|
+
* GIN index, which on a populated table belongs in a migration you run and watch (`CREATE INDEX` in
|
|
532
|
+
* `ensureSchema` takes a write lock at boot), and a store that silently grew `searchText` on upgrade
|
|
533
|
+
* would be picked up by every `isLexicalVectorStore` check and scan an unindexed table.
|
|
534
|
+
*/
|
|
535
|
+
export class PgLexicalVectorStore extends PgVectorStore {
|
|
536
|
+
tsConfig;
|
|
537
|
+
tsColumn;
|
|
538
|
+
anyTermFallback;
|
|
539
|
+
constructor(db, options = {}) {
|
|
540
|
+
super(db, options);
|
|
541
|
+
this.tsConfig = assertIdentifier(options.fullText?.config ?? 'simple', 'text search config');
|
|
542
|
+
this.tsColumn =
|
|
543
|
+
options.fullText?.column !== undefined
|
|
544
|
+
? assertIdentifier(options.fullText.column, 'column')
|
|
545
|
+
: undefined;
|
|
546
|
+
this.anyTermFallback = options.fullText?.anyTermFallback ?? true;
|
|
547
|
+
}
|
|
548
|
+
schemaStatements() {
|
|
549
|
+
const statements = super.schemaStatements();
|
|
550
|
+
if (this.tsColumn === undefined) {
|
|
551
|
+
statements.push(`CREATE INDEX IF NOT EXISTS ${this.table}_${this.col.text}_tsv_idx
|
|
552
|
+
ON ${this.table} USING gin (${this.tsvector()})`);
|
|
553
|
+
}
|
|
554
|
+
return statements;
|
|
555
|
+
}
|
|
556
|
+
/**
|
|
557
|
+
* Full-text search over the chunk text. `score` is a `ts_rank_cd` rank — not a similarity, and not on
|
|
558
|
+
* the vector leg's scale — so `minScore` is deliberately not applied here.
|
|
559
|
+
*/
|
|
560
|
+
async searchText(query, options) {
|
|
561
|
+
if ((options.filter !== undefined && filterDeniesAll(options.filter)) || query.trim() === '') {
|
|
562
|
+
return [];
|
|
563
|
+
}
|
|
564
|
+
const all = await this.runTextSearch('websearch_to_tsquery', query, options);
|
|
565
|
+
if (all.length > 0 || !this.anyTermFallback) {
|
|
566
|
+
return all;
|
|
567
|
+
}
|
|
568
|
+
const terms = [...new Set(query.toLowerCase().match(/[\p{L}\p{N}]{2,}/gu) ?? [])].slice(0, 24);
|
|
569
|
+
if (terms.length < 2) {
|
|
570
|
+
return all;
|
|
571
|
+
}
|
|
572
|
+
// Terms are letters/digits only, so quoting each one is enough to make it a literal lexeme.
|
|
573
|
+
return this.runTextSearch('to_tsquery', terms.map((term) => `'${term}'`).join(' | '), options);
|
|
574
|
+
}
|
|
575
|
+
async runTextSearch(parser, query, options) {
|
|
576
|
+
const c = this.col;
|
|
577
|
+
const where = buildMetadataWhere(options.filter, c.metadata);
|
|
578
|
+
// The parsed query is a lateral relation, so the one `?` binding feeds both the match and the rank.
|
|
579
|
+
const clauses = [`${this.tsvector()} @@ __tsq.q`];
|
|
580
|
+
if (where.sql !== '') {
|
|
581
|
+
clauses.push(where.sql.slice('WHERE '.length));
|
|
582
|
+
}
|
|
583
|
+
const raw = await this.db.rawQuery(`SELECT ${c.id} AS id, ${c.text} AS text, ${c.source} AS source, ${c.metadata} AS metadata,
|
|
584
|
+
ts_rank_cd(${this.tsvector()}, __tsq.q) AS score
|
|
585
|
+
FROM ${this.table}, ${parser}('${this.tsConfig}', ?) AS __tsq(q)
|
|
586
|
+
WHERE ${clauses.join(' AND ')}
|
|
587
|
+
ORDER BY score DESC, ${c.id}
|
|
588
|
+
LIMIT ?`, [query, ...where.bindings, options.topK]);
|
|
589
|
+
return normalizeRows(raw).map(toPassage);
|
|
590
|
+
}
|
|
591
|
+
/** Must be character-for-character the index expression, or the planner won't use the index. */
|
|
592
|
+
tsvector() {
|
|
593
|
+
return this.tsColumn ?? `to_tsvector('${this.tsConfig}'::regconfig, ${this.col.text})`;
|
|
594
|
+
}
|
|
595
|
+
}
|
|
596
|
+
function toPassage(row) {
|
|
597
|
+
const metadata = parseMetadata(row.metadata);
|
|
598
|
+
const source = row.source;
|
|
599
|
+
return {
|
|
600
|
+
id: String(row.id),
|
|
601
|
+
text: String(row.text),
|
|
602
|
+
score: Number(row.score),
|
|
603
|
+
...(source !== null && source !== undefined ? { source: String(source) } : {}),
|
|
604
|
+
...(metadata !== undefined ? { metadata } : {}),
|
|
605
|
+
};
|
|
413
606
|
}
|
|
414
607
|
/**
|
|
415
608
|
* A {@link import('../spi/retriever.js').Retriever} over a {@link PgVectorStore}: embed the query, then
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pg-vector-store.js","sourceRoot":"","sources":["../../../src/rag/pg-vector-store.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"pg-vector-store.js","sourceRoot":"","sources":["../../../src/rag/pg-vector-store.ts"],"names":[],"mappings":"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"}
|
|
@@ -126,6 +126,21 @@ export interface VectorStore {
|
|
|
126
126
|
*/
|
|
127
127
|
removeWhere?(filter: Record<string, unknown>): Promise<number>;
|
|
128
128
|
}
|
|
129
|
+
/**
|
|
130
|
+
* OPTIONAL capability: a store that can also search its own full-text index. Lets a
|
|
131
|
+
* {@link import('./lexical-retriever.js').LexicalRetriever} run the lexical half of a hybrid search
|
|
132
|
+
* over the SAME rows (and ids) the vector half searches — no second index to feed. Feature-detect with
|
|
133
|
+
* {@link isLexicalVectorStore}. {@link import('./pg-vector-store.js').PgLexicalVectorStore} implements it.
|
|
134
|
+
*/
|
|
135
|
+
export interface LexicalVectorStore extends VectorStore {
|
|
136
|
+
/**
|
|
137
|
+
* Rank chunks by full-text relevance to `query`, best first, honouring `filter` exactly as `search`
|
|
138
|
+
* does. `score` is the backend's text rank — not comparable to a vector similarity.
|
|
139
|
+
*/
|
|
140
|
+
searchText(query: string, options: VectorSearchOptions): Promise<Passage[]>;
|
|
141
|
+
}
|
|
142
|
+
/** Whether `store` implements {@link LexicalVectorStore}. */
|
|
143
|
+
export declare function isLexicalVectorStore(store: VectorStore): store is LexicalVectorStore;
|
|
129
144
|
/**
|
|
130
145
|
* A destructive call was refused because its scope could not be trusted. Thrown by
|
|
131
146
|
* {@link VectorStore.removeWhere} — never for a filter that merely matched nothing (that is a legitimate
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vector-store.d.ts","sourceRoot":"","sources":["../../../src/rag/vector-store.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"vector-store.d.ts","sourceRoot":"","sources":["../../../src/rag/vector-store.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,7 @@
|
|
|
1
|
+
/** Whether `store` implements {@link LexicalVectorStore}. */
|
|
2
|
+
export function isLexicalVectorStore(store) {
|
|
3
|
+
return typeof store.searchText === 'function';
|
|
4
|
+
}
|
|
1
5
|
/**
|
|
2
6
|
* A destructive call was refused because its scope could not be trusted. Thrown by
|
|
3
7
|
* {@link VectorStore.removeWhere} — never for a filter that merely matched nothing (that is a legitimate
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vector-store.js","sourceRoot":"","sources":["../../../src/rag/vector-store.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"vector-store.js","sourceRoot":"","sources":["../../../src/rag/vector-store.ts"],"names":[],"mappings":"AAkJA,6DAA6D;AAC7D,MAAM,UAAU,oBAAoB,CAAC,KAAkB;IACrD,OAAO,OAAQ,KAAqC,CAAC,UAAU,KAAK,UAAU,CAAC;AACjF,CAAC;AAED;;;;GAIG;AACH,MAAM,OAAO,kBAAmB,SAAQ,KAAK;IAGhC,MAAM;IAFjB;IACE,mCAAmC;IAC1B,MAAsB,EAC/B,OAAe;QAEf,KAAK,CAAC,OAAO,CAAC,CAAC;sBAHN,MAAM;QAIf,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAC;IACnC,CAAC;CACF;AAED;;;;GAIG;AACH,MAAM,UAAU,mBAAmB,CAAC,MAA+B;IACjE,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACrC,MAAM,IAAI,kBAAkB,CAC1B,cAAc,EACd,8FAA8F;YAC5F,2FAA2F;YAC3F,uEAAuE,CAC1E,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,eAAe,CAAC,MAA+B;IAC7D,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC;AAC3F,CAAC;AAuBD;;;;GAIG;AACH,MAAM,UAAU,kBAAkB,CAAC,KAAoB;IACrD,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,SAAS,CAAC,CAAC;AACtE,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,kBAAkB,CAChC,QAA6C,EAC7C,KAAoB;IAEpB,MAAM,IAAI,GAA4B,EAAE,GAAG,QAAQ,EAAE,CAAC;IACtD,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QACrC,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;QACzB,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,SAAS,CAAC,0DAA0D;QACtE,CAAC;QACD,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;YACnB,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,0CAA0C;YAC5D,SAAS;QACX,CAAC;QACD,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,uDAAuD;IAC5E,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAQD,gFAAgF;AAChF,MAAM,UAAU,YAAY,CAAC,OAAe;IAC1C,OAAO,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;AACtC,CAAC"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { ApplicationService } from '@adonisjs/core/types';
|
|
2
|
+
import type { HybridRetrieverOptions } from '../rag/hybrid-retriever.js';
|
|
2
3
|
import type { IngestDocument } from '../rag/ingest.js';
|
|
3
|
-
import type { PgVectorColumns, PgVectorMetric } from '../rag/pg-vector-store.js';
|
|
4
|
+
import type { PgFullTextOptions, PgVectorColumns, PgVectorMetric, PgVectorStoreOptions } from '../rag/pg-vector-store.js';
|
|
4
5
|
import type { QdrantClientLike, QdrantMetric } from '../rag/qdrant-store.js';
|
|
5
6
|
import type { RedisStreamClient } from '../redis-stream-client.js';
|
|
6
7
|
import type { ActorDirectory } from '../spi/actor-directory.js';
|
|
@@ -218,12 +219,33 @@ export interface PgVectorRetrieverConfig {
|
|
|
218
219
|
connection?: string;
|
|
219
220
|
/** Chunk table name. Default `agent_rag_chunks`. Validated against a strict identifier regex. */
|
|
220
221
|
table?: string;
|
|
221
|
-
/**
|
|
222
|
-
|
|
222
|
+
/**
|
|
223
|
+
* Embedding width — must match the model (e.g. 1536 for text-embedding-3-small). Default 1536. A list
|
|
224
|
+
* makes a mixed-dimension table (one partial HNSW index per width); see `PgVectorStoreOptions`.
|
|
225
|
+
*/
|
|
226
|
+
dimension?: number | readonly number[];
|
|
223
227
|
/** Similarity metric / distance operator (`cosine` default, `l2`, `inner`). */
|
|
224
228
|
metric?: PgVectorMetric;
|
|
225
229
|
/** Override the physical column names (each validated). */
|
|
226
230
|
columns?: PgVectorColumns;
|
|
231
|
+
/** Allow chunks without an embedding (`embedding: []` → `NULL`). Default `false`. */
|
|
232
|
+
nullableEmbeddings?: boolean;
|
|
233
|
+
/** pgvector ≥ 0.8 iterative index scan for filtered searches. Default off. */
|
|
234
|
+
iterativeScan?: PgVectorStoreOptions['iterativeScan'];
|
|
235
|
+
/** `hnsw.ef_search` for searches. */
|
|
236
|
+
efSearch?: number;
|
|
237
|
+
/** Rows per multi-row upsert statement. Default 100. */
|
|
238
|
+
upsertBatchSize?: number;
|
|
239
|
+
/**
|
|
240
|
+
* Add a Postgres full-text leg: the store becomes a `PgLexicalVectorStore` and the retriever a
|
|
241
|
+
* `HybridRetriever` fusing vector + full-text search with reciprocal rank fusion (`{}` for the
|
|
242
|
+
* defaults: `simple` config over `to_tsvector(text)`). Needs the GIN index — `ensureSchema` or the
|
|
243
|
+
* migration creates it. Default off (vector search only). `minScore` then applies to neither leg: a
|
|
244
|
+
* fused rank is not a similarity.
|
|
245
|
+
*/
|
|
246
|
+
fullText?: PgFullTextOptions & {
|
|
247
|
+
hybrid?: HybridRetrieverOptions;
|
|
248
|
+
};
|
|
227
249
|
/**
|
|
228
250
|
* Provision the `vector` extension, table, and index at boot (idempotent DDL). Handy for tests/scripts;
|
|
229
251
|
* production should run the bundled migration instead. Default `false`.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../../src/stores/factory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC/D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../../src/stores/factory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC/D,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AACzE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,KAAK,EACV,iBAAiB,EACjB,eAAe,EACf,cAAc,EACd,oBAAoB,EACrB,MAAM,2BAA2B,CAAC;AACnC,OAAO,KAAK,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAC7E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AACnE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAC;AAC3E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACtE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAC;AAC3E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AACnE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAEpD;;;GAGG;AACH,MAAM,WAAW,YAAY;IAC3B,GAAG,EAAE,kBAAkB,CAAC;CACzB;AAED;;;;GAIG;AACH,MAAM,MAAM,YAAY,GAAG,CAAC,GAAG,EAAE,YAAY,KAAK,OAAO,CAAC,UAAU,CAAC,CAAC;AAwCtE;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,CAIhF;AAED,qDAAqD;AACrD,MAAM,WAAW,gBAAgB;IAC/B,mFAAmF;IACnF,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED,qEAAqE;AACrE,MAAM,MAAM,iBAAiB,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;AAEtD;;;;;;;;;;;;;;;;;GAiBG;AACH,eAAO,MAAM,MAAM;IACjB,2FAA2F;IAC3F,MAAM,WAAU,iBAAiB,GAAQ,YAAY;IAOrD,8EAA8E;IAC9E,KAAK,UAAS,gBAAgB,GAAQ,YAAY;CAgBnD,CAAC;AAIF;;;;GAIG;AACH,MAAM,WAAW,YAAa,SAAQ,YAAY;IAChD,KAAK,EAAE,UAAU,CAAC;CACnB;AAED;;;;GAIG;AACH,MAAM,MAAM,YAAY,GAAG,CAAC,GAAG,EAAE,YAAY,KAAK,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;AAEnF,gFAAgF;AAChF,MAAM,WAAW,WAAW;IAC1B,oCAAoC;IACpC,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;;;;;;;;;GAUG;AACH,eAAO,MAAM,MAAM;IACjB,kGAAkG;IAClG,MAAM,SAAS,WAAW,GAAG,YAAY;IAOzC;;;OAGG;IACH,MAAM,SAAS,WAAW,GAAG,YAAY;CAM1C,CAAC;AAIF,wFAAwF;AACxF,MAAM,MAAM,cAAc,GAAG,YAAY,CAAC;AAE1C,iFAAiF;AACjF,MAAM,MAAM,cAAc,GAAG,CAC3B,GAAG,EAAE,cAAc,KAChB,iBAAiB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;AAEpD,kDAAkD;AAClD,MAAM,WAAW,kBAAkB;IACjC,mFAAmF;IACnF,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;OAGG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED;;;;;;;;;;GAUG;AACH,eAAO,MAAM,aAAa;IACxB,gEAAgE;IAChE,MAAM,IAAI,cAAc;IAOxB,+FAA+F;IAC/F,KAAK,UAAS,kBAAkB,GAAQ,cAAc;CAcvD,CAAC;AAIF;;;;;;GAMG;AACH,MAAM,WAAW,wBAAyB,SAAQ,YAAY;IAC5D,YAAY,CAAC,EAAE,iBAAiB,CAAC;CAClC;AAED;;;;;GAKG;AACH,MAAM,MAAM,wBAAwB,GAAG,CACrC,GAAG,EAAE,wBAAwB,KAC1B,sBAAsB,GAAG,OAAO,CAAC,sBAAsB,CAAC,CAAC;AAE9D,0DAA0D;AAC1D,MAAM,WAAW,qBAAqB;IACpC,mFAAmF;IACnF,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,iBAAiB;IAC5B,sGAAsG;IACtG,KAAK,UAAS,qBAAqB,GAAQ,wBAAwB;CAcpE,CAAC;AAIF,0FAA0F;AAC1F,MAAM,MAAM,gBAAgB,GAAG,YAAY,CAAC;AAE5C;;;;GAIG;AACH,MAAM,MAAM,gBAAgB,GAAG,CAAC,GAAG,EAAE,gBAAgB,KAAK,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;AAEzF,6GAA6G;AAC7G,MAAM,MAAM,gBAAgB,GAAG,MAAM,iBAAiB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;AAEpF,mFAAmF;AACnF,MAAM,WAAW,qBAAqB;IACpC,kGAAkG;IAClG,QAAQ,EAAE,iBAAiB,GAAG,gBAAgB,CAAC;IAC/C,iGAAiG;IACjG,SAAS,CAAC,EAAE,cAAc,EAAE,CAAC;IAC7B,oDAAoD;IACpD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,yDAAyD;IACzD,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,oGAAoG;AACpG,MAAM,WAAW,uBAAuB;IACtC,kGAAkG;IAClG,QAAQ,EAAE,iBAAiB,GAAG,gBAAgB,CAAC;IAC/C;;;OAGG;IACH,EAAE,CAAC,EAAE,iBAAiB,CAAC;IACvB,kGAAkG;IAClG,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,iGAAiG;IACjG,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,CAAC;IACvC,+EAA+E;IAC/E,MAAM,CAAC,EAAE,cAAc,CAAC;IACxB,2DAA2D;IAC3D,OAAO,CAAC,EAAE,eAAe,CAAC;IAC1B,qFAAqF;IACrF,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,8EAA8E;IAC9E,aAAa,CAAC,EAAE,oBAAoB,CAAC,eAAe,CAAC,CAAC;IACtD,qCAAqC;IACrC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,wDAAwD;IACxD,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB;;;;;;OAMG;IACH,QAAQ,CAAC,EAAE,iBAAiB,GAAG;QAAE,MAAM,CAAC,EAAE,sBAAsB,CAAA;KAAE,CAAC;IACnE;;;OAGG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,kGAAkG;IAClG,SAAS,CAAC,EAAE,cAAc,EAAE,CAAC;IAC7B,oDAAoD;IACpD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,yDAAyD;IACzD,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,0GAA0G;AAC1G,MAAM,WAAW,qBAAqB;IACpC,4EAA4E;IAC5E,QAAQ,EAAE,iBAAiB,GAAG,CAAC,MAAM,OAAO,CAAC,iBAAiB,CAAC,CAAC,CAAC;IACjE,oFAAoF;IACpF,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,iCAAiC;IACjC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,sGAAsG;IACtG,MAAM,CAAC,EAAE,gBAAgB,CAAC;IAC1B,mDAAmD;IACnD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,4DAA4D;IAC5D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,2CAA2C;IAC3C,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB,6FAA6F;IAC7F,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,wEAAwE;IACxE,SAAS,CAAC,EAAE,cAAc,EAAE,CAAC;IAC7B,oDAAoD;IACpD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,yDAAyD;IACzD,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,UAAU;IACrB,uGAAuG;IACvG,MAAM,SAAS,qBAAqB,GAAG,gBAAgB;IAoBvD;;;;;OAKG;IACH,QAAQ,SAAS,uBAAuB,GAAG,gBAAgB;IA2D3D;;;;OAIG;IACH,MAAM,SAAS,qBAAqB,GAAG,gBAAgB;CAkCxD,CAAC;AAIF,mGAAmG;AACnG,MAAM,MAAM,wBAAwB,GAAG,YAAY,CAAC;AAEpD;;;;;GAKG;AACH,MAAM,MAAM,wBAAwB,GAAG,CACrC,GAAG,EAAE,wBAAwB,KAC1B,sBAAsB,GAAG,OAAO,CAAC,sBAAsB,CAAC,CAAC;AAE9D;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,gBAAgB;IAC3B;;;OAGG;IACH,MAAM,IAAI,wBAAwB;CAQnC,CAAC;AAIF;;;;;GAKG;AACH,MAAM,MAAM,gBAAgB,GAAG,CAAC,GAAG,EAAE,YAAY,KAAK,eAAe,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;AAEjG,6DAA6D;AAC7D,MAAM,WAAW,oBAAoB;IACnC,0EAA0E;IAC1E,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,yDAAyD;IACzD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;OAIG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;;OAIG;IACH,MAAM,CAAC,EAAE,iBAAiB,CAAC;CAC5B;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,eAAO,MAAM,UAAU;IACrB,2GAA2G;IAC3G,MAAM,IAAI,gBAAgB;IAO1B;;;;;OAKG;IACH,KAAK,UAAS,oBAAoB,GAAQ,gBAAgB;CAU3D,CAAC;AAEF,mCAAmC;AACnC,eAAO,MAAM,gBAAgB;IA3B3B,2GAA2G;cACjG,gBAAgB;IAO1B;;;;;OAKG;mBACW,oBAAoB,GAAQ,gBAAgB;CAalB,CAAC;AAsF3C;;;;GAIG;AACH,MAAM,MAAM,qBAAqB,GAAG,CAAC,GAAG,EAAE,YAAY,KAAK,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;AAEpG,iDAAiD;AACjD,MAAM,WAAW,0BAA0B;IACzC,gDAAgD;IAChD,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACjC;AAED;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,gBAAgB;IAC3B,uFAAuF;IACvF,MAAM,UAAS,0BAA0B,GAAQ,qBAAqB;CAMvE,CAAC"}
|
|
@@ -206,7 +206,7 @@ export const retrievers = {
|
|
|
206
206
|
*/
|
|
207
207
|
pgvector(config) {
|
|
208
208
|
return async (ctx) => {
|
|
209
|
-
const { PgVectorStore, PgVectorRetriever } = await import('../rag/pg-vector-store.js');
|
|
209
|
+
const { PgLexicalVectorStore, PgVectorStore, PgVectorRetriever } = await import('../rag/pg-vector-store.js');
|
|
210
210
|
const { ingestDocuments } = await import('../rag/ingest.js');
|
|
211
211
|
const embedder = typeof config.embedder === 'function' ? await config.embedder() : config.embedder;
|
|
212
212
|
const db = config.db ??
|
|
@@ -216,12 +216,25 @@ export const retrievers = {
|
|
|
216
216
|
? dbService.connection(config.connection)
|
|
217
217
|
: dbService);
|
|
218
218
|
})());
|
|
219
|
-
const
|
|
219
|
+
const storeOptions = {
|
|
220
220
|
...(config.table !== undefined ? { table: config.table } : {}),
|
|
221
221
|
...(config.dimension !== undefined ? { dimension: config.dimension } : {}),
|
|
222
222
|
...(config.metric !== undefined ? { metric: config.metric } : {}),
|
|
223
223
|
...(config.columns !== undefined ? { columns: config.columns } : {}),
|
|
224
|
-
|
|
224
|
+
...(config.nullableEmbeddings !== undefined
|
|
225
|
+
? { nullableEmbeddings: config.nullableEmbeddings }
|
|
226
|
+
: {}),
|
|
227
|
+
...(config.iterativeScan !== undefined ? { iterativeScan: config.iterativeScan } : {}),
|
|
228
|
+
...(config.efSearch !== undefined ? { efSearch: config.efSearch } : {}),
|
|
229
|
+
...(config.upsertBatchSize !== undefined
|
|
230
|
+
? { upsertBatchSize: config.upsertBatchSize }
|
|
231
|
+
: {}),
|
|
232
|
+
};
|
|
233
|
+
const { hybrid: hybridOptions, ...fullText } = config.fullText ?? {};
|
|
234
|
+
const lexical = config.fullText !== undefined
|
|
235
|
+
? new PgLexicalVectorStore(db, { ...storeOptions, fullText })
|
|
236
|
+
: undefined;
|
|
237
|
+
const store = lexical ?? new PgVectorStore(db, storeOptions);
|
|
225
238
|
if (config.ensureSchema === true) {
|
|
226
239
|
await store.ensureSchema();
|
|
227
240
|
}
|
|
@@ -233,6 +246,11 @@ export const retrievers = {
|
|
|
233
246
|
...(config.overlap !== undefined ? { overlap: config.overlap } : {}),
|
|
234
247
|
});
|
|
235
248
|
}
|
|
249
|
+
if (lexical !== undefined) {
|
|
250
|
+
const { HybridRetriever } = await import('../rag/hybrid-retriever.js');
|
|
251
|
+
const { LexicalRetriever } = await import('../rag/lexical-retriever.js');
|
|
252
|
+
return new HybridRetriever([new PgVectorRetriever(embedder, lexical), new LexicalRetriever(lexical)], hybridOptions);
|
|
253
|
+
}
|
|
236
254
|
return new PgVectorRetriever(embedder, store);
|
|
237
255
|
};
|
|
238
256
|
},
|