資料與儲存 2026 年 6 月 1 日

2026-06-01 — pg_tre 1.1.1 近似正規表示式索引、pg_infer 1.0.0 Transformer 知識 SQL 化

primary=https://www.postgresql.org/about/news/pg_tre-111-released-an-approximate-regex-index-am-for-postgresql-18-3305/ primary=https://www.postgresql.org/about/news/pg_infer-100-released-transformer-model-knowledge-as-sql-relations-3307/

pg_tre 1.1.1:PostgreSQL 18+ 的近似正規表示式索引,三層過濾降至毫秒以下

PostgreSQL.org · 2026-05-22

pg_tre 1.1.1 是首個公開發布版本,為 PostgreSQL 18+ 實作原生的索引存取方法(IndexAmRoutine),支援帶 Levenshtein 編輯距離預算的近似正規表示式(approximate regex)匹配,可在數百萬筆資料中以毫秒以下的時間找到「至多 N 個字元與正規表示式不符」的欄位值。

三層過濾架構

pg_tre 的索引以三層漏斗逐步縮小候選集,最後再回表驗證:

  1. BRIN 式範圍 Bloom filter:粗粒度過濾,排除整個 block 的不匹配區段
  2. 稀疏圖 trigram 倒排索引(sparsemap trigram postings):字元三元組層級過濾
  3. Per-tuple Bloom filter:細粒度過濾,減少回表次數
  4. Heap recheck:以 Ville Laurikari 的 TRE 函式庫執行完整正規表示式驗證

UTF-8 codepoint trigram 原生支援 CJK、emoji 與重音字元,不需額外設定。

使用語法

-- 允許「timeout」或「connection」各有最多 1 個字元誤差的日誌搜尋
SELECT id, body FROM logs
WHERE body %~~ tre_pattern('(timeout){~1}.*(connection){~1}', 1);

-- 建立索引(需 shared_preload_libraries = 'pg_tre')
CREATE INDEX ON logs USING tre (body);

其中 %~~ 是 pg_tre 的近似匹配運算子,{~N} 語法設定子表示式的編輯距離預算。

適用場景與定位

pg_tre 設計為與 pg_trgm、PostgreSQL FTS、pgvector 互補,而非取代。最適合的場景包含:

  • OCR 輸出的錯字容忍搜尋
  • SKU / 料號的拼寫誤差查詢(如 AB-9?[0-9]{4}
  • 混合語義搜尋(pgvector)與模糊詞彙過濾(pg_tre)的混合 RAG pipeline
  • 原始碼的近似重複偵測

DoS 防護方面,pg_tre 提供可設定的 NFA 狀態上限與執行時間上限,防止複雜正規表示式造成資料庫卡死。索引支援 WAL、crash recovery、串流複製與 REINDEX CONCURRENTLY,行為與標準 PostgreSQL 索引一致。

原始來源:PostgreSQL 官方新聞


pg_infer 1.0.0:讓 Transformer 模型內部知識成為可查詢的 SQL 關聯

PostgreSQL.org · 2026-05-22

pg_infer 1.0.0 是 PostgreSQL 18+ 的擴充套件,將 Transformer 模型的 gate activations、feature labels 與 embedding 儲存為 WAL 記錄的 vindex(vectorized index),讓模型內部知識成為查詢計劃器可以掃描、篩選、與一般表格 join 的資料來源。不同於 pgvector 存放使用者自行計算的向量,pg_infer 存放的是模型在推理時「學到了什麼」。

核心 SQL 介面

函式 / 運算子語意範例
describe(entity)回傳模型關於某實體的已知關聯SELECT relation, target, confidence FROM describe('France')
implies(a, b)測試概念 a 是否暗示概念 bSELECT implies('Paris', 'France')
<~>模型語意相似度,可建立索引ORDER BY title <~> 'neural architecture search'
walk(prompt)回傳每層的特徵激活用於 model interpretability

儲存機制與部署模式

模型知識以 vindex 格式儲存在 PostgreSQL 的 8KB pages 中,完整支援備份、串流複製與時間點還原。支援兩種存儲模式:

  • model 模式:整個 vindex 以 WAL 記錄方式存入 PostgreSQL,backup 與複製行為與一般表格相同
  • column 模式:將 vindex 附加到文字欄位,啟用 ORDER BY <~> 的模型語意排序

遠端部署(larql-server)可讓 vindex 執行於閒置的 replica,透過 HTTP/2 或 Unix socket 回應查詢,每台主機共享一份模型副本,並支援 pg_cancel_backend() 在 100ms 內取消推理。

支援模型與使用前提

pg_infer 1.0.0 原生支援 BitNet b1.58(ternary weight transformer,可在 CPU 上低功耗執行),以及常見的 full-precision 模型;使用 OpenBLAS 與 f16 lazy decode 優化 CPU 效能。需 PostgreSQL 18+,vindex 生成需離線先執行 LARQL 工具鏈處理模型權重。

原始來源:PostgreSQL 官方新聞


End of article
0
Would love your thoughts, please comment.x
()
x