33 lines
1.2 KiB
SQL
33 lines
1.2 KiB
SQL
-- CreateTable
|
|
CREATE TABLE "NoteEmbeddingChunk" (
|
|
"id" TEXT NOT NULL,
|
|
"noteId" TEXT NOT NULL,
|
|
"fragmentId" TEXT NOT NULL,
|
|
"chunkIndex" INTEGER NOT NULL,
|
|
"content" TEXT NOT NULL,
|
|
"charCount" INTEGER NOT NULL,
|
|
"embedding" vector(1536),
|
|
"embeddingModel" TEXT DEFAULT 'text-embedding-3-small',
|
|
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"updatedAt" TIMESTAMP(3) NOT NULL,
|
|
|
|
CONSTRAINT "NoteEmbeddingChunk_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateIndex
|
|
CREATE UNIQUE INDEX "NoteEmbeddingChunk_noteId_fragmentId_key" ON "NoteEmbeddingChunk"("noteId", "fragmentId");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "NoteEmbeddingChunk_noteId_idx" ON "NoteEmbeddingChunk"("noteId");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "NoteEmbeddingChunk_fragmentId_idx" ON "NoteEmbeddingChunk"("fragmentId");
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "NoteEmbeddingChunk" ADD CONSTRAINT "NoteEmbeddingChunk_noteId_fkey" FOREIGN KEY ("noteId") REFERENCES "Note"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- CreateIndex: HNSW index for fast cosine similarity search on chunk embeddings
|
|
CREATE INDEX "NoteEmbeddingChunk_embedding_hnsw_idx"
|
|
ON "NoteEmbeddingChunk" USING hnsw ("embedding" vector_cosine_ops)
|
|
WITH (m = 16, ef_construction = 64);
|