From b97c8dd76344fcc14211f72b3a4c5facdc16d191 Mon Sep 17 00:00:00 2001 From: perf3ct Date: Sat, 8 Mar 2025 22:03:30 +0000 Subject: [PATCH] set up DB migrations --- ...m_options.sql => 0229__ai_llm_options.sql} | 0 db/migrations/0230__vector_embeddings.sql | 50 +++++++++++++++++++ 2 files changed, 50 insertions(+) rename db/migrations/{0230__ai_llm_options.sql => 0229__ai_llm_options.sql} (100%) create mode 100644 db/migrations/0230__vector_embeddings.sql diff --git a/db/migrations/0230__ai_llm_options.sql b/db/migrations/0229__ai_llm_options.sql similarity index 100% rename from db/migrations/0230__ai_llm_options.sql rename to db/migrations/0229__ai_llm_options.sql diff --git a/db/migrations/0230__vector_embeddings.sql b/db/migrations/0230__vector_embeddings.sql new file mode 100644 index 000000000..e3e8bc217 --- /dev/null +++ b/db/migrations/0230__vector_embeddings.sql @@ -0,0 +1,50 @@ +-- Add tables for vector embeddings storage and management + +-- Store embeddings for notes +CREATE TABLE IF NOT EXISTS "note_embeddings" ( + "embedId" TEXT NOT NULL PRIMARY KEY, + "noteId" TEXT NOT NULL, + "providerId" TEXT NOT NULL, + "modelId" TEXT NOT NULL, + "dimension" INTEGER NOT NULL, + "embedding" BLOB NOT NULL, + "version" INTEGER NOT NULL DEFAULT 1, + "dateCreated" TEXT NOT NULL, + "utcDateCreated" TEXT NOT NULL, + "dateModified" TEXT NOT NULL, + "utcDateModified" TEXT NOT NULL +); + +CREATE INDEX "IDX_note_embeddings_noteId" ON "note_embeddings" ("noteId"); +CREATE INDEX "IDX_note_embeddings_providerId_modelId" ON "note_embeddings" ("providerId", "modelId"); + +-- Table to track which notes need embedding updates +CREATE TABLE IF NOT EXISTS "embedding_queue" ( + "noteId" TEXT NOT NULL PRIMARY KEY, + "operation" TEXT NOT NULL, -- CREATE, UPDATE, DELETE + "dateQueued" TEXT NOT NULL, + "utcDateQueued" TEXT NOT NULL, + "priority" INTEGER NOT NULL DEFAULT 0, + "attempts" INTEGER NOT NULL DEFAULT 0, + "lastAttempt" TEXT NULL, + "error" TEXT NULL +); + +-- Table to store embedding provider configurations +CREATE TABLE IF NOT EXISTS "embedding_providers" ( + "providerId" TEXT NOT NULL PRIMARY KEY, + "name" TEXT NOT NULL, + "isEnabled" INTEGER NOT NULL DEFAULT 0, + "priority" INTEGER NOT NULL DEFAULT 0, + "config" TEXT NOT NULL, -- JSON config object + "dateCreated" TEXT NOT NULL, + "utcDateCreated" TEXT NOT NULL, + "dateModified" TEXT NOT NULL, + "utcDateModified" TEXT NOT NULL +); + +-- Add default embedding provider options +INSERT INTO options (name, value, isSynced) VALUES ('embeddingAutoUpdateEnabled', 'true', 1); +INSERT INTO options (name, value, isSynced) VALUES ('embeddingUpdateInterval', '5000', 1); -- 5 seconds +INSERT INTO options (name, value, isSynced) VALUES ('embeddingBatchSize', '10', 1); +INSERT INTO options (name, value, isSynced) VALUES ('embeddingDefaultDimension', '1536', 1); \ No newline at end of file