
- Complete Mem0 OSS integration with hybrid datastore - PostgreSQL + pgvector for vector storage - Neo4j 5.18 for graph relationships - Google Gemini embeddings integration - Comprehensive monitoring with correlation IDs - Real-time statistics and performance tracking - Production-grade observability features - Clean repository with no exposed secrets
66 lines
No EOL
2.1 KiB
SQL
66 lines
No EOL
2.1 KiB
SQL
-- Initialize PostgreSQL database for Mem0 with pgvector extension
|
|
|
|
-- Create the pgvector extension for vector operations
|
|
CREATE EXTENSION IF NOT EXISTS vector;
|
|
|
|
-- Create user if not exists (in case it's needed)
|
|
DO
|
|
$do$
|
|
BEGIN
|
|
IF NOT EXISTS (
|
|
SELECT FROM pg_catalog.pg_roles
|
|
WHERE rolname = 'mem0_user') THEN
|
|
|
|
CREATE ROLE mem0_user LOGIN PASSWORD 'mem0_password';
|
|
END IF;
|
|
END
|
|
$do$;
|
|
|
|
-- Grant necessary permissions
|
|
GRANT ALL PRIVILEGES ON DATABASE mem0_db TO mem0_user;
|
|
GRANT ALL ON SCHEMA public TO mem0_user;
|
|
|
|
-- Create table for vector embeddings (if needed by Mem0's pgvector implementation)
|
|
CREATE TABLE IF NOT EXISTS embeddings (
|
|
id SERIAL PRIMARY KEY,
|
|
user_id VARCHAR(255),
|
|
content TEXT,
|
|
embedding VECTOR(1536), -- OpenAI embedding dimension
|
|
metadata JSONB,
|
|
created_at TIMESTAMP DEFAULT NOW()
|
|
);
|
|
|
|
-- Create index for efficient vector similarity search
|
|
CREATE INDEX IF NOT EXISTS embeddings_embedding_idx ON embeddings
|
|
USING ivfflat (embedding vector_cosine_ops) WITH (lists = 100);
|
|
|
|
-- Create index for user_id lookups
|
|
CREATE INDEX IF NOT EXISTS embeddings_user_id_idx ON embeddings (user_id);
|
|
|
|
-- Create index for metadata queries
|
|
CREATE INDEX IF NOT EXISTS embeddings_metadata_idx ON embeddings USING GIN (metadata);
|
|
|
|
-- Grant permissions on the table
|
|
GRANT ALL PRIVILEGES ON TABLE embeddings TO mem0_user;
|
|
GRANT USAGE, SELECT ON SEQUENCE embeddings_id_seq TO mem0_user;
|
|
|
|
-- Create table for memory history tracking
|
|
CREATE TABLE IF NOT EXISTS memory_history (
|
|
id SERIAL PRIMARY KEY,
|
|
memory_id VARCHAR(255),
|
|
user_id VARCHAR(255),
|
|
action VARCHAR(50),
|
|
previous_value TEXT,
|
|
new_value TEXT,
|
|
metadata JSONB,
|
|
created_at TIMESTAMP DEFAULT NOW()
|
|
);
|
|
|
|
-- Create indexes for memory history
|
|
CREATE INDEX IF NOT EXISTS memory_history_memory_id_idx ON memory_history (memory_id);
|
|
CREATE INDEX IF NOT EXISTS memory_history_user_id_idx ON memory_history (user_id);
|
|
CREATE INDEX IF NOT EXISTS memory_history_created_at_idx ON memory_history (created_at);
|
|
|
|
-- Grant permissions
|
|
GRANT ALL PRIVILEGES ON TABLE memory_history TO mem0_user;
|
|
GRANT USAGE, SELECT ON SEQUENCE memory_history_id_seq TO mem0_user; |