- 在 docker-compose.yml 中新增 PostgreSQL 服务配置,包括健康检查和环境变量设置。 - 添加 PostgreSQL 初始化脚本,确保数据库和用户的创建及权限配置。 - 更新 pyproject.toml,新增 asyncpg 和 graspologic 依赖。 - 重构知识库管理逻辑,使用 LightRagBasedKB 替代原有 KnowledgeBase 类,优化知识库的管理和查询功能。 - 更新前端 API 接口,调整文件处理和数据库创建逻辑,支持新的嵌入模型配置。
72 lines
3.0 KiB
SQL
72 lines
3.0 KiB
SQL
-- 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; |