| |
| |
|
|
| |
| CREATE EXTENSION IF NOT EXISTS vector; |
|
|
| |
| CREATE TABLE trust_classes ( |
| id SERIAL PRIMARY KEY, |
| label TEXT NOT NULL UNIQUE, |
| description TEXT, |
| max_rank INTEGER DEFAULT 100, |
| created_at TIMESTAMPTZ DEFAULT NOW() |
| ); |
|
|
| |
| CREATE TABLE sources ( |
| id SERIAL PRIMARY KEY, |
| name TEXT NOT NULL, |
| source_type TEXT, |
| tags TEXT[], |
| url TEXT, |
| metadata JSONB, |
| created_at TIMESTAMPTZ DEFAULT NOW() |
| ); |
|
|
| |
| CREATE TABLE memory_items ( |
| id SERIAL PRIMARY KEY, |
| tenant_id TEXT NOT NULL DEFAULT 'public', |
| content TEXT NOT NULL, |
| embedding vector(384), |
| visibility TEXT NOT NULL DEFAULT 'restricted', |
| |
| trust_class_id INTEGER REFERENCES trust_classes(id) ON DELETE SET NULL, |
| source_id INTEGER REFERENCES sources(id) ON DELETE SET NULL, |
| metadata JSONB, |
| created_at TIMESTAMPTZ DEFAULT NOW(), |
| updated_at TIMESTAMPTZ DEFAULT NOW() |
| ); |
|
|
| |
| CREATE TABLE memory_events ( |
| id SERIAL PRIMARY KEY, |
| memory_id INTEGER REFERENCES memory_items(id) ON DELETE CASCADE, |
| event_type TEXT NOT NULL, |
| actor TEXT, |
| details JSONB, |
| created_at TIMESTAMPTZ DEFAULT NOW() |
| ); |
|
|
| |
| CREATE TABLE retrieval_logs ( |
| id SERIAL PRIMARY KEY, |
| tenant_id TEXT NOT NULL, |
| query_text TEXT, |
| query_vector vector(384), |
| filters JSONB, |
| results JSONB, |
| latency_ms INTEGER, |
| created_at TIMESTAMPTZ DEFAULT NOW() |
| ); |
|
|
| |
| CREATE INDEX idx_memory_items_tenant ON memory_items(tenant_id); |
| CREATE INDEX idx_memory_items_visibility ON memory_items(visibility); |
| CREATE INDEX idx_memory_items_trust ON memory_items(trust_class_id); |
| CREATE INDEX idx_memory_items_source ON memory_items(source_id); |
|
|
| |
| CREATE INDEX idx_memory_items_embedding ON memory_items |
| USING hnsw (embedding vector_cosine_ops) |
| WITH (m = 16, ef_construction = 64); |
|
|
| |
| CREATE INDEX idx_memory_items_public ON memory_items(tenant_id, visibility) |
| WHERE visibility = 'public'; |
|
|
| |
| |
| |
|
|