資料與儲存 2026 年 5 月 6 日

2026-05-06 — pg_sorted_heap 0.13.0 GraphRAG API、DuckLake DataFrame 擴充

primary=https://www.postgresql.org/about/news/pg_sorted_heap-0130-released-3289/ primary=https://ducklake.select/2026/05/04/ducklake-dataframe/

pg_sorted_heap 0.13.0:穩定的 GraphRAG API、zone-map 剪枝與 HNSW 向量索引整合

PostgreSQL News · 2026-05-05

pg_sorted_heap 是一個 PostgreSQL 擴充套件,提供保持物理排序的 heap 存取方法(table access method),0.13.0 版本主要穩定了 GraphRAG 查詢 API、強化了生命週期管理,並加入低記憶體的索引建構模式。此版本需要 PostgreSQL 17 或 18

核心技術:zone-map 剪枝

sorted_heap 存取方法要求資料以主鍵(primary key)物理排序儲存,並在每個頁面(page)上維護 zone map——即每頁的最小值/最大值中繼資料。查詢引擎在掃描前先比對 zone map 的值域範圍,跳過不含目標值的整個 heap block,無需讀取頁面內容。

這對時間序列、事件日誌、IoT 遙測等資料的範圍查詢(range predicate)效果顯著,可將需要讀取的 I/O 量降低一個數量級以上。

planner 整合的 HNSW 向量索引

sorted_hnsw 將 HNSW(Hierarchical Navigable Small World)向量索引直接整合進 PostgreSQL 查詢計畫器:

CREATE INDEX documents_embedding_idx
ON documents USING sorted_hnsw (embedding)
WITH (m = 16, ef_construction = 200);

SET sorted_hnsw.ef_search = 96;

SELECT id, content
FROM documents
ORDER BY embedding <=> '[0.1,0.2,...]'::svec
LIMIT 10;

索引使用 svec(float32)或 hsvec(float16)向量類型。0.13.0 新增 sorted_hnsw.build_sq8 低記憶體建構模式,適用於記憶體有限的環境下建立大型向量索引。

穩定的 GraphRAG API

0.13.0 將 GraphRAG 輔助 API 標記為穩定版本,支援知識圖譜上的多跳鄰域展開:

SELECT *
FROM sorted_heap_graph_rag(
    'facts'::regclass,
    '[0.1,0.2,0.3,...]'::svec,
    relation_path := ARRAY[1, 2],
    ann_k := 64,
    top_k := 10,
    score_mode := 'path'
);

函式接受事實表格(fact table)、查詢向量、關係路徑(relation path,即跳數陣列)與近似最近鄰數量,在資料庫端完成多跳圖擴展,不需要在應用層組裝複雜的多輪查詢。

效能基準

情境pg_sorted_heap 0.13.0對比
向量搜尋(104K × 2880D)1.287ms,Recall@10 = 100%svec 類型
GraphRAG 兩跳(5K chains, 384D)0.962ms 中位數Qdrant 需 3.355ms

新版本同時強化了升級、dump/restore、崩潰恢復與並行操作的生命週期穩定性。

原始來源:PostgreSQL News — pg_sorted_heap 0.13.0 released


DuckLake DataFrame 擴充:讓 Lakehouse 格式直接支援 DataFrame 工作流

DuckLake Blog · 2026-05-04

DuckDB 團隊發表文章,展示 DuckLake 規格對 DataFrame 工作流程的原生支援。DuckLake 是一個基於 SQL 的 Lakehouse 格式,v1.0 已於 2026 年 4 月正式進入生產就緒狀態,此次擴充說明如何以 DuckDB 的 DataFrame API 直接在 DuckLake 上進行分析,而不需要透過 Apache Spark 或其他引擎中介。

設計理念

DuckLake 的差異化在於使用任意 SQL 資料庫作為 catalog 儲存(metadata),取代 Apache Iceberg 對 Hive Metastore 或專屬目錄服務的依賴。這使得任何支援 ACID 事務的 SQL 資料庫(包括 DuckDB 本身)都可以作為 DuckLake catalog,降低部署複雜度。

DataFrame 擴充讓使用者能以接近 pandas/polars 的操作方式直接讀寫 DuckLake 資料集:

-- 在 DuckLake 上直接執行分析
ATTACH 'ducklake:mydb.duckdb' AS lake;
SELECT * FROM lake.my_dataset
WHERE event_time >= '2026-05-01';

與現有格式的比較

相較於 Apache Iceberg 與 Delta Lake,DuckLake 的 catalog 層不依賴外部服務,使其在單機或小型叢集環境下具有顯著的操作簡便性。文章中展示即使是一個簡化版的 DuckLake 實作也可以在相對短時間內完成,印證了規格本身的可接近性。

原始來源:DuckLake Blog — The DuckLake Spec is so Simple, Even a Clanker Can Build One for Dataframes


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