@askdb/rag 0.2.0-beta.23 → 0.2.0-beta.24

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 (69) hide show
  1. package/README.md +14 -10
  2. package/bin/askdb-rag.js +8 -1
  3. package/dist/chunker/chunker.d.ts +5 -1
  4. package/dist/chunker/chunker.d.ts.map +1 -1
  5. package/dist/chunker/chunker.js +218 -125
  6. package/dist/chunker/chunker.js.map +1 -1
  7. package/dist/chunker/ids.d.ts +15 -0
  8. package/dist/chunker/ids.d.ts.map +1 -0
  9. package/dist/chunker/ids.js +22 -0
  10. package/dist/chunker/ids.js.map +1 -0
  11. package/dist/chunker/index.d.ts +1 -0
  12. package/dist/chunker/index.d.ts.map +1 -1
  13. package/dist/chunker/index.js +1 -0
  14. package/dist/chunker/index.js.map +1 -1
  15. package/dist/chunker/sources.d.ts.map +1 -1
  16. package/dist/chunker/sources.js +1 -0
  17. package/dist/chunker/sources.js.map +1 -1
  18. package/dist/embedders/ai-sdk.d.ts +15 -0
  19. package/dist/embedders/ai-sdk.d.ts.map +1 -1
  20. package/dist/embedders/ai-sdk.js +9 -0
  21. package/dist/embedders/ai-sdk.js.map +1 -1
  22. package/dist/embedders/dimensions.d.ts +9 -0
  23. package/dist/embedders/dimensions.d.ts.map +1 -0
  24. package/dist/embedders/dimensions.js +18 -0
  25. package/dist/embedders/dimensions.js.map +1 -0
  26. package/dist/embedders/openai.d.ts +1 -1
  27. package/dist/embedders/openai.js +1 -1
  28. package/dist/index.d.ts +5 -4
  29. package/dist/index.d.ts.map +1 -1
  30. package/dist/index.js +4 -3
  31. package/dist/index.js.map +1 -1
  32. package/dist/indexer/hash.d.ts +7 -0
  33. package/dist/indexer/hash.d.ts.map +1 -1
  34. package/dist/indexer/hash.js +13 -0
  35. package/dist/indexer/hash.js.map +1 -1
  36. package/dist/indexer/index.d.ts +10 -4
  37. package/dist/indexer/index.d.ts.map +1 -1
  38. package/dist/indexer/index.js +167 -30
  39. package/dist/indexer/index.js.map +1 -1
  40. package/dist/indexer/lock-file.d.ts +85 -4
  41. package/dist/indexer/lock-file.d.ts.map +1 -1
  42. package/dist/indexer/lock-file.js +108 -9
  43. package/dist/indexer/lock-file.js.map +1 -1
  44. package/dist/log-events.d.ts +11 -0
  45. package/dist/log-events.d.ts.map +1 -1
  46. package/dist/log-events.js +11 -0
  47. package/dist/log-events.js.map +1 -1
  48. package/dist/stores/file.d.ts +7 -1
  49. package/dist/stores/file.d.ts.map +1 -1
  50. package/dist/stores/file.js +52 -10
  51. package/dist/stores/file.js.map +1 -1
  52. package/dist/stores/memory.d.ts.map +1 -1
  53. package/dist/stores/memory.js +31 -3
  54. package/dist/stores/memory.js.map +1 -1
  55. package/dist/stores/pgvector.d.ts +36 -3
  56. package/dist/stores/pgvector.d.ts.map +1 -1
  57. package/dist/stores/pgvector.js +125 -17
  58. package/dist/stores/pgvector.js.map +1 -1
  59. package/dist/types.d.ts +69 -9
  60. package/dist/types.d.ts.map +1 -1
  61. package/package.json +10 -12
  62. package/dist/bin.d.ts +0 -3
  63. package/dist/bin.d.ts.map +0 -1
  64. package/dist/bin.js +0 -7
  65. package/dist/bin.js.map +0 -1
  66. package/dist/cli.d.ts +0 -11
  67. package/dist/cli.d.ts.map +0 -1
  68. package/dist/cli.js +0 -356
  69. package/dist/cli.js.map +0 -1
@@ -21,10 +21,16 @@ import type { VectorStore } from "../types.js";
21
21
  * Format (json):
22
22
  * {
23
23
  * "version": 1,
24
- * "schemaId"?: string,
25
24
  * "dimensions": number,
25
+ * "binSha256"?: string, // SHA-256 of the .bin it was written with
26
26
  * "records": [{ id, payload, hash? }] // same order as binary vectors
27
27
  * }
28
+ *
29
+ * Writes are crash-safe per file: each file is written to a temp path and
30
+ * renamed into place (the `.bin` first, the `.json` last). The `.json` records
31
+ * the SHA-256 of the `.bin` it belongs to, so a crash between the two renames
32
+ * is detected on the next load instead of silently pairing vectors with the
33
+ * wrong payloads.
28
34
  */
