Mengubah Dimensi Vektor di PostgreSQL (PGVECTOR)

# Implementasi pada PostgreSQL yang berjalan di Docker
# Cek Dimensi Model Embedding Saat Ini di container backend :

docker-compose exec backend python3 -c "
from embedding import get_embedding
vec = get_embedding('test')
print('Dimensi saat ini:', len(vec))
"
# Cek Dimensi Vektor di Database

docker-compose exec postgres psql -U rag -d ragdb -c "
SELECT id, vector_dims(embedding) as dimensi
FROM document_chunks
LIMIT 5;
"
# Hapus Index yang Ada (jika ada)

DROP INDEX IF EXISTS idx_chunks_embedding;
# Ubah Tipe Kolom embedding
# Ganti N dengan dimensi baru yang diinginkan:

ALTER TABLE document_chunks
ALTER COLUMN embedding TYPE VECTOR(N);

# Contoh

-- Ubah dari 768 ke 1536
ALTER TABLE document_chunks ALTER COLUMN embedding TYPE VECTOR(1536);

-- Ubah dari 768 ke 2560
ALTER TABLE document_chunks ALTER COLUMN embedding TYPE VECTOR(2560);
# Hapus Data Chunk Lama (WAJIB!)

TRUNCATE TABLE document_chunks CASCADE;
-- Buat Index Ulang (Opsional, tapi direkomendasikan)

-- Untuk IVFFlat:

CREATE INDEX idx_chunks_embedding ON document_chunks
USING ivfflat (embedding vector_cosine_ops) WITH (lists = 100);


-- Atau untuk HNSW (lebih akurat, tapi lebih lambat):

CREATE INDEX idx_chunks_embedding ON document_chunks
USING hnsw (embedding vector_cosine_ops);