SAG: 一種透過查詢時動態超邊結合語義搜尋與關聯推理的檢索架構

SAG: 一種透過查詢時動態超邊(dynamic hyperedges)結合語義搜尋與關聯推理的檢索架構

它解決了什麼問題

SAG 解決了傳統 RAG(依賴語義相似度)和 GraphRAG(需要昂貴的離線圖建構與複雜維護)的局限性。它提供了一個既能處理語義檢索又能處理關聯推理的系統,而無需維護兩個獨立的系統或一個全域知識圖譜。

運作方式

SAG 引入了一種基於「具備查詢時動態超邊的 SQL-檢索增強生成(SQL-Retrieval Augmented Generation with Query-Time Dynamic Hyperedges)」的新型檢索架構。

  1. 索引(Indexing):文件被解析成區塊(chunks)。對於每個區塊,系統會提取一個「事件(event)」(完整的含義)和多個「實體(entities)」(輕量級索引點)。這些會連同其向量嵌入(vector embeddings)一起儲存在關聯式儲存中。
  2. 檢索(Retrieval):SAG 不預先建構全域圖,而是利用語義訊號尋找種子實體與事件。接著,它在查詢時透過共享實體的 SQL joins 來局部擴展搜尋空間,僅針對相關數據建立「動態超邊(dynamic hyperedges)」。
  3. 證據(Evidence):最終輸出總是會映射回原始來源區塊,以確保可追溯性與引用。

對象是誰

  • 個人用戶:想要建立一個「本地優先(local-first)」知識庫,用以整理零散文件並透過引用進行對話的用戶。
  • AI Agent:需要透過 API 或 Model Context Protocol (MCP) 獲取結構化、可搜尋且可追溯知識庫的開發者。
  • 開發者:正在尋找高效能 RAG 引擎(zleap-sag Python package)以整合進自身服務的人士。

重點亮點

  • SOTA 性能:在多跳檢索(multi-hop retrieval)基準測試(HotpotQA, 2WikiMultiHopQA, MuSiQue)中表現優於 HippoRAG 2。
  • 本地優先:從 SQLite 和 LanceDB 開始,初始設定不需要外部資料庫。
  • 可追溯性:每個結果與引用都可以追溯回確切的原始文本區塊。
  • 可擴展整合:支援 OpenAI 相容的聊天端點以及 MCP,以便與 Claude Code 或 Codex 等 Agent 進行整合。
  • 靈活的儲存:支援多種後端,包括 PostgreSQL/pgvector 和 Elasticsearch。

Sources