ForcePilot/docker/init-postgres.sql
Wenjie Zhang 30163baed4 feat: !important 讲知识库的后端修改为 LightRAG 添加 PostgreSQL 支持和环境变量配置
- 在 docker-compose.yml 中新增 PostgreSQL 服务配置,包括健康检查和环境变量设置。
- 添加 PostgreSQL 初始化脚本,确保数据库和用户的创建及权限配置。
- 更新 pyproject.toml,新增 asyncpg 和 graspologic 依赖。
- 重构知识库管理逻辑,使用 LightRagBasedKB 替代原有 KnowledgeBase 类,优化知识库的管理和查询功能。
- 更新前端 API 接口,调整文件处理和数据库创建逻辑,支持新的嵌入模型配置。
2025-06-27 01:55:04 +08:00

72 lines
3.0 KiB
SQL
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

-- 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;