72 lines
3.0 KiB
MySQL
72 lines
3.0 KiB
MySQL
|
|
-- LightRAG PostgreSQL 初始化脚本
|
|||
|
|
-- 基于官方文档建议: https://github.com/HKUDS/LightRAG
|
|||
|
|
|
|||
|
|
-- 创建必要的扩展
|
|||
|
|
CREATE EXTENSION IF NOT EXISTS vector;
|
|||
|
|
CREATE EXTENSION IF NOT EXISTS age;
|
|||
|
|
|
|||
|
|
-- 加载 AGE 扩展
|
|||
|
|
LOAD 'age';
|
|||
|
|
|
|||
|
|
-- 设置搜索路径
|
|||
|
|
SET search_path = ag_catalog, "$user", public;
|
|||
|
|
|
|||
|
|
-- 创建 LightRAG 图(如果不存在)
|
|||
|
|
-- 注意:这里使用 'lightrag' 作为图名,可以根据需要修改
|
|||
|
|
SELECT create_graph('lightrag');
|
|||
|
|
|
|||
|
|
-- 为 AGE 创建索引以提高性能
|
|||
|
|
-- 替换下面的 'lightrag' 为您的实际图名
|
|||
|
|
|
|||
|
|
-- Entity 表索引
|
|||
|
|
CREATE INDEX CONCURRENTLY IF NOT EXISTS entity_p_idx ON lightrag."Entity" (id);
|
|||
|
|
CREATE INDEX CONCURRENTLY IF NOT EXISTS entity_idx_node_id ON lightrag."Entity" (ag_catalog.agtype_access_operator(properties, '"node_id"'::agtype));
|
|||
|
|
CREATE INDEX CONCURRENTLY IF NOT EXISTS entity_node_id_gin_idx ON lightrag."Entity" using gin(properties);
|
|||
|
|
|
|||
|
|
-- Vertex 表索引
|
|||
|
|
CREATE INDEX CONCURRENTLY IF NOT EXISTS vertex_p_idx ON lightrag."_ag_label_vertex" (id);
|
|||
|
|
CREATE INDEX CONCURRENTLY IF NOT EXISTS vertex_idx_node_id ON lightrag."_ag_label_vertex" (ag_catalog.agtype_access_operator(properties, '"node_id"'::agtype));
|
|||
|
|
|
|||
|
|
-- DIRECTED 关系表索引
|
|||
|
|
CREATE INDEX CONCURRENTLY IF NOT EXISTS directed_p_idx ON lightrag."DIRECTED" (id);
|
|||
|
|
CREATE INDEX CONCURRENTLY IF NOT EXISTS directed_eid_idx ON lightrag."DIRECTED" (end_id);
|
|||
|
|
CREATE INDEX CONCURRENTLY IF NOT EXISTS directed_sid_idx ON lightrag."DIRECTED" (start_id);
|
|||
|
|
CREATE INDEX CONCURRENTLY IF NOT EXISTS directed_seid_idx ON lightrag."DIRECTED" (start_id,end_id);
|
|||
|
|
|
|||
|
|
-- Edge 表索引
|
|||
|
|
CREATE INDEX CONCURRENTLY IF NOT EXISTS edge_p_idx ON lightrag."_ag_label_edge" (id);
|
|||
|
|
CREATE INDEX CONCURRENTLY IF NOT EXISTS edge_sid_idx ON lightrag."_ag_label_edge" (start_id);
|
|||
|
|
CREATE INDEX CONCURRENTLY IF NOT EXISTS edge_eid_idx ON lightrag."_ag_label_edge" (end_id);
|
|||
|
|
CREATE INDEX CONCURRENTLY IF NOT EXISTS edge_seid_idx ON lightrag."_ag_label_edge" (start_id,end_id);
|
|||
|
|
|
|||
|
|
-- 集群表以提高性能
|
|||
|
|
ALTER TABLE lightrag."DIRECTED" CLUSTER ON directed_sid_idx;
|
|||
|
|
|
|||
|
|
-- 创建 LightRAG 需要的基础表(如果使用 PostgreSQL 作为 KV store)
|
|||
|
|
CREATE TABLE IF NOT EXISTS lightrag_kv_store (
|
|||
|
|
key VARCHAR PRIMARY KEY,
|
|||
|
|
value JSONB,
|
|||
|
|
created_at TIMESTAMP DEFAULT NOW(),
|
|||
|
|
updated_at TIMESTAMP DEFAULT NOW()
|
|||
|
|
);
|
|||
|
|
|
|||
|
|
-- 创建索引
|
|||
|
|
CREATE INDEX CONCURRENTLY IF NOT EXISTS idx_lightrag_kv_store_updated_at ON lightrag_kv_store(updated_at);
|
|||
|
|
|
|||
|
|
-- 创建文档状态表
|
|||
|
|
CREATE TABLE IF NOT EXISTS lightrag_doc_status (
|
|||
|
|
doc_id VARCHAR PRIMARY KEY,
|
|||
|
|
status VARCHAR NOT NULL,
|
|||
|
|
metadata JSONB,
|
|||
|
|
created_at TIMESTAMP DEFAULT NOW(),
|
|||
|
|
updated_at TIMESTAMP DEFAULT NOW()
|
|||
|
|
);
|
|||
|
|
|
|||
|
|
-- 授权给 lightrag 用户
|
|||
|
|
GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO lightrag;
|
|||
|
|
GRANT ALL PRIVILEGES ON ALL SEQUENCES IN SCHEMA public TO lightrag;
|
|||
|
|
GRANT ALL PRIVILEGES ON ALL FUNCTIONS IN SCHEMA public TO lightrag;
|
|||
|
|
|
|||
|
|
-- 为 AGE 图授权
|
|||
|
|
GRANT ALL PRIVILEGES ON SCHEMA lightrag TO lightrag;
|
|||
|
|
GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA lightrag TO lightrag;
|