daftari 1.7.1 → 1.9.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 +122 -0
- package/README.md +74 -25
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +85 -2
- package/dist/index.js.map +1 -1
- package/dist/search/bm25.d.ts +1 -17
- package/dist/search/bm25.d.ts.map +1 -1
- package/dist/search/bm25.js +43 -65
- package/dist/search/bm25.js.map +1 -1
- package/dist/search/embedding-provider.d.ts +8 -0
- package/dist/search/embedding-provider.d.ts.map +1 -0
- package/dist/search/embedding-provider.js +26 -0
- package/dist/search/embedding-provider.js.map +1 -0
- package/dist/search/hybrid.d.ts.map +1 -1
- package/dist/search/hybrid.js +106 -34
- package/dist/search/hybrid.js.map +1 -1
- package/dist/search/index-state.d.ts +10 -0
- package/dist/search/index-state.d.ts.map +1 -1
- package/dist/search/index-state.js +58 -3
- package/dist/search/index-state.js.map +1 -1
- package/dist/search/providers/local-minilm.d.ts +7 -0
- package/dist/search/providers/local-minilm.d.ts.map +1 -0
- package/dist/search/providers/local-minilm.js +114 -0
- package/dist/search/providers/local-minilm.js.map +1 -0
- package/dist/search/providers/openai-3-small.d.ts +5 -0
- package/dist/search/providers/openai-3-small.d.ts.map +1 -0
- package/dist/search/providers/openai-3-small.js +174 -0
- package/dist/search/providers/openai-3-small.js.map +1 -0
- package/dist/search/reindex.d.ts +3 -0
- package/dist/search/reindex.d.ts.map +1 -1
- package/dist/search/reindex.js +189 -39
- package/dist/search/reindex.js.map +1 -1
- package/dist/search/self-write.d.ts +4 -0
- package/dist/search/self-write.d.ts.map +1 -0
- package/dist/search/self-write.js +62 -0
- package/dist/search/self-write.js.map +1 -0
- package/dist/search/vector.d.ts +10 -1
- package/dist/search/vector.d.ts.map +1 -1
- package/dist/search/vector.js +102 -59
- package/dist/search/vector.js.map +1 -1
- package/dist/search/watcher.d.ts +18 -0
- package/dist/search/watcher.d.ts.map +1 -0
- package/dist/search/watcher.js +300 -0
- package/dist/search/watcher.js.map +1 -0
- package/dist/storage/index-db.d.ts +17 -4
- package/dist/storage/index-db.d.ts.map +1 -1
- package/dist/storage/index-db.js +329 -28
- package/dist/storage/index-db.js.map +1 -1
- package/dist/tools/search.d.ts.map +1 -1
- package/dist/tools/search.js +11 -3
- package/dist/tools/search.js.map +1 -1
- package/dist/tools/write.d.ts.map +1 -1
- package/dist/tools/write.js +9 -0
- package/dist/tools/write.js.map +1 -1
- package/dist/utils/config.d.ts +5 -0
- package/dist/utils/config.d.ts.map +1 -1
- package/dist/utils/config.js +53 -0
- package/dist/utils/config.js.map +1 -1
- package/package.json +4 -2
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
// openai-3-small — OpenAI `text-embedding-3-small` via the public REST API.
|
|
2
|
+
// 1536 dims. Trades local CPU + cold-start latency for paid network calls;
|
|
3
|
+
// the embeddings cache makes the cost a one-time event per chunk text.
|
|
4
|
+
//
|
|
5
|
+
// Trust model: the vault owner sets OPENAI_API_KEY in the environment of the
|
|
6
|
+
// MCP server process. The key is never read from config files or logged.
|
|
7
|
+
// Missing key is a hard config error (see config loader) so a "paid" provider
|
|
8
|
+
// can't silently fall back to free.
|
|
9
|
+
//
|
|
10
|
+
// Transport: native `fetch` (Node 20+ ships it globally). We deliberately
|
|
11
|
+
// don't depend on the `openai` SDK — a 30-line typed wrapper avoids
|
|
12
|
+
// dependency churn and a giant chain of transitive deps for what's a single
|
|
13
|
+
// HTTP endpoint.
|
|
14
|
+
//
|
|
15
|
+
// Batching: 96 inputs per request. OpenAI's documented max is 2048 but
|
|
16
|
+
// smaller batches keep the retry blast radius small (one batch failing
|
|
17
|
+
// doesn't lose 2000 vectors' worth of work) and let onProgress fire often
|
|
18
|
+
// enough to make a multi-thousand-chunk reindex visibly alive.
|
|
19
|
+
//
|
|
20
|
+
// Retries: exponential backoff on 429 / 5xx, max 3 retries. A definitive
|
|
21
|
+
// failure (4xx other than 429, or a 4th attempt failing) returns Result.err;
|
|
22
|
+
// callers degrade to BM25-only. We never throw from embed().
|
|
23
|
+
import { err, ok } from "../../frontmatter/types.js";
|
|
24
|
+
export const OPENAI_3_SMALL_ID = "openai-3-small";
|
|
25
|
+
export const OPENAI_3_SMALL_DIM = 1536;
|
|
26
|
+
const OPENAI_MODEL = "text-embedding-3-small";
|
|
27
|
+
const OPENAI_URL = "https://api.openai.com/v1/embeddings";
|
|
28
|
+
// Per-request batch size. OpenAI accepts up to 2048; we pick smaller so a
|
|
29
|
+
// transient 5xx is cheap to retry and progress reporting feels responsive.
|
|
30
|
+
const BATCH_SIZE = 96;
|
|
31
|
+
// Retry budget. 3 retries with exponential backoff covers the typical 429 /
|
|
32
|
+
// 5xx blip without making a hard failure feel like an indefinite hang.
|
|
33
|
+
const MAX_RETRIES = 3;
|
|
34
|
+
const BASE_BACKOFF_MS = 500;
|
|
35
|
+
function isRetryableStatus(status) {
|
|
36
|
+
return status === 429 || status >= 500;
|
|
37
|
+
}
|
|
38
|
+
// Sleep with backoff. Exposed as a parameter so tests can stub it without
|
|
39
|
+
// waiting real wall time. The first retry waits BASE_BACKOFF_MS, the second
|
|
40
|
+
// 2x, the third 4x — total worst-case ~3.5s before giving up.
|
|
41
|
+
async function delay(ms) {
|
|
42
|
+
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
43
|
+
}
|
|
44
|
+
// Normalise a vector to unit length in place. OpenAI's text-embedding-3-small
|
|
45
|
+
// returns L2-normalized vectors by default, so this is a defense-in-depth
|
|
46
|
+
// no-op for the happy path. We still do it because cosine similarity is
|
|
47
|
+
// stable iff inputs are normalized, and "the API silently returns un-
|
|
48
|
+
// normalized vectors" is exactly the class of upstream change we'd rather
|
|
49
|
+
// not be caught by.
|
|
50
|
+
function l2Normalize(vec) {
|
|
51
|
+
let norm = 0;
|
|
52
|
+
for (let i = 0; i < vec.length; i++) {
|
|
53
|
+
const x = vec[i];
|
|
54
|
+
norm += x * x;
|
|
55
|
+
}
|
|
56
|
+
if (norm === 0)
|
|
57
|
+
return vec;
|
|
58
|
+
const inv = 1 / Math.sqrt(norm);
|
|
59
|
+
for (let i = 0; i < vec.length; i++) {
|
|
60
|
+
vec[i] = vec[i] * inv;
|
|
61
|
+
}
|
|
62
|
+
return vec;
|
|
63
|
+
}
|
|
64
|
+
// One HTTP call to /v1/embeddings for a single batch. Retries on 429/5xx
|
|
65
|
+
// with exponential backoff; surfaces a definitive failure as Result.err.
|
|
66
|
+
async function embedBatch(apiKey, inputs) {
|
|
67
|
+
let attempt = 0;
|
|
68
|
+
let lastError = "unknown";
|
|
69
|
+
while (attempt <= MAX_RETRIES) {
|
|
70
|
+
let response;
|
|
71
|
+
try {
|
|
72
|
+
response = await fetch(OPENAI_URL, {
|
|
73
|
+
method: "POST",
|
|
74
|
+
headers: {
|
|
75
|
+
"content-type": "application/json",
|
|
76
|
+
authorization: `Bearer ${apiKey}`,
|
|
77
|
+
},
|
|
78
|
+
body: JSON.stringify({ input: inputs, model: OPENAI_MODEL }),
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
catch (e) {
|
|
82
|
+
// Network-level failure (DNS, connection reset). Retry like a 5xx.
|
|
83
|
+
lastError = e instanceof Error ? e.message : String(e);
|
|
84
|
+
if (attempt < MAX_RETRIES) {
|
|
85
|
+
await delay(BASE_BACKOFF_MS * 2 ** attempt);
|
|
86
|
+
attempt += 1;
|
|
87
|
+
continue;
|
|
88
|
+
}
|
|
89
|
+
return err(new Error(`openai embedding request failed: ${lastError}`));
|
|
90
|
+
}
|
|
91
|
+
if (response.ok) {
|
|
92
|
+
let parsed;
|
|
93
|
+
try {
|
|
94
|
+
parsed = (await response.json());
|
|
95
|
+
}
|
|
96
|
+
catch (e) {
|
|
97
|
+
const reason = e instanceof Error ? e.message : String(e);
|
|
98
|
+
return err(new Error(`openai embedding response not JSON: ${reason}`));
|
|
99
|
+
}
|
|
100
|
+
if (!parsed.data || parsed.data.length !== inputs.length) {
|
|
101
|
+
return err(new Error(`openai embedding response had ${parsed.data?.length ?? 0} vectors ` +
|
|
102
|
+
`for ${inputs.length} inputs`));
|
|
103
|
+
}
|
|
104
|
+
const vectors = [];
|
|
105
|
+
for (const item of parsed.data) {
|
|
106
|
+
if (!Array.isArray(item.embedding) || item.embedding.length !== OPENAI_3_SMALL_DIM) {
|
|
107
|
+
return err(new Error(`openai returned vector of dim ${item.embedding?.length ?? 0}, ` +
|
|
108
|
+
`expected ${OPENAI_3_SMALL_DIM}`));
|
|
109
|
+
}
|
|
110
|
+
const vec = new Float32Array(item.embedding);
|
|
111
|
+
vectors.push(l2Normalize(vec));
|
|
112
|
+
}
|
|
113
|
+
return ok(vectors);
|
|
114
|
+
}
|
|
115
|
+
// Read the body for diagnostics; ignore body-read failures because the
|
|
116
|
+
// status code is the load-bearing signal.
|
|
117
|
+
let body = "";
|
|
118
|
+
try {
|
|
119
|
+
body = await response.text();
|
|
120
|
+
}
|
|
121
|
+
catch {
|
|
122
|
+
// ignore
|
|
123
|
+
}
|
|
124
|
+
lastError = `${response.status} ${response.statusText} ${body}`.trim();
|
|
125
|
+
if (!isRetryableStatus(response.status) || attempt >= MAX_RETRIES) {
|
|
126
|
+
return err(new Error(`openai embedding request failed: ${lastError}`));
|
|
127
|
+
}
|
|
128
|
+
await delay(BASE_BACKOFF_MS * 2 ** attempt);
|
|
129
|
+
attempt += 1;
|
|
130
|
+
}
|
|
131
|
+
return err(new Error(`openai embedding request failed: ${lastError}`));
|
|
132
|
+
}
|
|
133
|
+
// Factory: takes the API key explicitly so the provider object is pure data
|
|
134
|
+
// once constructed. The config loader validates the env var presence and
|
|
135
|
+
// passes the value here; that way a missing key surfaces at config load,
|
|
136
|
+
// not at first embed.
|
|
137
|
+
export function makeOpenAi3SmallProvider(apiKey) {
|
|
138
|
+
if (!apiKey) {
|
|
139
|
+
throw new Error("makeOpenAi3SmallProvider: empty apiKey");
|
|
140
|
+
}
|
|
141
|
+
return {
|
|
142
|
+
id: OPENAI_3_SMALL_ID,
|
|
143
|
+
dim: OPENAI_3_SMALL_DIM,
|
|
144
|
+
// Stateless HTTP — no warm-up cost. Returning ok keeps the warm path
|
|
145
|
+
// uniform across providers so the server's startup wiring doesn't need
|
|
146
|
+
// to special-case the provider.
|
|
147
|
+
async warm() {
|
|
148
|
+
return ok(undefined);
|
|
149
|
+
},
|
|
150
|
+
async embed(texts, onProgress) {
|
|
151
|
+
if (texts.length === 0)
|
|
152
|
+
return ok([]);
|
|
153
|
+
const vectors = [];
|
|
154
|
+
for (let start = 0; start < texts.length; start += BATCH_SIZE) {
|
|
155
|
+
const batch = texts.slice(start, start + BATCH_SIZE);
|
|
156
|
+
const batchResult = await embedBatch(apiKey, batch);
|
|
157
|
+
if (!batchResult.ok)
|
|
158
|
+
return batchResult;
|
|
159
|
+
for (const v of batchResult.value)
|
|
160
|
+
vectors.push(v);
|
|
161
|
+
if (onProgress) {
|
|
162
|
+
try {
|
|
163
|
+
onProgress(vectors.length, texts.length);
|
|
164
|
+
}
|
|
165
|
+
catch {
|
|
166
|
+
// best-effort: a broken reporter must not stop the embed.
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
return ok(vectors);
|
|
171
|
+
},
|
|
172
|
+
};
|
|
173
|
+
}
|
|
174
|
+
//# sourceMappingURL=openai-3-small.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"openai-3-small.js","sourceRoot":"","sources":["../../../src/search/providers/openai-3-small.ts"],"names":[],"mappings":"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"}
|
package/dist/search/reindex.d.ts
CHANGED
|
@@ -6,6 +6,9 @@ export interface ReindexResult {
|
|
|
6
6
|
vectorEnabled: boolean;
|
|
7
7
|
skipped: string[];
|
|
8
8
|
indexedAt: string;
|
|
9
|
+
embeddedCount: number;
|
|
10
|
+
cacheHits: number;
|
|
11
|
+
orphansRemoved: number;
|
|
9
12
|
}
|
|
10
13
|
export interface ReindexOptions {
|
|
11
14
|
onProgress?: (done: number, total: number) => void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reindex.d.ts","sourceRoot":"","sources":["../../src/search/reindex.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"reindex.d.ts","sourceRoot":"","sources":["../../src/search/reindex.ts"],"names":[],"mappings":"AAqBA,OAAO,EAAW,KAAK,MAAM,EAAE,MAAM,yBAAyB,CAAC;AAmH/D,wBAAsB,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CActE;AAED,MAAM,WAAW,aAAa;IAC5B,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,OAAO,CAAC;IACvB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAIlB,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,cAAc;IAM7B,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CACpD;AA+FD,wBAAsB,YAAY,CAChC,SAAS,EAAE,MAAM,EACjB,IAAI,GAAE,cAAmB,GACxB,OAAO,CAAC,MAAM,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC,CA8GvC;AAED,MAAM,WAAW,mBAAmB;IAClC,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,OAAO,CAAC;CACxB;AASD,wBAAsB,aAAa,CACjC,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,MAAM,CAAC,mBAAmB,EAAE,KAAK,CAAC,CAAC,CAyG7C"}
|
package/dist/search/reindex.js
CHANGED
|
@@ -4,17 +4,55 @@
|
|
|
4
4
|
// from scratch — there is no incremental update path to drift out of sync.
|
|
5
5
|
// Called on server start and by the vault_reindex tool / --reindex CLI flag.
|
|
6
6
|
//
|
|
7
|
-
// Embedding is
|
|
8
|
-
//
|
|
9
|
-
//
|
|
10
|
-
// only the
|
|
7
|
+
// Embedding is content-addressed: each chunk's text is hashed (sha256), and
|
|
8
|
+
// the embeddings table is keyed by (content_hash, model). A reindex hashes
|
|
9
|
+
// every chunk, asks the cache which (hash, model) pairs already exist, and
|
|
10
|
+
// only embeds the misses. Edits to one file re-embed that file's changed
|
|
11
|
+
// chunks; renames, moved paragraphs, and identical text in two files all
|
|
12
|
+
// hit the cache and embed zero. Orphaned cache rows (chunks that no longer
|
|
13
|
+
// reference them) are reaped at the end of the pass.
|
|
14
|
+
//
|
|
15
|
+
// If the model is unavailable the documents (and their BM25 tokens) still
|
|
16
|
+
// index; chunks are written with their content_hash but no embedding row is
|
|
17
|
+
// inserted, so the join in vector.ts comes back null and search degrades to
|
|
18
|
+
// lexical-only.
|
|
11
19
|
import { stat } from "node:fs/promises";
|
|
12
20
|
import { parseDocument } from "../frontmatter/parser.js";
|
|
13
21
|
import { err, ok } from "../frontmatter/types.js";
|
|
14
|
-
import { clearIndex, deleteDocument, documentCount, getMeta,
|
|
22
|
+
import { clearEmbeddingsVec, clearIndex, deleteDocument, documentCount, existingEmbeddingHashes, gcOrphanedEmbeddings, getMeta, insertChunkRow, insertDocument, insertEmbedding, insertEmbeddingVec, openIndexDb, setMeta, } from "../storage/index-db.js";
|
|
15
23
|
import { listFiles, readFile, resolveVaultPath } from "../storage/local.js";
|
|
24
|
+
import { sha256Hex } from "../utils/hash.js";
|
|
16
25
|
import { tokenize } from "./bm25.js";
|
|
17
|
-
import { chunkText,
|
|
26
|
+
import { chunkText, embed, getProvider } from "./vector.js";
|
|
27
|
+
// Opens the index DB with the active embedding provider's dim, so the
|
|
28
|
+
// sqlite-vec virtual table is created (or rebuilt) at the right
|
|
29
|
+
// dimensionality. Every reindex / index-document path opens the DB this
|
|
30
|
+
// way; a caller that doesn't care about vectors (a freshness probe,
|
|
31
|
+
// say) can fall back to `openIndexDb(vault)` which uses a default dim.
|
|
32
|
+
function openIndexForActiveProvider(vaultRoot) {
|
|
33
|
+
return openIndexDb(vaultRoot, getProvider().dim);
|
|
34
|
+
}
|
|
35
|
+
// Repopulates the sqlite-vec mirror from the durable `embeddings` cache
|
|
36
|
+
// for the given model. Called at the end of every full reindex so the vec
|
|
37
|
+
// table always reflects the current vault. The previous mirror contents
|
|
38
|
+
// are dropped wholesale — simpler and faster than a diff for the sizes
|
|
39
|
+
// this index reaches in practice.
|
|
40
|
+
function rebuildEmbeddingsVec(db, modelId) {
|
|
41
|
+
const rebuild = db.transaction(() => {
|
|
42
|
+
clearEmbeddingsVec(db);
|
|
43
|
+
const rows = db
|
|
44
|
+
.prepare(`SELECT e.content_hash AS content_hash, e.embedding AS embedding
|
|
45
|
+
FROM embeddings AS e
|
|
46
|
+
WHERE e.model = ?
|
|
47
|
+
AND e.content_hash IN (SELECT content_hash FROM chunks)`)
|
|
48
|
+
.all(modelId);
|
|
49
|
+
const insert = db.prepare("INSERT INTO embeddings_vec(content_hash, model, embedding) VALUES (?, ?, ?)");
|
|
50
|
+
for (const row of rows) {
|
|
51
|
+
insert.run(row.content_hash, modelId, row.embedding);
|
|
52
|
+
}
|
|
53
|
+
});
|
|
54
|
+
rebuild();
|
|
55
|
+
}
|
|
18
56
|
// Manifest key in the meta table: JSON object mapping vault-relative path to
|
|
19
57
|
// mtime in ms. Written at the end of a successful reindex and updated by
|
|
20
58
|
// indexDocument after each incremental write, so a startup freshness check
|
|
@@ -75,7 +113,7 @@ function manifestsMatch(a, b) {
|
|
|
75
113
|
// matches the stored value. Used by `main()` to skip a 20+ minute re-embed
|
|
76
114
|
// pass on every restart of a vault that hasn't changed.
|
|
77
115
|
export async function isIndexFresh(vaultRoot) {
|
|
78
|
-
const dbResult =
|
|
116
|
+
const dbResult = openIndexForActiveProvider(vaultRoot);
|
|
79
117
|
if (!dbResult.ok)
|
|
80
118
|
return false;
|
|
81
119
|
const db = dbResult.value;
|
|
@@ -112,6 +150,8 @@ async function stageOne(vaultRoot, relPath) {
|
|
|
112
150
|
// BM25 indexes title, tags, and body together so a title- or tag-only
|
|
113
151
|
// match still ranks.
|
|
114
152
|
const tokens = tokenize(`${fm.title} ${fm.tags.join(" ")} ${body}`);
|
|
153
|
+
const chunks = chunkText(body);
|
|
154
|
+
const hashes = chunks.map((t) => sha256Hex(t));
|
|
115
155
|
return {
|
|
116
156
|
doc: {
|
|
117
157
|
path: relPath,
|
|
@@ -128,7 +168,8 @@ async function stageOne(vaultRoot, relPath) {
|
|
|
128
168
|
created: fm.created,
|
|
129
169
|
supersededBy: fm.superseded_by,
|
|
130
170
|
},
|
|
131
|
-
chunks
|
|
171
|
+
chunks,
|
|
172
|
+
hashes,
|
|
132
173
|
};
|
|
133
174
|
}
|
|
134
175
|
// Reads and parses every markdown file into the shape the index needs. A file
|
|
@@ -149,21 +190,23 @@ async function stageDocuments(vaultRoot) {
|
|
|
149
190
|
}
|
|
150
191
|
return ok({ staged, skipped });
|
|
151
192
|
}
|
|
152
|
-
|
|
193
|
+
// Inserts the chunk rows in a single transaction. Embeddings are persisted by
|
|
194
|
+
// the caller (with a model identifier) so the chunk write stays oblivious to
|
|
195
|
+
// which model produced the vectors.
|
|
196
|
+
function writeChunkRows(db, staged) {
|
|
153
197
|
let chunkCount = 0;
|
|
154
|
-
let cursor = 0;
|
|
155
198
|
const write = db.transaction(() => {
|
|
156
199
|
clearIndex(db);
|
|
157
|
-
for (const { doc, chunks } of staged) {
|
|
200
|
+
for (const { doc, chunks, hashes } of staged) {
|
|
158
201
|
insertDocument(db, doc);
|
|
159
202
|
chunks.forEach((text, chunkIndex) => {
|
|
160
|
-
|
|
203
|
+
const row = {
|
|
161
204
|
path: doc.path,
|
|
162
205
|
chunkIndex,
|
|
163
206
|
text,
|
|
164
|
-
|
|
165
|
-
}
|
|
166
|
-
|
|
207
|
+
contentHash: hashes[chunkIndex] ?? "",
|
|
208
|
+
};
|
|
209
|
+
insertChunkRow(db, row);
|
|
167
210
|
chunkCount += 1;
|
|
168
211
|
});
|
|
169
212
|
}
|
|
@@ -176,25 +219,90 @@ export async function reindexVault(vaultRoot, opts = {}) {
|
|
|
176
219
|
if (!staging.ok)
|
|
177
220
|
return staging;
|
|
178
221
|
const { staged, skipped } = staging.value;
|
|
179
|
-
//
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
const
|
|
184
|
-
const vectorEnabled = embedResult.ok;
|
|
185
|
-
const embeddings = embedResult.ok
|
|
186
|
-
? embedResult.value
|
|
187
|
-
: allChunkTexts.map(() => null);
|
|
188
|
-
const dbResult = openIndexDb(vaultRoot);
|
|
222
|
+
// Open the index first so we can ask the embeddings cache which (hash,
|
|
223
|
+
// model) pairs already exist before deciding what to embed. Pass the
|
|
224
|
+
// active provider's dim so the sqlite-vec mirror is sized correctly
|
|
225
|
+
// (rebuilt if a previous reindex used a different provider).
|
|
226
|
+
const dbResult = openIndexForActiveProvider(vaultRoot);
|
|
189
227
|
if (!dbResult.ok)
|
|
190
228
|
return dbResult;
|
|
191
229
|
const db = dbResult.value;
|
|
192
230
|
const indexedAt = new Date().toISOString();
|
|
193
231
|
try {
|
|
194
|
-
|
|
232
|
+
// Flatten every chunk's text + hash so we can dedupe and query the cache
|
|
233
|
+
// in one shot. A single hash may appear in multiple files (or repeatedly
|
|
234
|
+
// in one file) — embed it once.
|
|
235
|
+
const allHashes = [];
|
|
236
|
+
const allTexts = [];
|
|
237
|
+
for (const s of staged) {
|
|
238
|
+
for (let i = 0; i < s.chunks.length; i++) {
|
|
239
|
+
const h = s.hashes[i] ?? "";
|
|
240
|
+
const t = s.chunks[i] ?? "";
|
|
241
|
+
allHashes.push(h);
|
|
242
|
+
allTexts.push(t);
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
const provider = getProvider();
|
|
246
|
+
const cached = existingEmbeddingHashes(db, provider.id, allHashes);
|
|
247
|
+
// Build the deduped miss list. Each unique missing hash gets embedded
|
|
248
|
+
// exactly once; identical chunk text in multiple places shares the row.
|
|
249
|
+
const missTextByHash = new Map();
|
|
250
|
+
for (let i = 0; i < allHashes.length; i++) {
|
|
251
|
+
const h = allHashes[i] ?? "";
|
|
252
|
+
if (cached.has(h))
|
|
253
|
+
continue;
|
|
254
|
+
if (missTextByHash.has(h))
|
|
255
|
+
continue;
|
|
256
|
+
missTextByHash.set(h, allTexts[i] ?? "");
|
|
257
|
+
}
|
|
258
|
+
const missHashes = [...missTextByHash.keys()];
|
|
259
|
+
const missTexts = missHashes.map((h) => missTextByHash.get(h) ?? "");
|
|
260
|
+
const totalChunks = allHashes.length;
|
|
261
|
+
const cacheHits = totalChunks - allHashes.filter((h) => !cached.has(h)).length;
|
|
262
|
+
let vectorEnabled = true;
|
|
263
|
+
if (missTexts.length > 0) {
|
|
264
|
+
const embedResult = await embed(missTexts, opts.onProgress);
|
|
265
|
+
if (embedResult.ok) {
|
|
266
|
+
const writeEmbeds = db.transaction(() => {
|
|
267
|
+
for (let i = 0; i < missHashes.length; i++) {
|
|
268
|
+
const h = missHashes[i] ?? "";
|
|
269
|
+
const vec = embedResult.value[i];
|
|
270
|
+
if (!vec)
|
|
271
|
+
continue;
|
|
272
|
+
insertEmbedding(db, h, provider.id, vec, indexedAt, provider.dim);
|
|
273
|
+
}
|
|
274
|
+
});
|
|
275
|
+
writeEmbeds();
|
|
276
|
+
}
|
|
277
|
+
else {
|
|
278
|
+
// Model unavailable. We still want documents + chunk rows so BM25
|
|
279
|
+
// works; vector ranking simply degrades to nothing for this reindex.
|
|
280
|
+
vectorEnabled = false;
|
|
281
|
+
}
|
|
282
|
+
}
|
|
283
|
+
else if (totalChunks === 0) {
|
|
284
|
+
// No chunks at all (empty vault). Treat as vectorEnabled=true by
|
|
285
|
+
// convention — there is nothing to embed but also nothing failed.
|
|
286
|
+
vectorEnabled = true;
|
|
287
|
+
}
|
|
288
|
+
else {
|
|
289
|
+
// Everything was cached. Vector ranking has data already, so the
|
|
290
|
+
// reindex did not need to load the model — still vector-enabled.
|
|
291
|
+
vectorEnabled = true;
|
|
292
|
+
}
|
|
293
|
+
const chunkCount = writeChunkRows(db, staged);
|
|
294
|
+
const orphansRemoved = gcOrphanedEmbeddings(db);
|
|
295
|
+
// Rebuild the sqlite-vec mirror from the durable `embeddings` cache.
|
|
296
|
+
// The cache is per-(model, content_hash) and is the source of truth;
|
|
297
|
+
// the mirror is a SQL-queryable index of it. We rebuild rather than
|
|
298
|
+
// diff because (a) it's small (one row per active-model chunk) and
|
|
299
|
+
// (b) a vec-table rebuild on provider switch lands here with an empty
|
|
300
|
+
// table, so we need a full repopulation anyway.
|
|
301
|
+
rebuildEmbeddingsVec(db, provider.id);
|
|
195
302
|
setMeta(db, "indexed_at", indexedAt);
|
|
196
303
|
setMeta(db, "vector_enabled", String(vectorEnabled));
|
|
197
|
-
setMeta(db, "embedding_dim", String(
|
|
304
|
+
setMeta(db, "embedding_dim", String(provider.dim));
|
|
305
|
+
setMeta(db, "embedding_model", provider.id);
|
|
198
306
|
// Persist a freshness manifest so the next startup can skip this whole
|
|
199
307
|
// pass when nothing on disk has changed.
|
|
200
308
|
const manifest = await buildManifest(vaultRoot);
|
|
@@ -206,6 +314,9 @@ export async function reindexVault(vaultRoot, opts = {}) {
|
|
|
206
314
|
vectorEnabled,
|
|
207
315
|
skipped,
|
|
208
316
|
indexedAt,
|
|
317
|
+
embeddedCount: missHashes.length,
|
|
318
|
+
cacheHits,
|
|
319
|
+
orphansRemoved,
|
|
209
320
|
});
|
|
210
321
|
}
|
|
211
322
|
catch (e) {
|
|
@@ -220,10 +331,11 @@ export async function reindexVault(vaultRoot, opts = {}) {
|
|
|
220
331
|
//
|
|
221
332
|
// If the index has never been built it falls back to a full reindex, so the
|
|
222
333
|
// first write to a fresh vault still produces a complete index rather than a
|
|
223
|
-
// one-document one. Otherwise it re-stages just `relPath`,
|
|
224
|
-
//
|
|
334
|
+
// one-document one. Otherwise it re-stages just `relPath`, hashes its chunks,
|
|
335
|
+
// embeds only those whose (hash, model) pair is not already in the embeddings
|
|
336
|
+
// cache, evicts the document's stale chunk rows, and re-inserts.
|
|
225
337
|
export async function indexDocument(vaultRoot, relPath) {
|
|
226
|
-
const dbCheck =
|
|
338
|
+
const dbCheck = openIndexForActiveProvider(vaultRoot);
|
|
227
339
|
if (!dbCheck.ok)
|
|
228
340
|
return dbCheck;
|
|
229
341
|
const indexEmpty = documentCount(dbCheck.value) === 0;
|
|
@@ -241,28 +353,66 @@ export async function indexDocument(vaultRoot, relPath) {
|
|
|
241
353
|
if (!staged) {
|
|
242
354
|
return err(new Error(`cannot index document: ${relPath}`));
|
|
243
355
|
}
|
|
244
|
-
const { doc, chunks } = staged;
|
|
245
|
-
const
|
|
246
|
-
const vectorEnabled = embedResult.ok;
|
|
247
|
-
const embeddings = embedResult.ok
|
|
248
|
-
? embedResult.value
|
|
249
|
-
: chunks.map(() => null);
|
|
250
|
-
const dbResult = openIndexDb(vaultRoot);
|
|
356
|
+
const { doc, chunks, hashes } = staged;
|
|
357
|
+
const dbResult = openIndexForActiveProvider(vaultRoot);
|
|
251
358
|
if (!dbResult.ok)
|
|
252
359
|
return dbResult;
|
|
253
360
|
const db = dbResult.value;
|
|
361
|
+
const createdAt = new Date().toISOString();
|
|
254
362
|
try {
|
|
363
|
+
const provider = getProvider();
|
|
364
|
+
const cached = existingEmbeddingHashes(db, provider.id, hashes);
|
|
365
|
+
const missTextByHash = new Map();
|
|
366
|
+
for (let i = 0; i < hashes.length; i++) {
|
|
367
|
+
const h = hashes[i] ?? "";
|
|
368
|
+
if (cached.has(h))
|
|
369
|
+
continue;
|
|
370
|
+
if (missTextByHash.has(h))
|
|
371
|
+
continue;
|
|
372
|
+
missTextByHash.set(h, chunks[i] ?? "");
|
|
373
|
+
}
|
|
374
|
+
const missHashes = [...missTextByHash.keys()];
|
|
375
|
+
const missTexts = missHashes.map((h) => missTextByHash.get(h) ?? "");
|
|
376
|
+
let vectorEnabled = true;
|
|
377
|
+
const newlyEmbedded = [];
|
|
378
|
+
if (missTexts.length > 0) {
|
|
379
|
+
const embedResult = await embed(missTexts);
|
|
380
|
+
if (embedResult.ok) {
|
|
381
|
+
const writeEmbeds = db.transaction(() => {
|
|
382
|
+
for (let i = 0; i < missHashes.length; i++) {
|
|
383
|
+
const h = missHashes[i] ?? "";
|
|
384
|
+
const vec = embedResult.value[i];
|
|
385
|
+
if (!vec)
|
|
386
|
+
continue;
|
|
387
|
+
insertEmbedding(db, h, provider.id, vec, createdAt, provider.dim);
|
|
388
|
+
newlyEmbedded.push({ hash: h, vec });
|
|
389
|
+
}
|
|
390
|
+
});
|
|
391
|
+
writeEmbeds();
|
|
392
|
+
}
|
|
393
|
+
else {
|
|
394
|
+
vectorEnabled = false;
|
|
395
|
+
}
|
|
396
|
+
}
|
|
255
397
|
const write = db.transaction(() => {
|
|
256
398
|
deleteDocument(db, doc.path);
|
|
257
399
|
insertDocument(db, doc);
|
|
258
400
|
chunks.forEach((text, chunkIndex) => {
|
|
259
|
-
|
|
401
|
+
insertChunkRow(db, {
|
|
260
402
|
path: doc.path,
|
|
261
403
|
chunkIndex,
|
|
262
404
|
text,
|
|
263
|
-
|
|
405
|
+
contentHash: hashes[chunkIndex] ?? "",
|
|
264
406
|
});
|
|
265
407
|
});
|
|
408
|
+
// Mirror only the newly-embedded vectors into `embeddings_vec`.
|
|
409
|
+
// Hashes that were already cached are already in the vec table from
|
|
410
|
+
// a prior reindex / indexDocument call — re-inserting them would be
|
|
411
|
+
// duplicates. INSERT OR IGNORE isn't supported on vec0 virtual
|
|
412
|
+
// tables, so we keep this list to just the new vectors.
|
|
413
|
+
for (const { hash, vec } of newlyEmbedded) {
|
|
414
|
+
insertEmbeddingVec(db, hash, provider.id, vec);
|
|
415
|
+
}
|
|
266
416
|
});
|
|
267
417
|
write();
|
|
268
418
|
// Keep the freshness manifest in sync with this single write so the next
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reindex.js","sourceRoot":"","sources":["../../src/search/reindex.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"reindex.js","sourceRoot":"","sources":["../../src/search/reindex.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"self-write.d.ts","sourceRoot":"","sources":["../../src/search/self-write.ts"],"names":[],"mappings":"AAwCA,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,GAAE,MAAmB,GAAG,IAAI,CAG7E;AAKD,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,GAAE,MAAmB,GAAG,OAAO,CAWnF;AAID,wBAAgB,mBAAmB,IAAI,IAAI,CAE1C"}
|