"""knowledge_document HNSW index for cosine vector search

Revision ID: 0002_hnsw_index
Revises: 8af66d07fbf5
Create Date: 2026-02-21
"""

from collections.abc import Sequence

from alembic import op

revision: str = "0002_hnsw_index"
down_revision: str | None = "8af66d07fbf5"
branch_labels: str | Sequence[str] | None = None
depends_on: str | Sequence[str] | None = None


def upgrade() -> None:
    op.execute(
        """
        CREATE INDEX IF NOT EXISTS knowledge_document_embedding_hnsw_idx
        ON knowledge_document
        USING hnsw (embedding vector_cosine_ops)
        WITH (m = 16, ef_construction = 64)
        """
    )


def downgrade() -> None:
    op.execute("DROP INDEX IF EXISTS knowledge_document_embedding_hnsw_idx")
