pgmnemo

PostgreSQL 单计划多模态智能体记忆扩展

概览

扩展包名版本分类许可证语言
pgmnemo0.15.0RAGApache-2.0SQL
ID扩展名BinLibLoadCreateTrustReloc模式
1950pgmnemopgmnemo
相关扩展vector pgcontext vector vectorize pgml pg4ml pg_summarize provsql pg_rrf pg_search

SQL-only extension requiring pgvector 0.7.0 or newer; upstream 0.15.0 and PIGSTY packages support PostgreSQL 17 and 18.

版本

类型仓库版本PG 大版本包名依赖
EXTPIGSTY0.15.01817161514pgmnemovector
RPMPIGSTY0.15.01817161514pgmnemo_$vpgvector_$v
DEBPIGSTY0.15.01817161514postgresql-$v-pgmnemopostgresql-$v-pgvector
OS / PGPG18PG17PG16PG15PG14
el8.x86_64
el8.aarch64
el9.x86_64
el9.aarch64
el10.x86_64
el10.aarch64
d12.x86_64
d12.aarch64
d13.x86_64
d13.aarch64
PIGSTY 0.15.0
PIGSTY 0.15.0
PIGSTY 0.12.1
PIGSTY 0.12.1
PIGSTY 0.12.1
u22.x86_64
PIGSTY 0.15.0
PIGSTY 0.15.0
PIGSTY 0.12.1
PIGSTY 0.12.1
PIGSTY 0.12.1
u22.aarch64
PIGSTY 0.15.0
PIGSTY 0.15.0
PIGSTY 0.12.1
PIGSTY 0.12.1
PIGSTY 0.12.1
u24.x86_64
PIGSTY 0.15.0
PIGSTY 0.15.0
PIGSTY 0.12.1
PIGSTY 0.12.1
PIGSTY 0.12.1
u24.aarch64
PIGSTY 0.15.0
PIGSTY 0.15.0
PIGSTY 0.12.1
PIGSTY 0.12.1
PIGSTY 0.12.1
u26.x86_64
u26.aarch64

构建

您可以使用 pig build 命令构建 pgmnemo 扩展的 RPM / DEB 包:

pig build pkg pgmnemo         # 构建 RPM / DEB 包

安装

您可以直接安装 pgmnemo 扩展包的预置二进制包,首先确保 PGDGPIGSTY 仓库已经添加并启用:

pig repo add pgsql -u          # 添加仓库并更新缓存

使用 pig 或者是 apt/yum/dnf 安装扩展:

pig install pgmnemo;          # 当前活跃 PG 版本安装
pig ext install -y pgmnemo -v 18  # PG 18
pig ext install -y pgmnemo -v 17  # PG 17
dnf install -y pgmnemo_18       # PG 18
dnf install -y pgmnemo_17       # PG 17
apt install -y postgresql-18-pgmnemo   # PG 18
apt install -y postgresql-17-pgmnemo   # PG 17

创建扩展

CREATE EXTENSION pgmnemo CASCADE;  -- 依赖: vector

用法

来源:

pgmnemo 将代理内存存储在 PostgreSQL 中,并通过向量、BM25 样式的文本、图、元数据、时间序列、来源和置信度结果信号检索。它安装到 pgmnemo 模式中,需要 vector 扩展,并且当前 SQL API 需要 1024 维嵌入。

v0.14.2 保留 0.13 的贝叶斯置信度与结果使用反馈能力,并增加确定性内容分类、默认 dry-run 的 corpus 重分类、可逆的近重复合并,以及 hybrid HNSW recall 的 planner 修复。

安装

CREATE EXTENSION IF NOT EXISTS vector;
CREATE EXTENSION IF NOT EXISTS pgmnemo CASCADE;

SELECT pgmnemo.version();
SELECT * FROM pgmnemo.stats();

v0.14.2 控制文件在所需 vector 扩展可用时将 pgmnemo 标记为受信任且非超级用户可安装。

载入一课

SELECT pgmnemo.ingest(
  p_role        := 'developer',
  p_project_id  := 1,
  p_topic       := 'security',
  p_lesson_text := 'Rotate signing keys after a compromise.',
  p_importance  := 4,
  p_embedding   := NULL,
  p_commit_sha  := 'abc1234',
  p_metadata    := '{"source":"incident-runbook"}'::jsonb
);

当 pgmnemo.gate_strict 强制执行时,需要 commit_sha 或 artifact_hash 来源。warn 允许带有审计警告的未验证写入;off 禁用此门。

带置信度过滤器的召回

混合召回结合嵌入和文本信号:

SELECT lesson_id, topic, score, match_confidence
FROM pgmnemo.recall_hybrid(
  '<1024 维向量字面量>'::vector(1024),
  'JWT 旋转密钥泄露',
  10,
  'developer',
  1,
  0.4,
  0.4,
  60,
  'dag-2026-abc',
  ARRAY['note', 'fact'],
  0.40
);

最后的 p_min_score 参数在应用 LIMIT 之前移除匹配置信度低于阈值的候选者。NULL 保留 v0.13.0 之前的默认行为。发行说明建议将 0.40 作为起点,而不是通用值;根据嵌入模型和反馈质量进行校准。

此相同的 p_min_score 概念在 recall_fast、recall_lessons 和聚合召回入口点中可用。recall_lessons 在同时提供文本和嵌入且 pgmnemo.disable_hybrid 关闭时路由到混合召回。

记录结果

SELECT pgmnemo.reinforce(1001, 'success', true);
SELECT pgmnemo.reinforce(
  ARRAY[1001, 1002]::bigint[],
  'failure',
  false
);

第三个 p_used 参数记录召回的记忆是否实际被使用。true 或 NULL 增加 use_count;false 记录结果而不计入使用次数。请明确指定以使分析能够区分忽略的建议和已使用的建议。

在默认后验模式下,匹配置信度为:

(success_count + alpha)
/ (success_count + failure_count + alpha + beta)

默认 Beta 先验参数为 alpha 1 和 beta 1。当需要其他先验时,在 0.01 到 100 之间设置 pgmnemo.confidence_prior_alpha 和 pgmnemo.confidence_prior_beta。

类型化记忆和导航

重要的写入辅助函数包括 remember_fact、remember_event、remember_relation、add_edge、reembed 和 recompute_content。remember_fact 覆盖实体/属性对的活跃事实;事件保持追加导向;关系也填充图表面。

使用 navigate_locate 或 navigate_locate_dispatch 选择字符预算内的候选 ID,然后使用 navigate_expand_typed 获取内容和邻近的图边。

配置索引

  • pgmnemo.confidence_mode:默认为后验概率;additive 保留了遗留计算。
  • pgmnemo.confidence_prior_alpha 和 pgmnemo.confidence_prior_beta:贝叶斯先验参数。
  • pgmnemo.confidence_boost_weight:置信度对排名的贡献;默认值为 0,因此除非启用否则置信度不会影响排名。
  • pgmnemo.gate_strict 和 pgmnemo.include_unverified:来源验证和检索。
  • pgmnemo.disable_hybrid 和 pgmnemo.ef_search:召回策略和 HNSW 搜索宽度。
  • pgmnemo.track_recall_recency:是否更新 recall_last_recalled_at 和 recall_count。
  • pgmnemo.max_query_text_chars、pgmnemo.tenant_id 和 pgmnemo.test_project_floor:文本、租户控制以及可选测试项目控制。

较旧的置信度差值设置在后验模式下已弃用并被忽略。

注意事项

0.14 增加了 corpus 维护操作,默认均为只读:

SELECT * FROM pgmnemo.reclassify_corpus();
SELECT * FROM pgmnemo.consolidate(
  p_similarity := 0.92,
  p_dry_run := true,
  p_role := NULL,
  p_limit := 100
);
SELECT * FROM pgmnemo.undo_consolidate(
  p_canonical_id := 42,
  p_dry_run := true
);

只有在事务中检查结果后,才应设置 p_dry_run := false。0.14.2 的重分类只处理空值或分类器自有类型,并保留 event、relation 等 curator 自有类型。合并会把非规范 lesson 标为 superseded、写入 edge 并累积 evidence count;undo_consolidate 利用这些 edge 恢复指定 cluster。

  • 召回可以写入最近性元数据。禁用 pgmnemo.track_recall_recency 以进行只读分析。
  • 置信度模型仅在其强化反馈评估后才可靠。避免将后验值视为经过校准的概率。
  • HNSW、文本、图和元数据索引增加了写入和维护成本。
  • 默认置信度增强权重为 0,这意味着 p_min_score 可以过滤结果而置信度对排名没有任何贡献。
  • 分类只是确定性的关键词与正则表达式 heuristic,不是语义审查。应用 corpus 变更前,必须检查 dry-run distribution 与建议的重复 cluster。

最后修改:2026-07-30: extension update 2026-07-30 (7373242)