Fix sqlite-vec dimension changes for local profiles

This commit is contained in:
“BeeRad”
2026-05-02 10:46:02 +10:00
parent 782ace9a34
commit 9575815d83
4 changed files with 108 additions and 30 deletions
@@ -99,10 +99,25 @@ export class SqliteVecBackend implements VectorBackend {
async healthCheck(): Promise<VectorBackendHealth> {
const sqlite = getSQLiteClient();
const ok = await sqlite.checkVectorExtension();
const expectedDimensions = getEmbeddingProviderInfo().dimensions;
const tableDimensions = sqlite.getVectorTableDimensions();
const mismatchedTables = Object.entries(tableDimensions)
.filter(([, dimensions]) => dimensions !== null && dimensions !== expectedDimensions)
.map(([table, dimensions]) => `${table}=${dimensions}`);
if (mismatchedTables.length > 0) {
return {
ok: false,
backend: 'sqlite-vec',
dimensions: expectedDimensions,
detail: `sqlite-vec table dimensions mismatch (${mismatchedTables.join(', ')}), expected ${expectedDimensions}. Run npm run rebuild:embeddings.`,
};
}
return {
ok,
backend: 'sqlite-vec',
dimensions: getEmbeddingProviderInfo().dimensions,
dimensions: expectedDimensions,
detail: ok ? 'sqlite-vec extension loaded' : 'sqlite-vec extension unavailable',
};
}