@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.
Files changed (118) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/README.md +34 -0
  3. package/dist/assets/spa/assets/index-7XqfoeQH.js +9 -0
  4. package/dist/assets/spa/index.html +1 -1
  5. package/dist/providers/agent_provider.d.ts.map +1 -1
  6. package/dist/providers/agent_provider.js +4 -0
  7. package/dist/providers/agent_provider.js.map +1 -1
  8. package/dist/src/agent-deps-factory.d.ts +5 -0
  9. package/dist/src/agent-deps-factory.d.ts.map +1 -1
  10. package/dist/src/agent-deps-factory.js +6 -0
  11. package/dist/src/agent-deps-factory.js.map +1 -1
  12. package/dist/src/agent-deps.d.ts +5 -0
  13. package/dist/src/agent-deps.d.ts.map +1 -1
  14. package/dist/src/agent-deps.js.map +1 -1
  15. package/dist/src/define_config.d.ts +12 -0
  16. package/dist/src/define_config.d.ts.map +1 -1
  17. package/dist/src/define_config.js.map +1 -1
  18. package/dist/src/guardrails/agent.d.ts +211 -0
  19. package/dist/src/guardrails/agent.d.ts.map +1 -0
  20. package/dist/src/guardrails/agent.js +433 -0
  21. package/dist/src/guardrails/agent.js.map +1 -0
  22. package/dist/src/guardrails/detectors/custom.d.ts +9 -0
  23. package/dist/src/guardrails/detectors/custom.d.ts.map +1 -0
  24. package/dist/src/guardrails/detectors/custom.js +81 -0
  25. package/dist/src/guardrails/detectors/custom.js.map +1 -0
  26. package/dist/src/guardrails/detectors/injection.d.ts +23 -0
  27. package/dist/src/guardrails/detectors/injection.d.ts.map +1 -0
  28. package/dist/src/guardrails/detectors/injection.js +208 -0
  29. package/dist/src/guardrails/detectors/injection.js.map +1 -0
  30. package/dist/src/guardrails/detectors/pii.d.ts +23 -0
  31. package/dist/src/guardrails/detectors/pii.d.ts.map +1 -0
  32. package/dist/src/guardrails/detectors/pii.js +295 -0
  33. package/dist/src/guardrails/detectors/pii.js.map +1 -0
  34. package/dist/src/guardrails/detectors/secrets.d.ts +5 -0
  35. package/dist/src/guardrails/detectors/secrets.d.ts.map +1 -0
  36. package/dist/src/guardrails/detectors/secrets.js +110 -0
  37. package/dist/src/guardrails/detectors/secrets.js.map +1 -0
  38. package/dist/src/guardrails/detectors/tool-poisoning.d.ts +16 -0
  39. package/dist/src/guardrails/detectors/tool-poisoning.d.ts.map +1 -0
  40. package/dist/src/guardrails/detectors/tool-poisoning.js +116 -0
  41. package/dist/src/guardrails/detectors/tool-poisoning.js.map +1 -0
  42. package/dist/src/guardrails/engine.d.ts +90 -0
  43. package/dist/src/guardrails/engine.d.ts.map +1 -0
  44. package/dist/src/guardrails/engine.js +324 -0
  45. package/dist/src/guardrails/engine.js.map +1 -0
  46. package/dist/src/guardrails/glob.d.ts +4 -0
  47. package/dist/src/guardrails/glob.d.ts.map +1 -0
  48. package/dist/src/guardrails/glob.js +20 -0
  49. package/dist/src/guardrails/glob.js.map +1 -0
  50. package/dist/src/guardrails/index.d.ts +20 -0
  51. package/dist/src/guardrails/index.d.ts.map +1 -0
  52. package/dist/src/guardrails/index.js +20 -0
  53. package/dist/src/guardrails/index.js.map +1 -0
  54. package/dist/src/guardrails/segments.d.ts +14 -0
  55. package/dist/src/guardrails/segments.d.ts.map +1 -0
  56. package/dist/src/guardrails/segments.js +32 -0
  57. package/dist/src/guardrails/segments.js.map +1 -0
  58. package/dist/src/guardrails/types.d.ts +161 -0
  59. package/dist/src/guardrails/types.d.ts.map +1 -0
  60. package/dist/src/guardrails/types.js +49 -0
  61. package/dist/src/guardrails/types.js.map +1 -0
  62. package/dist/src/guardrails/vault.d.ts +44 -0
  63. package/dist/src/guardrails/vault.d.ts.map +1 -0
  64. package/dist/src/guardrails/vault.js +103 -0
  65. package/dist/src/guardrails/vault.js.map +1 -0
  66. package/dist/src/index.d.ts +1 -1
  67. package/dist/src/index.js +1 -1
  68. package/dist/src/mcp-client/index.d.ts +1 -1
  69. package/dist/src/mcp-client/index.d.ts.map +1 -1
  70. package/dist/src/mcp-client/index.js.map +1 -1
  71. package/dist/src/mcp-client/options.d.ts +32 -0
  72. package/dist/src/mcp-client/options.d.ts.map +1 -1
  73. package/dist/src/mcp-client/tool-source.d.ts +2 -0
  74. package/dist/src/mcp-client/tool-source.d.ts.map +1 -1
  75. package/dist/src/mcp-client/tool-source.js +27 -1
  76. package/dist/src/mcp-client/tool-source.js.map +1 -1
  77. package/dist/src/rag/http-reranker.d.ts +46 -0
  78. package/dist/src/rag/http-reranker.d.ts.map +1 -0
  79. package/dist/src/rag/http-reranker.js +83 -0
  80. package/dist/src/rag/http-reranker.js.map +1 -0
  81. package/dist/src/rag/hybrid-retriever.d.ts +6 -1
  82. package/dist/src/rag/hybrid-retriever.d.ts.map +1 -1
  83. package/dist/src/rag/hybrid-retriever.js +27 -3
  84. package/dist/src/rag/hybrid-retriever.js.map +1 -1
  85. package/dist/src/rag/index.d.ts +5 -2
  86. package/dist/src/rag/index.d.ts.map +1 -1
  87. package/dist/src/rag/index.js +5 -2
  88. package/dist/src/rag/index.js.map +1 -1
  89. package/dist/src/rag/lexical-retriever.d.ts +23 -0
  90. package/dist/src/rag/lexical-retriever.d.ts.map +1 -0
  91. package/dist/src/rag/lexical-retriever.js +28 -0
  92. package/dist/src/rag/lexical-retriever.js.map +1 -0
  93. package/dist/src/rag/openai-embeddings.d.ts +62 -0
  94. package/dist/src/rag/openai-embeddings.d.ts.map +1 -0
  95. package/dist/src/rag/openai-embeddings.js +106 -0
  96. package/dist/src/rag/openai-embeddings.js.map +1 -0
  97. package/dist/src/rag/pg-vector-store.d.ts +111 -6
  98. package/dist/src/rag/pg-vector-store.d.ts.map +1 -1
  99. package/dist/src/rag/pg-vector-store.js +224 -31
  100. package/dist/src/rag/pg-vector-store.js.map +1 -1
  101. package/dist/src/rag/vector-store.d.ts +15 -0
  102. package/dist/src/rag/vector-store.d.ts.map +1 -1
  103. package/dist/src/rag/vector-store.js +4 -0
  104. package/dist/src/rag/vector-store.js.map +1 -1
  105. package/dist/src/stores/factory.d.ts +25 -3
  106. package/dist/src/stores/factory.d.ts.map +1 -1
  107. package/dist/src/stores/factory.js +21 -3
  108. package/dist/src/stores/factory.js.map +1 -1
  109. package/dist/src/testing/fake-embedding-provider.d.ts +12 -0
  110. package/dist/src/testing/fake-embedding-provider.d.ts.map +1 -1
  111. package/dist/src/testing/fake-embedding-provider.js +35 -0
  112. package/dist/src/testing/fake-embedding-provider.js.map +1 -1
  113. package/dist/src/testing/index.d.ts +1 -1
  114. package/dist/src/testing/index.d.ts.map +1 -1
  115. package/dist/src/testing/index.js +1 -1
  116. package/dist/src/testing/index.js.map +1 -1
  117. package/package.json +8 -2
  118. 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":"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"}
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} <=> ?::vector)`,
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} <-> ?::vector)`,
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} <#> ?::vector)`,
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
- this.dimension = options.dimension ?? 1536;
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
- return [
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
- const c = this.col;
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
- const scoreExpr = this.metric.score(c.embedding);
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 raw = await this.db.rawQuery(`SELECT ${c.id} AS id, ${c.text} AS text, ${c.source} AS source, ${c.metadata} AS metadata,
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 ${c.embedding} ${this.metric.operator} ?::vector
400
- LIMIT ?`, bindings);
401
- return normalizeRows(raw).map((row) => {
402
- const metadata = parseMetadata(row.metadata);
403
- const source = row.source;
404
- return {
405
- id: String(row.id),
406
- text: String(row.text),
407
- score: Number(row.score),
408
- ...(source !== null && source !== undefined ? { source: String(source) } : {}),
409
- ...(metadata !== undefined ? { metadata } : {}),
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":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAEnD,iGAAiG;AACjG,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,4DAA4D;IAC5D,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb;;;;OAIG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;;;;GAKG;AACH,MAAM,WAAW,WAAW;IAC1B,MAAM,CAAC,OAAO,EAAE,YAAY,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/C,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;IAC9E;;;;;;OAMG;IACH,MAAM,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1C;;;;OAIG;IACH,aAAa,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC,CAAC;IAC5E;;;;;;;;;;;;;;;;;;;;;;;;;;;OA2BG;IACH,cAAc,CAAC,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAC3E;;;;;;;;;;;;;;OAcG;IACH,eAAe,CAAC,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IACtE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA+BG;IACH,WAAW,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CAChE;AAED;;;;;GAKG;AACH,MAAM,WAAW,kBAAmB,SAAQ,WAAW;IACrD;;;OAGG;IACH,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;CAC7E;AAED,6DAA6D;AAC7D,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,WAAW,GAAG,KAAK,IAAI,kBAAkB,CAEpF;AAED;;;;GAIG;AACH,qBAAa,kBAAmB,SAAQ,KAAK;IAEzC,mCAAmC;IACnC,QAAQ,CAAC,MAAM,EAAE,cAAc;IAFjC;IACE,mCAAmC;IAC1B,MAAM,EAAE,cAAc,EAC/B,OAAO,EAAE,MAAM,EAIhB;CACF;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CASzE;AAED;;;;;;;;;GASG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAExE;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAEpD;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,aAAa,GAAG,MAAM,EAAE,CAEjE;AAED;;;;;;;;;GASG;AACH,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,EAC7C,KAAK,EAAE,aAAa,GACnB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAczB;AAED,uGAAuG;AACvG,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED,gFAAgF;AAChF,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAEpD"}
@@ -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":"AAoIA;;;;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
+ {"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
- /** Embedding width — must match the model (e.g. 1536 for text-embedding-3-small). Default 1536. */
222
- dimension?: number;
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":"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"}
1
+ {"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../../src/stores/factory.ts"],"names":[],"mappings":"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"}
@@ -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 store = new PgVectorStore(db, {
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
  },