Files
OmniRoute/scripts/serpentos_logic/init-pgvector.sql

50 lines
1.8 KiB
PL/PgSQL

-- Init script for PostgreSQL + pgvector (local AlloyDB AI simulation)
-- Run on container start: docker-compose -f docker-compose.chroma.yml up -d postgres-pgvector
-- Enable pgvector extension
CREATE EXTENSION IF NOT EXISTS vector;
-- Create memories table with vector support
CREATE TABLE IF NOT EXISTS memories (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
agent_id VARCHAR(255) NOT NULL DEFAULT 'openclaw-serpent',
content TEXT NOT NULL,
embedding VECTOR(1536),
metadata JSONB DEFAULT '{}',
tags TEXT[] DEFAULT '{}',
source VARCHAR(50) DEFAULT 'alloydb',
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
-- Create indexes for performance
CREATE INDEX IF NOT EXISTS idx_memories_embedding ON memories USING ivfflat (embedding vector_cosine_ops);
CREATE INDEX IF NOT EXISTS idx_memories_tags ON memories USING GIN(tags);
CREATE INDEX IF NOT EXISTS idx_memories_agent ON memories(agent_id);
CREATE INDEX IF NOT EXISTS idx_memories_created ON memories(created_at DESC);
-- Create function for auto-updating updated_at
CREATE OR REPLACE FUNCTION update_updated_at_column()
RETURNS TRIGGER AS $$
BEGIN
NEW.updated_at = CURRENT_TIMESTAMP;
RETURN NEW;
END;
$$ language 'plpgsql';
-- Create trigger
DROP TRIGGER IF EXISTS update_memories_updated_at ON memories;
CREATE TRIGGER update_memories_updated_at
BEFORE UPDATE ON memories
FOR EACH ROW
EXECUTE FUNCTION update_updated_at_column();
-- Insert test data (optional)
-- INSERT INTO memories (content, tags) VALUES
-- ('Hero section uses GSAP fade-up with 1.2s duration', ARRAY['motion', 'design']),
-- ('Switched to Space Grotesk font', ARRAY['typography', 'design']);
-- Verify setup
SELECT 'pgvector initialized successfully' as status;
SELECT COUNT(*) as total_memories FROM memories;