Make pgvector extension optional - use BYTEA fallback for embeddings
This commit is contained in:
parent
c665189279
commit
84fa9abe0a
1 changed files with 16 additions and 3 deletions
|
|
@ -34,11 +34,24 @@ CREATE TABLE IF NOT EXISTS knowledge_chunks (
|
|||
chunk_index INTEGER NOT NULL,
|
||||
content TEXT NOT NULL,
|
||||
token_count INTEGER NOT NULL DEFAULT 0,
|
||||
embedding vector(1536),
|
||||
embedding BYTEA,
|
||||
metadata JSONB DEFAULT '{}'::jsonb,
|
||||
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
|
||||
);
|
||||
|
||||
-- Add vector column if pgvector extension is available
|
||||
DO $$
|
||||
BEGIN
|
||||
IF EXISTS (SELECT 1 FROM pg_extension WHERE extname = 'vector') THEN
|
||||
IF NOT EXISTS (SELECT 1 FROM information_schema.columns
|
||||
WHERE table_name = 'knowledge_chunks' AND column_name = 'embedding_vector') THEN
|
||||
EXECUTE 'ALTER TABLE knowledge_chunks ADD COLUMN embedding_vector vector(1536)';
|
||||
END IF;
|
||||
END IF;
|
||||
EXCEPTION WHEN OTHERS THEN
|
||||
RAISE NOTICE 'Could not add vector column: %', SQLERRM;
|
||||
END $$;
|
||||
|
||||
-- Indexes for knowledge_chunks
|
||||
CREATE INDEX IF NOT EXISTS idx_knowledge_chunks_source_id ON knowledge_chunks(source_id);
|
||||
CREATE INDEX IF NOT EXISTS idx_knowledge_chunks_chunk_index ON knowledge_chunks(chunk_index);
|
||||
|
|
@ -52,8 +65,8 @@ CREATE INDEX IF NOT EXISTS idx_knowledge_chunks_content_fts
|
|||
DO $$
|
||||
BEGIN
|
||||
IF EXISTS (SELECT 1 FROM pg_extension WHERE extname = 'vector') THEN
|
||||
EXECUTE 'CREATE INDEX IF NOT EXISTS idx_knowledge_chunks_embedding
|
||||
ON knowledge_chunks USING ivfflat (embedding vector_cosine_ops) WITH (lists = 100)';
|
||||
EXECUTE 'CREATE INDEX IF NOT EXISTS idx_knowledge_chunks_embedding_vector
|
||||
ON knowledge_chunks USING ivfflat (embedding_vector vector_cosine_ops) WITH (lists = 100)';
|
||||
END IF;
|
||||
EXCEPTION WHEN OTHERS THEN
|
||||
RAISE NOTICE 'Could not create vector index: %', SQLERRM;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue