使用自己的 PostgreSQL
让 Lore 连接已有 PostgreSQL 实例,并配置 pgvector 与可选中文全文搜索扩展。
当你已经维护数据库服务、需要托管备份,或不想使用安装器管理的 PostgreSQL 容器时,可以使用自己的 PostgreSQL。
使用外部 PostgreSQL 有两条路径:
- 仍然使用 Docker Compose 运行 Lore Web 和 Redis 容器,但把
DATABASE_URL指向你的外部数据库。这条路径在下面的"使用外部 PostgreSQL 运行 Compose Web 容器"中说明。 - 完全不使用 Docker 运行 Lore Web。这需要你用自己的编排工具构建或运行 Lore Web 容器镜像。
DATABASE_URL和SNAPSHOT_DATA_DIR要求不变。
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 | 是 | 迁移会创建表、索引和应用设置 |
初始迁移会运行这个顺序:
如果 pg_jieba 和 zhparser 都不可用,Lore 仍会启动,但中文词法召回会变弱。语义召回仍取决于 /setup 中的 embedding 配置。
创建数据库和角色
owner 风格示例:
更严格的生产配置是:先用能创建扩展的 owner 角色运行首次迁移,然后用只能读写 Lore schema 的受限角色运行 Web 服务器。首次迁移完成前,不要把生产环境指向缺少迁移权限的角色。
安装扩展
最简单路径是使用 Lore PostgreSQL 镜像:
该镜像来自 postgres/Dockerfile:它基于 pgvector/pgvector:pg16,构建 zhparser,构建 pg_jieba,并追加:
如果自己维护 PostgreSQL,需要复现这个要求:
- 为你的 PostgreSQL 大版本安装 pgvector。
- 如果需要高质量中文召回,安装
pg_jieba。 - 把
pg_jieba加入shared_preload_libraries。 - 重启 PostgreSQL。
- 在 Lore 数据库中创建
vector和pg_jieba,或让 Lore 首次迁移创建它们。
如果服务器库没有预加载,单独执行 CREATE EXTENSION 不能完整启用 pg_jieba。
使用外部 PostgreSQL 运行 Compose Web 容器
如果仍然使用仓库 docker-compose.yml 运行 Web 和 Redis 容器,.env 可以这样写:
然后从本地 Compose 文件中移除内置 postgres 服务,或让它存在但不使用。如果 Redis 也由外部维护,替换 REDIS_URL。如果 Redis 在启动时为空或不可达,Lore 会回退到进程内本地缓存;单个 Web 进程可以接受,多实例部署则不理想。
连接 Agent 前验证
在 Web 服务器主机上运行:
然后打开 /setup,完成 embedding 和 View LLM 配置。仅数据库连通还不足以得到有用召回。
如果想让安装器只把本地 Agent 配到这台已有服务器,传入服务器 URL: