Full-text search is the default (fast, no API calls).
Pass semantic=True explicitly when vector similarity is needed.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
store_conversation now collects all texts (summary + key_memories)
and calls Voyage AI once via get_embeddings_batch() instead of N
sequential calls. Prevents MCP timeout for sessions with many memories.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
%s placeholders in SQL are positional — SELECT score param must come
before WHERE conditions in the params list, not after.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- voyage-3-lite returns 512 dims (not 1024) — migrated column + schema
- register_vector now called once at connection time, not per-query
- Removes per-function register_vector calls that caused type cast conflicts
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Migrated embedding column from double precision[] to VECTOR(1024)
- Now uses native <=> cosine operator for SQL-level vector search
- Added pgvector to requirements
- Fixed collation mismatch on all DBs after pgvector/pgvector:pg18 image swap
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>