pgmnemo

面向 LLM 代理的 PostgreSQL 溯源向量记忆扩展

概览

扩展包名版本分类许可证语言
pgmnemo0.8.3RAGApache-2.0SQL
ID扩展名BinLibLoadCreateTrustReloc模式
1900pgmnemopgmnemo
相关扩展vector vector pg_search pg_ai_query pg_later

SQL-only extension; requires pgvector.

版本

类型仓库版本PG 大版本包名依赖
EXTPIGSTY0.8.31817161514pgmnemovector
RPMPIGSTY0.8.31817161514pgmnemo_$vpgvector
DEBPIGSTY0.8.31817161514postgresql-$v-pgmnemopgvector
OS / PGPG18PG17PG16PG15PG14
el8.x86_64
el8.aarch64
el9.x86_64
el9.aarch64
el10.x86_64
el10.aarch64
d12.x86_64
d12.aarch64
PIGSTY 0.8.3
PIGSTY 0.8.3
PIGSTY 0.8.3
PIGSTY 0.8.3
PIGSTY 0.8.3
d13.x86_64
PIGSTY 0.8.3
PIGSTY 0.8.3
PIGSTY 0.8.3
PIGSTY 0.8.3
PIGSTY 0.8.3
d13.aarch64
PIGSTY 0.8.3
PIGSTY 0.8.3
PIGSTY 0.8.3
PIGSTY 0.8.3
PIGSTY 0.8.3
u22.x86_64
PIGSTY 0.8.3
PIGSTY 0.8.3
PIGSTY 0.8.3
PIGSTY 0.8.3
PIGSTY 0.8.3
u22.aarch64
PIGSTY 0.8.3
PIGSTY 0.8.3
PIGSTY 0.8.3
PIGSTY 0.8.3
PIGSTY 0.8.3
u24.x86_64
PIGSTY 0.8.3
PIGSTY 0.8.3
PIGSTY 0.8.3
PIGSTY 0.8.3
PIGSTY 0.8.3
u24.aarch64
PIGSTY 0.8.3
PIGSTY 0.8.3
PIGSTY 0.8.3
PIGSTY 0.8.3
PIGSTY 0.8.3
u26.x86_64
u26.aarch64
PIGSTY 0.8.3
PIGSTY 0.8.3
PIGSTY 0.8.3
PIGSTY 0.8.3
PIGSTY 0.8.3

构建

您可以使用 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
pig ext install -y pgmnemo -v 16  # PG 16
pig ext install -y pgmnemo -v 15  # PG 15
pig ext install -y pgmnemo -v 14  # PG 14
dnf install -y pgmnemo_18       # PG 18
dnf install -y pgmnemo_17       # PG 17
dnf install -y pgmnemo_16       # PG 16
dnf install -y pgmnemo_15       # PG 15
dnf install -y pgmnemo_14       # PG 14
apt install -y postgresql-18-pgmnemo   # PG 18
apt install -y postgresql-17-pgmnemo   # PG 17
apt install -y postgresql-16-pgmnemo   # PG 16
apt install -y postgresql-15-pgmnemo   # PG 15
apt install -y postgresql-14-pgmnemo   # PG 14

创建扩展

CREATE EXTENSION pgmnemo CASCADE;  -- 依赖: vector

来源:pgmnemo v0.8.3 READMEUsage Guideextension control fileSQL definition

用法

pgmnemo 在 PostgreSQL 中保存带有来源门控的 agent 经验,并通过向量、BM25 风格文本、图边、JSONB 元数据和关系过滤进行检索。扩展控制文件要求 vector,因此在创建 pgmnemo 前必须先提供 pgvector。本地包元数据面向 PostgreSQL 14-18。

创建并摄入经验

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

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

pgmnemo.ingest() 是推荐的写入路径。它会在提供 embedding 时验证其 1024 维度,在存在来源信息时把行标记为已验证,并应用来源门控。

来源门控

SHOW pgmnemo.gate_strict;

SET pgmnemo.gate_strict = 'warn';
SET pgmnemo.gate_strict = 'enforce';

pgmnemo.gate_strict 接受 enforcewarnoff。在默认强制模式下,如果 p_commit_shap_artifact_hash 同时为 NULL,插入会失败。pgmnemo.include_unverified 是独立设置:它控制未验证行是否可参与 recall,而不是控制是否允许写入。

召回

-- Text-only recall.
SELECT topic, lesson_text, score
FROM pgmnemo.recall_lessons(
  NULL::vector(1024),
  5,
  'developer',
  1,
  'JWT secret rotation'
);

-- Hybrid vector and text recall.
SELECT lesson_id, topic, score, vec_score, bm25_score, rrf_score
FROM pgmnemo.recall_hybrid(
  '<1024-dimensional vector literal>'::vector(1024),
  'JWT rotation key compromise',
  10,
  'developer',
  1
);

recall_lessons() 中的混合路由要求 pgmnemo.disable_hybrid 关闭、query_text 非空,且 embedding 非 NULL。如果需要显式诊断分数,可直接使用 recall_hybrid()

导航与扩展

SELECT *
FROM pgmnemo.navigate_locate(
  NULL::vector(1024),
  'JWT rotation',
  10,
  'developer',
  1,
  '{"topic":"security"}'::jsonb,
  2000
);

SELECT *
FROM pgmnemo.navigate_expand(
  ARRAY[1001, 1002]::bigint[],
  include_edges := true
);

navigate_locate() 会在字符预算内返回排序后的 lesson ID 和短预览。调用方选择值得展开的 ID 后,navigate_expand() 会取回选中的完整经验,并可选地带上图邻居。

边与结果学习

SELECT pgmnemo.add_edge(1001, 1002, 'CAUSED_BY', 0.85, '{"run_id":7320}'::jsonb);

SELECT pgmnemo.reinforce(1001, 'success');
SELECT pgmnemo.reinforce(1002, 'failure');

pgmnemo.add_edge() 是维护经验关系的幂等辅助函数。reinforce() 会根据观察到的结果调整置信度,并影响后续匹配置信度。

维护与 GUC

SELECT * FROM pgmnemo.stats();

SELECT pgmnemo.reembed(
  p_lesson_id  := 1001,
  p_new_vector := '<1024-dimensional vector literal>'::vector(1024)
);

SELECT pgmnemo.recompute_content(
  p_lesson_id       := 1001,
  p_new_lesson_text := 'Rotate JWT secrets within 24 hours after compromise.'
);

常用设置包括 pgmnemo.gate_strictpgmnemo.include_unverifiedpgmnemo.ef_searchpgmnemo.disable_hybridpgmnemo.recency_weightpgmnemo.importance_weightpgmnemo.graph_proximity_weightpgmnemo.temporal_boostpgmnemo.max_query_text_chars


最后修改 2026-06-18: extension data update (63e2bd9)