文档导航
文档/安装/使用自己的 PostgreSQL

使用自己的 PostgreSQL

让 Lore 连接已有 PostgreSQL 实例,并配置 pgvector 与可选中文全文搜索扩展。

当你已经维护数据库服务、需要托管备份,或不想使用安装器管理的 PostgreSQL 容器时,可以使用自己的 PostgreSQL。

使用外部 PostgreSQL 有两条路径:

  • 仍然使用 Docker Compose 运行 Lore Web 和 Redis 容器,但把 DATABASE_URL 指向你的外部数据库。这条路径在下面的"使用外部 PostgreSQL 运行 Compose Web 容器"中说明。
  • 完全不使用 Docker 运行 Lore Web。这需要你用自己的编排工具构建或运行 Lore Web 容器镜像。DATABASE_URLSNAPSHOT_DATA_DIR 要求不变。

Lore 只需要一个服务器环境变量指向它:

*.txt
Plaintext
DATABASE_URL=postgresql://lore:YOUR_PASSWORD@db.example.com:5432/lore

服务器代码接受 postgresql://postgres://,并会规范化 postgresql+...:// URL。非本地主机会默认使用 SSL,除非 URL 通过 sslmode=disable 或等效参数禁用。

必需数据库能力

能力是否必需原因
支持 pgvector 的 PostgreSQL记忆视图会把 embedding vector 存在 vector 列中
CREATE EXTENSION vector初始迁移会创建 pgvector
CREATE EXTENSION pg_jieba推荐中文全文搜索的首选 tokenizer
CREATE EXTENSION zhparser可选回退无法创建 pg_jieba 时使用
普通 schema DDL迁移会创建表、索引和应用设置

初始迁移会运行这个顺序:

*.sql
SQL
CREATE EXTENSION IF NOT EXISTS vector;

-- Then try pg_jieba. If that fails, try zhparser. If both fail,
-- Lore continues with PostgreSQL simple full-text search.
CREATE EXTENSION IF NOT EXISTS pg_jieba;
CREATE EXTENSION IF NOT EXISTS zhparser;

如果 pg_jiebazhparser 都不可用,Lore 仍会启动,但中文词法召回会变弱。语义召回仍取决于 /setup 中的 embedding 配置。

创建数据库和角色

owner 风格示例:

*.sql
SQL
CREATE USER lore WITH PASSWORD 'change-me';
CREATE DATABASE lore OWNER lore;
GRANT ALL PRIVILEGES ON DATABASE lore TO lore;

更严格的生产配置是:先用能创建扩展的 owner 角色运行首次迁移,然后用只能读写 Lore schema 的受限角色运行 Web 服务器。首次迁移完成前,不要把生产环境指向缺少迁移权限的角色。

安装扩展

最简单路径是使用 Lore PostgreSQL 镜像:

*.txt
Plaintext
LORE_POSTGRES_IMAGE=fffattiger/pgvector-zhparser:pg16

该镜像来自 postgres/Dockerfile:它基于 pgvector/pgvector:pg16,构建 zhparser,构建 pg_jieba,并追加:

*.txt
Plaintext
shared_preload_libraries = 'pg_jieba'

如果自己维护 PostgreSQL,需要复现这个要求:

  1. 为你的 PostgreSQL 大版本安装 pgvector。
  2. 如果需要高质量中文召回,安装 pg_jieba
  3. pg_jieba 加入 shared_preload_libraries
  4. 重启 PostgreSQL。
  5. 在 Lore 数据库中创建 vectorpg_jieba,或让 Lore 首次迁移创建它们。

如果服务器库没有预加载,单独执行 CREATE EXTENSION 不能完整启用 pg_jieba

使用外部 PostgreSQL 运行 Compose Web 容器

如果仍然使用仓库 docker-compose.yml 运行 Web 和 Redis 容器,.env 可以这样写:

*.txt
Plaintext
DATABASE_URL=postgresql://lore:YOUR_PASSWORD@db.example.com:5432/lore
API_TOKEN=YOUR_SERVER_TOKEN_IF_USED
WEB_PORT=18901

REDIS_URL=redis://redis:6379/0
REDIS_DATA_DIR=./data/redis
CACHE_KEY_PREFIX=lore
CACHE_LOCAL_MAX_ITEMS=2000

SNAPSHOT_DATA_DIR=./data/snapshots
LORE_FRONTEND_IMAGE=fffattiger/lore:latest

然后从本地 Compose 文件中移除内置 postgres 服务,或让它存在但不使用。如果 Redis 也由外部维护,替换 REDIS_URL。如果 Redis 在启动时为空或不可达,Lore 会回退到进程内本地缓存;单个 Web 进程可以接受,多实例部署则不理想。

连接 Agent 前验证

在 Web 服务器主机上运行:

*.bash
Shell
curl -fsS http://127.0.0.1:18901/api/health

然后打开 /setup,完成 embedding 和 View LLM 配置。仅数据库连通还不足以得到有用召回。

如果想让安装器只把本地 Agent 配到这台已有服务器,传入服务器 URL:

*.bash
Shell
npx @loremem/cli install --base-url http://YOUR_SERVER:18901 --api-token YOUR_TOKEN
快速安装使用安装器通过 Docker 启动 Lore,或把客户端连接到已有的 Lore 服务器。手动配置不使用安装脚本时,手动配置 Lore 服务器和 Agent 集成。首次运行设置打开 /setup,配置模型端点,初始化启动记忆,并重启已连接的运行时。关键设置配置日常运行需要的服务器认证、Embedding、View LLM、Redis 缓存和备份默认值。