29
35
  export type FileStoreOptions = {
30
36
  /** Path prefix; the store will write `<prefix>.embeddings.bin` and `<prefix>.embeddings.json`. */
@@ -1 +1 @@
1
- {"version":3,"file":"file.d.ts","sourceRoot":"","sources":["../../src/stores/file.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAKV,WAAW,EACZ,MAAM,aAAa,CAAC;AAGrB;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,MAAM,MAAM,gBAAgB,GAAG;IAC7B,kGAAkG;IAClG,QAAQ,EAAE,MAAM,CAAC;IACjB,kDAAkD;IAClD,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,SAAS,GAAG,WAAW,GAAG;IACpC,qCAAqC;IACrC,KAAK,IAAI,IAAI,CAAC;IACd,wCAAwC;IACxC,IAAI,IAAI,MAAM,CAAC;CAChB,CAAC;AAKF,wBAAgB,eAAe,CAAC,OAAO,EAAE,gBAAgB,GAAG,SAAS,CAmCpE"}
1
+ {"version":3,"file":"file.d.ts","sourceRoot":"","sources":["../../src/stores/file.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAKV,WAAW,EACZ,MAAM,aAAa,CAAC;AAGrB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,MAAM,MAAM,gBAAgB,GAAG;IAC7B,kGAAkG;IAClG,QAAQ,EAAE,MAAM,CAAC;IACjB,kDAAkD;IAClD,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,SAAS,GAAG,WAAW,GAAG;IACpC,qCAAqC;IACrC,KAAK,IAAI,IAAI,CAAC;IACd,wCAAwC;IACxC,IAAI,IAAI,MAAM,CAAC;CAChB,CAAC;AAKF,wBAAgB,eAAe,CAAC,OAAO,EAAE,gBAAgB,GAAG,SAAS,CA6DpE"}
@@ -1,4 +1,5 @@
1
- import { existsSync, readFileSync, writeFileSync } from "node:fs";
1
+ import { createHash, randomBytes } from "node:crypto";
2
+ import { existsSync, readFileSync, renameSync, rmSync, writeFileSync } from "node:fs";
2
3
  import { createMemoryStore } from "./memory.js";
3
4
  const MAGIC = "ARAG";
4
5
  const FORMAT_VERSION = 1;
@@ -11,8 +12,21 @@ export function createFileStore(options) {
11
12
  hydrate(memory, binPath, metaPath);
12
13
  const flush = () => {
13
14
  const snap = memory.snapshot();
14
- writeBinary(binPath, snap.records.map((r) => r.vector), snap.dimensions ?? 0);
15
- writeMeta(metaPath, snap);
15
+ const bin = encodeBinary(snap.records.map((r) => r.vector), snap.dimensions ?? 0);
16
+ const meta = encodeMeta(snap, sha256(bin));
17
+ const suffix = `.tmp-${process.pid}-${randomBytes(4).toString("hex")}`;
18
+ const binTmp = `${binPath}${suffix}`;
19
+ const metaTmp = `${metaPath}${suffix}`;
20
+ try {
21
+ writeFileSync(binTmp, bin);
22
+ writeFileSync(metaTmp, meta, "utf8");
23
+ renameSync(binTmp, binPath);
24
+ renameSync(metaTmp, metaPath);
25
+ }
26
+ finally {
27
+ rmSync(binTmp, { force: true });
28
+ rmSync(metaTmp, { force: true });
29
+ }
16
30
  };
17
31
  return {
18
32
  async upsert(records) {
@@ -31,26 +45,50 @@ export function createFileStore(options) {
31
45
  async hashesByPrefix(prefix) {
32
46
  return (await memory.hashesByPrefix?.(prefix)) ?? {};
33
47
  },
48
+ async idsBySchema(schemaId) {
49
+ return (await memory.idsBySchema?.(schemaId)) ?? [];
50
+ },
51
+ describe() {
52
+ // No `location`: the indexer verifies this store through its own
53
+ // hashes, and `schema.lock.json` is committed, so a machine-local
54
+ // absolute path there would only churn and leak.
55
+ const { dimensions } = memory.describe?.() ?? {};
56
+ return {
57
+ kind: "file",
58
+ ...(dimensions !== undefined ? { dimensions } : {}),
59
+ widthHint: `Delete ${binPath} and ${metaPath} to rebuild the index at the new width.`,
60
+ };
61
+ },
34
62
  flush,
35
63
  size() {
36
64
  return memory.size();
37
65
  },
38
66
  };
39
67
  }
68
+ const REINDEX_HINT = "The embeddings files are out of sync (likely an interrupted write). " +
69
+ "Delete both files and rebuild the index (e.g. `askdb rag index <schema-dir>`, or `buildSchemaIndex` with `force: true`).";
40
70
  function hydrate(memory, binPath, metaPath) {
41
- if (!existsSync(binPath) || !existsSync(metaPath))
71
+ const hasBin = existsSync(binPath);
72
+ const hasMeta = existsSync(metaPath);
73
+ if (!hasBin && !hasMeta)
42
74
  return;
75
+ if (hasBin !== hasMeta) {
76
+ throw new Error(`File-store incomplete: found ${hasBin ? binPath : metaPath} but not ${hasBin ? metaPath : binPath}. ${REINDEX_HINT}`);
77
+ }
43
78
  const meta = JSON.parse(readFileSync(metaPath, "utf8"));
44
79
  if (meta.version !== FORMAT_VERSION) {
45
80
  throw new Error(`Unsupported file-store version ${meta.version} at ${metaPath} (expected ${FORMAT_VERSION}).`);
46
81
  }
47
82
  const buf = readFileSync(binPath);
83
+ if (meta.binSha256 !== undefined && meta.binSha256 !== sha256(buf)) {
84
+ throw new Error(`File-store mismatch: ${binPath} does not match the checksum recorded in ${metaPath}. ${REINDEX_HINT}`);
85
+ }
48
86
  const { dimensions, count, vectors } = readBinary(buf);
49
87
  if (count !== meta.records.length) {
50
- throw new Error(`File-store mismatch: ${binPath} has ${count} vectors but ${metaPath} has ${meta.records.length} records.`);
88
+ throw new Error(`File-store mismatch: ${binPath} has ${count} vectors but ${metaPath} has ${meta.records.length} records. ${REINDEX_HINT}`);
51
89
  }
52
90
  if (dimensions !== meta.dimensions) {
53
- throw new Error(`File-store dimension mismatch: bin=${dimensions} json=${meta.dimensions}.`);
91
+ throw new Error(`File-store dimension mismatch: bin=${dimensions} json=${meta.dimensions}. ${REINDEX_HINT}`);
54
92
  }
55
93
  memory.restore({
56
94
  dimensions,
@@ -62,7 +100,7 @@ function hydrate(memory, binPath, metaPath) {
62
100
  })),
63
101
  });
64
102
  }
65
- function writeBinary(path, vectors, dims) {
103
+ function encodeBinary(vectors, dims) {
66
104
  const count = vectors.length;
67
105
  const headerSize = 16; // magic(4) + version(4) + dims(4) + count(4)
68
106
  const totalSize = headerSize + count * dims * 4;
@@ -81,7 +119,7 @@ function writeBinary(path, vectors, dims) {
81
119
  offset += 4;
82
120
  }
83
121
  }
84
- writeFileSync(path, buf);
122
+ return buf;
85
123
  }
86
124
  function readBinary(buf) {
87
125
  if (buf.length < 16)
@@ -112,16 +150,20 @@ function readBinary(buf) {
112
150
  }
113
151
  return { dimensions, count, vectors };
114
152
  }
115
- function writeMeta(path, snap) {
153
+ function encodeMeta(snap, binSha256) {
116
154
  const meta = {
117
155
  version: FORMAT_VERSION,
118
156
  dimensions: snap.dimensions ?? 0,
157
+ binSha256,
119
158
  records: snap.records.map((r) => ({
120
159
  id: r.id,
121
160
  payload: r.payload,
122
161
  hash: r.hash,
123
162
  })),
124
163
  };
125
- writeFileSync(path, JSON.stringify(meta, null, 2) + "\n", "utf8");
164
+ return JSON.stringify(meta, null, 2) + "\n";
165
+ }
166
+ function sha256(buf) {
167
+ return createHash("sha256").update(buf).digest("hex");
126
168
  }
127
169
  //# sourceMappingURL=file.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"file.js","sourceRoot":"","sources":["../../src/stores/file.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"file.js","sourceRoot":"","sources":["../../src/stores/file.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"memory.d.ts","sourceRoot":"","sources":["../../src/stores/memory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,YAAY,EAIZ,WAAW,EACZ,MAAM,aAAa,CAAC;AAErB;;;;GAIG;AACH,MAAM,MAAM,WAAW,GAAG,WAAW,GAAG;IACtC,mEAAmE;IACnE,IAAI,IAAI,MAAM,CAAC;IACf,wEAAwE;IACxE,QAAQ,IAAI;QACV,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;QAC/B,OAAO,EAAE;YAAE,EAAE,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,YAAY,CAAC;YAAC,OAAO,EAAE,YAAY,CAAC;YAAC,IAAI,CAAC,EAAE,MAAM,CAAA;SAAE,EAAE,CAAC;KACvF,CAAC;IACF,0EAA0E;IAC1E,OAAO,CAAC,QAAQ,EAAE;QAChB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,OAAO,EAAE;YACP,EAAE,EAAE,MAAM,CAAC;YACX,MAAM,EAAE,YAAY,GAAG,MAAM,EAAE,CAAC;YAChC,OAAO,EAAE,YAAY,CAAC;YACtB,IAAI,CAAC,EAAE,MAAM,CAAC;SACf,EAAE,CAAC;KACL,GAAG,IAAI,CAAC;IACT,yFAAyF;IACzF,OAAO,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;CACzC,CAAC;AAEF,wBAAgB,iBAAiB,IAAI,WAAW,CAqG/C"}
1
+ {"version":3,"file":"memory.d.ts","sourceRoot":"","sources":["../../src/stores/memory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,YAAY,EAIZ,WAAW,EACZ,MAAM,aAAa,CAAC;AAErB;;;;GAIG;AACH,MAAM,MAAM,WAAW,GAAG,WAAW,GAAG;IACtC,mEAAmE;IACnE,IAAI,IAAI,MAAM,CAAC;IACf,wEAAwE;IACxE,QAAQ,IAAI;QACV,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;QAC/B,OAAO,EAAE;YAAE,EAAE,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,YAAY,CAAC;YAAC,OAAO,EAAE,YAAY,CAAC;YAAC,IAAI,CAAC,EAAE,MAAM,CAAA;SAAE,EAAE,CAAC;KACvF,CAAC;IACF,0EAA0E;IAC1E,OAAO,CAAC,QAAQ,EAAE;QAChB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,OAAO,EAAE;YACP,EAAE,EAAE,MAAM,CAAC;YACX,MAAM,EAAE,YAAY,GAAG,MAAM,EAAE,CAAC;YAChC,OAAO,EAAE,YAAY,CAAC;YACtB,IAAI,CAAC,EAAE,MAAM,CAAC;SACf,EAAE,CAAC;KACL,GAAG,IAAI,CAAC;IACT,yFAAyF;IACzF,OAAO,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;CACzC,CAAC;AAEF,wBAAgB,iBAAiB,IAAI,WAAW,CAgI/C"}
@@ -20,6 +20,10 @@ export function createMemoryStore() {
20
20
  };
21
21
  const query = async (vector, k, filter) => {
22
22
  const q = toFloat32(vector);
23
+ if (dimensions !== undefined && records.size > 0 && q.length !== dimensions) {
24
+ throw new Error(`Query vector dimension mismatch: the store holds ${dimensions}-dimension vectors but the query has ${q.length}. ` +
25
+ "Query with the same embedder (and dimensions) the index was built with, or reindex.");
26
+ }
23
27
  const qNorm = norm(q);
24
28
  if (qNorm === 0)
25
29
  return [];
@@ -40,6 +44,17 @@ export function createMemoryStore() {
40
44
  const del = async (ids) => {
41
45
  for (const id of ids)
42
46
  records.delete(id);
47
+ // An emptied store can accept vectors of a new dimension.
48
+ if (records.size === 0)
49
+ dimensions = undefined;
50
+ };
51
+ const idsBySchema = async (schemaId) => {
52
+ const out = [];
53
+ for (const r of records.values()) {
54
+ if (r.payload.schemaId === schemaId)
55
+ out.push(r.id);
56
+ }
57
+ return out;
43
58
  };
44
59
  const hashesByPrefix = async (prefix) => {
45
60
  const out = {};
@@ -54,6 +69,15 @@ export function createMemoryStore() {
54
69
  query,
55
70
  delete: del,
56
71
  hashesByPrefix,
72
+ idsBySchema,
73
+ describe() {
74
+ return {
75
+ kind: "memory",
76
+ ...(dimensions !== undefined ? { dimensions } : {}),
77
+ ephemeral: true,
78
+ widthHint: "Index into a new memory store instance.",
79
+ };
80
+ },
57
81
  size() {
58
82
  return records.size;
59
83
  },
@@ -70,7 +94,9 @@ export function createMemoryStore() {
70
94
  },
71
95
  restore(snap) {
72
96
  records.clear();
73
- dimensions = snap.dimensions;
97
+ // An empty snapshot has no width (the file store writes it as 0), so
98
+ // the restored store accepts vectors of any width, like an emptied one.
99
+ dimensions = snap.records.length > 0 ? snap.dimensions : undefined;
74
100
  for (const r of snap.records) {
75
101
  records.set(r.id, {
76
102
  id: r.id,
@@ -91,9 +117,11 @@ function toFloat32(v) {
91
117
  return v instanceof Float32Array ? v : Float32Array.from(v);
92
118
  }
93
119
  function dot(a, b) {
120
+ if (a.length !== b.length) {
121
+ throw new Error(`Vector dimension mismatch: ${a.length} vs ${b.length}.`);
122
+ }
94
123
  let s = 0;
95
- const len = Math.min(a.length, b.length);
96
- for (let i = 0; i < len; i++)
124
+ for (let i = 0; i < a.length; i++)
97
125
  s += a[i] * b[i];
98
126
  return s;
99
127
  }
@@ -1 +1 @@
1
- {"version":3,"file":"memory.js","sourceRoot":"","sources":["../../src/stores/memory.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"memory.js","sourceRoot":"","sources":["../../src/stores/memory.ts"],"names":[],"mappings":"AAmCA,MAAM,UAAU,iBAAiB;IAQ/B,MAAM,OAAO,GAAG,IAAI,GAAG,EAAwB,CAAC;IAChD,IAAI,UAA8B,CAAC;IAEnC,MAAM,MAAM,GAAG,KAAK,EAAE,KAAqB,EAAiB,EAAE;QAC5D,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;YACtB,MAAM,GAAG,GAAG,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;YAChC,IAAI,UAAU,KAAK,SAAS;gBAAE,UAAU,GAAG,GAAG,CAAC,MAAM,CAAC;iBACjD,IAAI,UAAU,KAAK,GAAG,CAAC,MAAM,EAAE,CAAC;gBACnC,MAAM,IAAI,KAAK,CACb,uCAAuC,UAAU,SAAS,GAAG,CAAC,MAAM,YAAY,CAAC,CAAC,EAAE,IAAI,CACzF,CAAC;YACJ,CAAC;YACD,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YACnC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;gBAChB,EAAE,EAAE,CAAC,CAAC,EAAE;gBACR,MAAM,EAAE,GAAG;gBACX,OAAO,EAAE,CAAC,CAAC,OAAO;gBAClB,IAAI,EAAE,CAAC,CAAC,IAAI,IAAI,QAAQ,EAAE,IAAI;aAC/B,CAAC,CAAC;QACL,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,KAAK,GAAG,KAAK,EACjB,MAAgB,EAChB,CAAS,EACT,MAAe,EACS,EAAE;QAC1B,MAAM,CAAC,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC;QAC5B,IAAI,UAAU,KAAK,SAAS,IAAI,OAAO,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;YAC5E,MAAM,IAAI,KAAK,CACb,oDAAoD,UAAU,wCAAwC,CAAC,CAAC,MAAM,IAAI;gBAChH,qFAAqF,CACxF,CAAC;QACJ,CAAC;QACD,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QACtB,IAAI,KAAK,KAAK,CAAC;YAAE,OAAO,EAAE,CAAC;QAC3B,MAAM,GAAG,GAA2D,EAAE,CAAC;QACvE,KAAK,MAAM,CAAC,IAAI,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;YACjC,IAAI,MAAM,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,EAAE,MAAM,CAAC;gBAAE,SAAS;YAC1D,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;YAC7B,IAAI,KAAK,KAAK,CAAC;gBAAE,SAAS;YAC1B,MAAM,KAAK,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,GAAG,KAAK,CAAC,CAAC;YACjD,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;QACpD,CAAC;QACD,+DAA+D;QAC/D,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAChB,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CACjF,CAAC;QACF,OAAO,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACtC,CAAC,CAAC;IAEF,MAAM,GAAG,GAAG,KAAK,EAAE,GAAa,EAAiB,EAAE;QACjD,KAAK,MAAM,EAAE,IAAI,GAAG;YAAE,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACzC,0DAA0D;QAC1D,IAAI,OAAO,CAAC,IAAI,KAAK,CAAC;YAAE,UAAU,GAAG,SAAS,CAAC;IACjD,CAAC,CAAC;IAEF,MAAM,WAAW,GAAG,KAAK,EAAE,QAAgB,EAAqB,EAAE;QAChE,MAAM,GAAG,GAAa,EAAE,CAAC;QACzB,KAAK,MAAM,CAAC,IAAI,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;YACjC,IAAI,CAAC,CAAC,OAAO,CAAC,QAAQ,KAAK,QAAQ;gBAAE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QACtD,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC,CAAC;IAEF,MAAM,cAAc,GAAG,KAAK,EAAE,MAAc,EAAmC,EAAE;QAC/E,MAAM,GAAG,GAA2B,EAAE,CAAC;QACvC,KAAK,MAAM,CAAC,IAAI,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;YACjC,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC;gBAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;QAC5D,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC,CAAC;IAEF,OAAO;QACL,MAAM;QACN,KAAK;QACL,MAAM,EAAE,GAAG;QACX,cAAc;QACd,WAAW;QACX,QAAQ;YACN,OAAO;gBACL,IAAI,EAAE,QAAQ;gBACd,GAAG,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACnD,SAAS,EAAE,IAAI;gBACf,SAAS,EAAE,yCAAyC;aACrD,CAAC;QACJ,CAAC;QACD,IAAI;YACF,OAAO,OAAO,CAAC,IAAI,CAAC;QACtB,CAAC;QACD,QAAQ;YACN,OAAO;gBACL,UAAU;gBACV,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;oBAChD,EAAE,EAAE,CAAC,CAAC,EAAE;oBACR,MAAM,EAAE,CAAC,CAAC,MAAM;oBAChB,OAAO,EAAE,CAAC,CAAC,OAAO;oBAClB,IAAI,EAAE,CAAC,CAAC,IAAI;iBACb,CAAC,CAAC;aACJ,CAAC;QACJ,CAAC;QACD,OAAO,CAAC,IAAI;YACV,OAAO,CAAC,KAAK,EAAE,CAAC;YAChB,qEAAqE;YACrE,wEAAwE;YACxE,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC;YACnE,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;gBAC7B,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;oBAChB,EAAE,EAAE,CAAC,CAAC,EAAE;oBACR,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC;oBAC3B,OAAO,EAAE,CAAC,CAAC,OAAO;oBAClB,IAAI,EAAE,CAAC,CAAC,IAAI;iBACb,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QACD,OAAO,CAAC,EAAE,EAAE,IAAI;YACd,MAAM,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAC1B,IAAI,CAAC;gBAAE,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC;QACvB,CAAC;KACF,CAAC;AACJ,CAAC;AAED,SAAS,SAAS,CAAC,CAA0B;IAC3C,OAAO,CAAC,YAAY,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAC9D,CAAC;AAED,SAAS,GAAG,CAAC,CAAe,EAAE,CAAe;IAC3C,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM,EAAE,CAAC;QAC1B,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC,MAAM,OAAO,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;IAC5E,CAAC;IACD,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE;QAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACpD,OAAO,CAAC,CAAC;AACX,CAAC;AAED,SAAS,IAAI,CAAC,CAAe;IAC3B,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE;QAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACpD,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACtB,CAAC;AAED,SAAS,aAAa,CAAC,OAAqB,EAAE,MAAc;IAC1D,IAAI,MAAM,CAAC,QAAQ,KAAK,SAAS,IAAI,OAAO,CAAC,QAAQ,KAAK,MAAM,CAAC,QAAQ;QAAE,OAAO,KAAK,CAAC;IACxF,IAAI,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC;QAAE,OAAO,KAAK,CAAC;IAClG,IAAI,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC1C,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAClC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YAAE,OAAO,KAAK,CAAC;IACzD,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC"}
@@ -1,3 +1,4 @@
1
+ import { AskDbError } from "@askdb/core";
1
2
  import type { Filter, VectorStore } from "../types.js";
2
3
  /**
3
4
  * Minimal `pg`-compatible client shape so this module can stay free of a
@@ -19,21 +20,53 @@ export type CreatePgvectorStoreOptions = {
19
20
  client?: PgClient;
20
21
  /** Table name to read/write. Default `"askdb_rag_chunks"`. */
21
22
  table?: string;
22
- /** Embedding dimensions. Required — pgvector columns are dimension-typed. */
23
- dimensions: number;
23
+ /**
24
+ * Width of the `embedding` column. Needed to create the table (`setupSql()`, or
25
+ * `ensureSchema()` when the table doesn't exist yet); when set, `upsert` also rejects
26
+ * vectors of another width. Without it, `ensureSchema()` adopts an existing table's width.
27
+ * When nothing configures it, `detectEmbeddingDimensions(embedder)` learns it from the embedder.
28
+ */
29
+ dimensions?: number;
24
30
  /** Index strategy hint, surfaced via the documented DDL helper. Default `"hnsw"`. */
25
31
  indexStrategy?: PgvectorIndexStrategy;
32
+ /**
33
+ * Directory to resolve the optional `pg` peer from when it isn't resolvable
34
+ * from `@askdb/rag` itself (e.g. running from an npx cache). Default
35
+ * `process.cwd()`. Only used with `connectionString`.
36
+ */
37
+ resolveFrom?: string;
26
38
  };
27
39
  export type PgvectorStore = VectorStore & {
28
40
  /** Returns the DDL needed to provision the extension, table, and indexes. */
29
41
  setupSql(): string;
30
- /** Executes setupSql() against the configured database. Idempotent — safe to call on every start. */
42
+ /**
43
+ * Executes setupSql() against the configured database. Idempotent — safe to
44
+ * call on every start. Migrates tables created by older versions (adds the
45
+ * `content_hash` column). Throws `PgvectorDimensionMismatchError`, before
46
+ * changing anything, when an existing table's `embedding` column has another
47
+ * width than `dimensions`.
48
+ */
31
49
  ensureSchema(): Promise<void>;
50
+ /** Width of the existing table's `embedding` column, or `undefined` when the table doesn't exist. */
51
+ tableDimensions(): Promise<number | undefined>;
32
52
  /** Close any pool the adapter built internally. No-op when an external client was supplied. */
33
53
  close(): Promise<void>;
34
54
  /** Diagnostic helper for hosts that need to verify persisted row counts. */
35
55
  count(filter?: Filter): Promise<number>;
36
56
  };
57
+ /** `ensureSchema()` found an existing table whose `embedding` column has another width than the store's `dimensions`. */
58
+ export declare class PgvectorDimensionMismatchError extends AskDbError {
59
+ readonly table: string;
60
+ /** Width of the existing table's `embedding` column. */
61
+ readonly tableDimensions: number;
62
+ /** The store's `dimensions`. */
63
+ readonly dimensions: number;
64
+ constructor(table: string,
65
+ /** Width of the existing table's `embedding` column. */
66
+ tableDimensions: number,
67
+ /** The store's `dimensions`. */
68
+ dimensions: number);
69
+ }
37
70
  /**
38
71
  * pgvector adapter. Follows the same `VectorStore` interface as the other
39
72
  * stores; cosine similarity via the `<=>` operator. Index creation is the
@@ -1 +1 @@
1
- {"version":3,"file":"pgvector.d.ts","sourceRoot":"","sources":["../../src/stores/pgvector.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAGV,MAAM,EAGN,WAAW,EACZ,MAAM,aAAa,CAAC;AAErB;;;;GAIG;AACH,MAAM,MAAM,QAAQ,GAAG;IACrB,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,KAAK,OAAO,CAAC;QAAE,IAAI,EAAE,OAAO,EAAE,CAAA;KAAE,CAAC,CAAC;CAC3E,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG,SAAS,GAAG,MAAM,GAAG,MAAM,CAAC;AAEhE,MAAM,MAAM,0BAA0B,GAAG;IACvC;;;OAGG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,MAAM,CAAC,EAAE,QAAQ,CAAC;IAClB,8DAA8D;IAC9D,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,6EAA6E;IAC7E,UAAU,EAAE,MAAM,CAAC;IACnB,qFAAqF;IACrF,aAAa,CAAC,EAAE,qBAAqB,CAAC;CACvC,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG,WAAW,GAAG;IACxC,6EAA6E;IAC7E,QAAQ,IAAI,MAAM,CAAC;IACnB,qGAAqG;IACrG,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9B,+FAA+F;IAC/F,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACvB,4EAA4E;IAC5E,KAAK,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CACzC,CAAC;AAIF;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,0BAA0B,GAClC,aAAa,CAuNf"}
1
+ {"version":3,"file":"pgvector.d.ts","sourceRoot":"","sources":["../../src/stores/pgvector.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,KAAK,EAGV,MAAM,EAGN,WAAW,EACZ,MAAM,aAAa,CAAC;AAErB;;;;GAIG;AACH,MAAM,MAAM,QAAQ,GAAG;IACrB,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,KAAK,OAAO,CAAC;QAAE,IAAI,EAAE,OAAO,EAAE,CAAA;KAAE,CAAC,CAAC;CAC3E,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG,SAAS,GAAG,MAAM,GAAG,MAAM,CAAC;AAEhE,MAAM,MAAM,0BAA0B,GAAG;IACvC;;;OAGG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,MAAM,CAAC,EAAE,QAAQ,CAAC;IAClB,8DAA8D;IAC9D,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;;;OAKG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,qFAAqF;IACrF,aAAa,CAAC,EAAE,qBAAqB,CAAC;IACtC;;;;OAIG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG,WAAW,GAAG;IACxC,6EAA6E;IAC7E,QAAQ,IAAI,MAAM,CAAC;IACnB;;;;;;OAMG;IACH,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9B,qGAAqG;IACrG,eAAe,IAAI,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IAC/C,+FAA+F;IAC/F,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACvB,4EAA4E;IAC5E,KAAK,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CACzC,CAAC;AAEF,yHAAyH;AACzH,qBAAa,8BAA+B,SAAQ,UAAU;IAE1D,QAAQ,CAAC,KAAK,EAAE,MAAM;IACtB,wDAAwD;IACxD,QAAQ,CAAC,eAAe,EAAE,MAAM;IAChC,gCAAgC;IAChC,QAAQ,CAAC,UAAU,EAAE,MAAM;gBAJlB,KAAK,EAAE,MAAM;IACtB,wDAAwD;IAC/C,eAAe,EAAE,MAAM;IAChC,gCAAgC;IACvB,UAAU,EAAE,MAAM;CAQ9B;AAID;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,0BAA0B,GAClC,aAAa,CAmSf"}
@@ -1,3 +1,25 @@
1
+ import { createRequire } from "node:module";
2
+ import { join } from "node:path";
3
+ import { pathToFileURL } from "node:url";
4
+ import { AskDbError } from "@askdb/core";
5
+ /** `ensureSchema()` found an existing table whose `embedding` column has another width than the store's `dimensions`. */
6
+ export class PgvectorDimensionMismatchError extends AskDbError {
7
+ table;
8
+ tableDimensions;
9
+ dimensions;
10
+ constructor(table,
11
+ /** Width of the existing table's `embedding` column. */
12
+ tableDimensions,
13
+ /** The store's `dimensions`. */
14
+ dimensions) {
15
+ super(`pgvector table "${table}" stores ${tableDimensions}-dimension vectors, but this store is set up for ${dimensions}. ` +
16
+ `Drop the table to rebuild it at ${dimensions}, or embed at ${tableDimensions} dimensions.`);
17
+ this.table = table;
18
+ this.tableDimensions = tableDimensions;
19
+ this.dimensions = dimensions;
20
+ this.name = "PgvectorDimensionMismatchError";
21
+ }
22
+ }
1
23
  const DEFAULT_TABLE = "askdb_rag_chunks";
2
24
  /**
3
25
  * pgvector adapter. Follows the same `VectorStore` interface as the other
@@ -9,8 +31,11 @@ const DEFAULT_TABLE = "askdb_rag_chunks";
9
31
  export function createPgvectorStore(options) {
10
32
  const table = options.table ?? DEFAULT_TABLE;
11
33
  const dimensions = options.dimensions;
34
+ // The width writes are checked against and `describe()` reports: the
35
+ // configured one, else the existing table's once `ensureSchema()` reads it.
36
+ let knownWidth = dimensions;
12
37
  const indexStrategy = options.indexStrategy ?? "hnsw";
13
- if (!Number.isInteger(dimensions) || dimensions <= 0) {
38
+ if (dimensions !== undefined && (!Number.isInteger(dimensions) || dimensions <= 0)) {
14
39
  throw new Error(`pgvector store requires positive integer dimensions; got ${dimensions}`);
15
40
  }
16
41
  let internalPool;
@@ -22,9 +47,7 @@ export function createPgvectorStore(options) {
22
47
  throw new Error("createPgvectorStore: pass either `client` or `connectionString`.");
23
48
  }
24
49
  // Lazy-load `pg` so the package stays usable without it for the other stores.
25
- const pgMod =
26
- // eslint-disable-next-line @typescript-eslint/no-require-imports
27
- (await import("pg"));
50
+ const pgMod = await loadPg(options.resolveFrom);
28
51
  const pool = new pgMod.Pool({ connectionString: options.connectionString });
29
52
  internalPool = pool;
30
53
  client = pool;
@@ -41,9 +64,15 @@ export function createPgvectorStore(options) {
41
64
  const schemaIds = records.map((r) => r.payload.schemaId);
42
65
  const refs = records.map((r) => JSON.stringify(r.payload.refs));
43
66
  const sensitives = records.map((r) => r.payload.sensitive);
44
- const vectors = records.map((r) => formatVector(r.vector));
67
+ const vectors = records.map((r) => {
68
+ if (knownWidth !== undefined && r.vector.length !== knownWidth) {
69
+ throw new Error(`pgvector store "${table}" expects ${knownWidth}-dimension vectors; got ${r.vector.length} for id="${r.id}".`);
70
+ }
71
+ return formatVector(r.vector);
72
+ });
73
+ const hashes = records.map((r) => r.hash ?? null);
45
74
  const sql = `
46
- INSERT INTO ${quoteIdent(table)} (id, type, text, schema_id, refs, sensitive, embedding)
75
+ INSERT INTO ${quoteIdent(table)} (id, type, text, schema_id, refs, sensitive, embedding, content_hash)
47
76
  SELECT
48
77
  UNNEST($1::text[]),
49
78
  UNNEST($2::text[]),
@@ -51,16 +80,18 @@ export function createPgvectorStore(options) {
51
80
  UNNEST($4::text[]),
52
81
  UNNEST($5::jsonb[]),
53
82
  UNNEST($6::boolean[]),
54
- UNNEST($7::vector[])
83
+ UNNEST($7::vector[]),
84
+ UNNEST($8::text[])
55
85
  ON CONFLICT (id) DO UPDATE SET
56
86
  type = EXCLUDED.type,
57
87
  text = EXCLUDED.text,
58
88
  schema_id = EXCLUDED.schema_id,
59
89
  refs = EXCLUDED.refs,
60
90
  sensitive = EXCLUDED.sensitive,
61
- embedding = EXCLUDED.embedding
91
+ embedding = EXCLUDED.embedding,
92
+ content_hash = EXCLUDED.content_hash
62
93
  `;
63
- await c.query(sql, [ids, types, texts, schemaIds, refs, sensitives, vectors]);
94
+ await c.query(sql, [ids, types, texts, schemaIds, refs, sensitives, vectors, hashes]);
64
95
  };
65
96
  const query = async (vector, k, filter) => {
66
97
  const c = await getClient();
@@ -136,7 +167,7 @@ export function createPgvectorStore(options) {
136
167
  const raw = row?.count;
137
168
  return typeof raw === "number" ? raw : Number(raw ?? 0);
138
169
  };
139
- const setupSql = () => {
170
+ const renderSetupSql = (width) => {
140
171
  const indexClause = indexStrategy === "hnsw"
141
172
  ? `CREATE INDEX IF NOT EXISTS ${quoteIdent(`${table}_embedding_hnsw`)} ON ${quoteIdent(table)} USING hnsw (embedding vector_cosine_ops);`
142
173
  : indexStrategy === "ivfflat"
@@ -151,8 +182,11 @@ export function createPgvectorStore(options) {
151
182
  ` schema_id text NOT NULL,`,
152
183
  ` refs jsonb NOT NULL DEFAULT '[]'::jsonb,`,
153
184
  ` sensitive boolean NOT NULL DEFAULT false,`,
154
- ` embedding vector(${dimensions}) NOT NULL`,
185
+ ` embedding vector(${width}) NOT NULL,`,
186
+ ` content_hash text`,
155
187
  `);`,
188
+ // Tables created before content hashes were persisted.
189
+ `ALTER TABLE ${quoteIdent(table)} ADD COLUMN IF NOT EXISTS content_hash text;`,
156
190
  `CREATE INDEX IF NOT EXISTS ${quoteIdent(`${table}_schema_id`)} ON ${quoteIdent(table)} (schema_id);`,
157
191
  `CREATE INDEX IF NOT EXISTS ${quoteIdent(`${table}_type`)} ON ${quoteIdent(table)} (type);`,
158
192
  `CREATE INDEX IF NOT EXISTS ${quoteIdent(`${table}_refs`)} ON ${quoteIdent(table)} USING gin (refs);`,
@@ -161,9 +195,37 @@ export function createPgvectorStore(options) {
161
195
  .filter(Boolean)
162
196
  .join("\n");
163
197
  };
198
+ const setupSql = () => {
199
+ if (dimensions === undefined) {
200
+ throw new Error("createPgvectorStore: pass dimensions to render the table DDL " +
201
+ "(detectEmbeddingDimensions(embedder) gives your embedder's width).");
202
+ }
203
+ return renderSetupSql(dimensions);
204
+ };
205
+ const tableDimensions = async () => {
206
+ const c = await getClient();
207
+ // pgvector keeps a `vector(n)` column's width as its type modifier (-1 when untyped).
208
+ const result = await c.query(`SELECT a.atttypmod AS dimensions FROM pg_attribute a ` +
209
+ `WHERE a.attrelid = to_regclass($1) AND a.attname = 'embedding' AND NOT a.attisdropped`, [quoteIdent(table)]);
210
+ const raw = result.rows[0]?.dimensions;
211
+ const width = raw === undefined ? undefined : Number(raw);
212
+ return width !== undefined && Number.isInteger(width) && width > 0 ? width : undefined;
213
+ };
164
214
  const ensureSchema = async () => {
215
+ // `CREATE TABLE IF NOT EXISTS` keeps an existing table as it is, so check its width first:
216
+ // otherwise the mismatch only surfaces as a failed insert halfway through indexing.
217
+ const existing = await tableDimensions();
218
+ if (existing !== undefined && dimensions !== undefined && existing !== dimensions) {
219
+ throw new PgvectorDimensionMismatchError(table, existing, dimensions);
220
+ }
221
+ const width = dimensions ?? existing;
222
+ if (width === undefined) {
223
+ throw new Error(`createPgvectorStore: pass dimensions to create table "${table}" ` +
224
+ "(detectEmbeddingDimensions(embedder) gives your embedder's width).");
225
+ }
165
226
  const c = await getClient();
166
- await c.query(setupSql());
227
+ await c.query(renderSetupSql(width));
228
+ knownWidth = width;
167
229
  };
168
230
  const close = async () => {
169
231
  if (internalPool) {
@@ -172,11 +234,21 @@ export function createPgvectorStore(options) {
172
234
  }
173
235
  };
174
236
  const hashesByPrefix = async (prefix) => {
175
- // pgvector store doesn't persist hashes itself — the indexer relies on
176
- // `schema.lock.json`. Returning empty here means the indexer falls back
177
- // to its file-based hash bookkeeping, which is the intended path.
178
- void prefix;
179
- return {};
237
+ const c = await getClient();
238
+ // `left(...) = prefix` avoids LIKE-escaping `%` / `_` in schema ids.
239
+ const result = await c.query(`SELECT id, content_hash FROM ${quoteIdent(table)}
240
+ WHERE left(id, char_length($1::text)) = $1::text
241
+ AND content_hash IS NOT NULL`, [prefix]);
242
+ const out = {};
243
+ for (const row of result.rows) {
244
+ out[row.id] = row.content_hash;
245
+ }
246
+ return out;
247
+ };
248
+ const idsBySchema = async (schemaId) => {
249
+ const c = await getClient();
250
+ const result = await c.query(`SELECT id FROM ${quoteIdent(table)} WHERE schema_id = $1`, [schemaId]);
251
+ return result.rows.map((row) => row.id);
180
252
  };
181
253
  return {
182
254
  upsert,
@@ -184,11 +256,47 @@ export function createPgvectorStore(options) {
184
256
  delete: del,
185
257
  count,
186
258
  hashesByPrefix,
259
+ idsBySchema,
260
+ describe: () => ({
261
+ kind: "pgvector",
262
+ location: table,
263
+ ...(knownWidth !== undefined ? { dimensions: knownWidth } : {}),
264
+ widthHint: `Drop table "${table}" (or use a new table) and create it with the new \`dimensions\`.`,
265
+ }),
187
266
  setupSql,
188
267
  ensureSchema,
268
+ tableDimensions,
189
269
  close,
190
270
  };
191
271
  }
272
+ /**
273
+ * Resolve the optional `pg` peer: first from `@askdb/rag` itself, then from
274
+ * `resolveFrom` (default `process.cwd()`), the two places `@askdb/postgres`'s
275
+ * `loadPgDriver` looks, without depending on it. Unlike that loader (the
276
+ * `@askdb/introspect/kit` one, which `@askdb/rag` can't reach), it reports any
277
+ * failure as a missing peer, including an installed `pg` that fails to load.
278
+ * Handles the CJS `default` interop so `Pool` is found under plain Node ESM.
279
+ */
280
+ async function loadPg(resolveFrom) {
281
+ const pick = (mod) => {
282
+ const m = mod;
283
+ return typeof m.Pool === "function" ? m : (m.default ?? m);
284
+ };
285
+ try {
286
+ return pick(await import("pg"));
287
+ }
288
+ catch (cause) {
289
+ try {
290
+ const projectRequire = createRequire(join(resolveFrom ?? process.cwd(), "package.json"));
291
+ const resolved = projectRequire.resolve("pg");
292
+ return pick(await import(pathToFileURL(resolved).href));
293
+ }
294
+ catch {
295
+ throw new Error("createPgvectorStore: `connectionString` requires the optional `pg` peer dependency. " +
296
+ "Install it in your project (e.g. `pnpm add pg`) or pass a pre-built `client`.", { cause });
297
+ }
298
+ }
299
+ }
192
300
  function quoteIdent(name) {
193
301
  // Conservative identifier quoting — only allow alnum + underscore.
194
302
  if (!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(name)) {
@@ -1 +1 @@
1
- {"version":3,"file":"pgvector.js","sourceRoot":"","sources":["../../src/stores/pgvector.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pgvector.js","sourceRoot":"","sources":["../../src/stores/pgvector.ts"],"names":[],"mappings":"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"}