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,
|
chunk_index INTEGER NOT NULL,
|
||||||
content TEXT NOT NULL,
|
content TEXT NOT NULL,
|
||||||
token_count INTEGER NOT NULL DEFAULT 0,
|
token_count INTEGER NOT NULL DEFAULT 0,
|
||||||
embedding vector(1536),
|
embedding BYTEA,
|
||||||
metadata JSONB DEFAULT '{}'::jsonb,
|
metadata JSONB DEFAULT '{}'::jsonb,
|
||||||
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
|
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
|
-- 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_source_id ON knowledge_chunks(source_id);
|
||||||
CREATE INDEX IF NOT EXISTS idx_knowledge_chunks_chunk_index ON knowledge_chunks(chunk_index);
|
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 $$
|
DO $$
|
||||||
BEGIN
|
BEGIN
|
||||||
IF EXISTS (SELECT 1 FROM pg_extension WHERE extname = 'vector') THEN
|
IF EXISTS (SELECT 1 FROM pg_extension WHERE extname = 'vector') THEN
|
||||||
EXECUTE 'CREATE INDEX IF NOT EXISTS idx_knowledge_chunks_embedding
|
EXECUTE 'CREATE INDEX IF NOT EXISTS idx_knowledge_chunks_embedding_vector
|
||||||
ON knowledge_chunks USING ivfflat (embedding vector_cosine_ops) WITH (lists = 100)';
|
ON knowledge_chunks USING ivfflat (embedding_vector vector_cosine_ops) WITH (lists = 100)';
|
||||||
END IF;
|
END IF;
|
||||||
EXCEPTION WHEN OTHERS THEN
|
EXCEPTION WHEN OTHERS THEN
|
||||||
RAISE NOTICE 'Could not create vector index: %', SQLERRM;
|
RAISE NOTICE 'Could not create vector index: %', SQLERRM;
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue