packages feed

kioku-migrations-0.1.0.0: migrations/0002-kioku-memory-embeddings.sql

-- codd: in-txn

-- Migration: kioku-memory-embeddings
-- Created: 2026-06-24-01-00-00 UTC
-- Adds optional pgvector-backed embedding columns for hybrid recall.
SET search_path TO kiroku, pg_catalog;

DO $$
DECLARE
  vector_available boolean := false;
BEGIN
  BEGIN
    CREATE EXTENSION IF NOT EXISTS vector;
  EXCEPTION
    WHEN OTHERS THEN
      RAISE NOTICE 'pgvector extension is unavailable (%: %); skipping kioku memory embedding columns and ANN index', SQLSTATE, SQLERRM;
  END;

  SELECT EXISTS (
    SELECT 1
    FROM pg_extension
    WHERE extname = 'vector'
  ) INTO vector_available;

  IF vector_available THEN
    EXECUTE 'ALTER TABLE kioku_memories ADD COLUMN IF NOT EXISTS embedding vector(1536)';
    ALTER TABLE kioku_memories ADD COLUMN IF NOT EXISTS embedding_model text;
    ALTER TABLE kioku_memories ADD COLUMN IF NOT EXISTS dimensions integer;
    ALTER TABLE kioku_memories ADD COLUMN IF NOT EXISTS content_hash text;

    EXECUTE 'CREATE INDEX IF NOT EXISTS kioku_memories_embedding_hnsw ON kioku_memories USING hnsw (embedding vector_cosine_ops) WHERE embedding IS NOT NULL';
    CREATE INDEX IF NOT EXISTS kioku_memories_content_hash_idx ON kioku_memories (content_hash);
  END IF;
END $$;