SAG 用 SQL JOIN 喺查詢時動態構建事件關係,取代 Traditional RAG 嘅向量模糊匹配同 GraphRAG 嘅預建知識圖譜。快 + 深 + 支持增量更新。
chunk → 一個完整語義事件(唔係三元組碎片)
chunk → 多個索引實體
事件 ↔ 實體 → 一個潛在超邊(查詢時 SQL JOIN 動態構建)
三層設計: 1. Event(事件) — 承載 chunk 完整語義,唔拆成獨立三元組 2. Entity(實體) — 輕量級索引同擴展點,唔替代事件含義 3. Query-time Dynamic Hyperedge — 查詢時先用 SQL JOIN 將共享實體嘅事件連接,唔預建全局圖
| 維度 | Traditional RAG | GraphRAG | SAG |
|---|---|---|---|
| 檢索方式 | 向量模糊匹配 | 預建知識圖譜 + 圖遍歷 | SQL JOIN 動態構建 |
| 多跳推理 | 弱(淺層語義) | 強 | 強(累積效應) |
| 增量更新 | 簡單 | 難(要重建圖譜) | 簡單(新 chunk 自帶事件+實體) |
| 構建成本 | 低 | 高(LLM 抽取三元組) | 中(小模型抽取事件+屬性) |
| 速度 | 快 | 慢 | 快(SQL 查詢極快) |
| 全局維護 | 無 | 需要 | 無 |
SAG 嘅關鍵創新之一。每個事件提取多維度屬性(時間、地點、人物、行為等),用自然語言描述而非數字向量。
六度分隔理論應用: - 事件 A 同事件 C 冇直接交集 - 但 A 同 B 有共同屬性,B 同 C 有共同屬性 - SQL JOIN 實時將 A-B-C 連接成超邊
向量 + SQL 雙引擎: - 向量負責語義模糊匹配(「蘋果公司」→ 「Apple Inc」) - SQL 負責精準結構化查詢 - 互相彌補:向量嘅不确定性被 SQL 馴化
HotpotQA、2WikiMultiHop、MuSiQue 三個多跳基準測試:
9 項 Recall@K 指標中攞到 8 項最佳。
注意: 論文只報 retrieval recall,冇報 QA EM/F1。召回多唔等於下游 QA 準確率 1:1 傳導。
離線索引: 1. 文件解析 → 語義 chunk 2. 並行抽取事件 + 實體 3. 持久化 chunk、事件、實體、關聯到關係型存儲 4. 持久化向量/全文索引
在線檢索: 1. 語義 + 詞法信號搵種子事件/實體 2. SQL JOIN 將種子事件擴展成本地候選空間 3. 只實例化當前查詢相關嘅超邊 4. 選擇最強候選、去重、返回原始證據 chunk
zleap-sag (PyPI)