SAG: Truy xuất RAG bằng SQL JOIN động
Không cần vector search, không cần knowledge graph tĩnh — SAG dùng SQL JOIN để tạo hyperedge động, đạt 8/9 chỉ số Recall@K trên 3 benchmark.
1. Ý tưởng cốt lõi
1. 核心想法
Hầu hết hệ thống RAG hiện tại dùng dense retrieval (tìm kiếm vector) hoặc knowledge graph tĩnh. Cả hai đều có điểm yếu: vector search thất bại với truy vấn nhiều bước; knowledge graph tốn công bảo trì, khó cập nhật. SAG giải quyết bằng cách không xây đồ thị toàn cục. Mỗi đoạn văn bản được chia thành một sự kiện hoàn chỉnh và tập thực thể chỉ mục. Khi truy vấn, SQL JOIN liên kết các sự kiện chia sẻ thực thể — tạo ra một cấu trúc siêu cạnh (hyperedge) cục bộ, chỉ tồn tại cho truy vấn đó.
現有 RAG 多用稠密向量搜尋或靜態知識圖譜。前者對多步推理無能為力,後者維護成本高、難以增量更新。SAG 的解法是:不建全域圖。每段文字拆成一個完整事件 + 一組索引實體,查詢時用 SQL JOIN 串聯共享實體的事件,形成僅在該次查詢存在的局部超邊結構。
2. Dữ liệu thực nghiệm
2. 關鍵數據
| Hạng mục | Kết quả |
| Benchmark | HotpotQA / 2WikiMultiHop / MuSiQue |
| Recall@K (9 chỉ số) | 8/9 đứng đầu |
| MuSiQue Recall@5 | 80.0% |
| Quy mô sản xuất | Hàng trăm triệu bản ghi, truy vấn dưới giây |
3. Phân tích kiến trúc
3. 架構分析
Sự kiện hóa (Eventification): Mỗi đoạn văn bản → một sự kiện hoàn chỉnh về mặt ngữ nghĩa + tập thực thể (entity). Không có đồ thị toàn cục. Mỗi mục dữ liệu đứng độc lập trong CSDL SQL.
事件化:每段文字 → 一個語意完整事件 + 一組實體。沒有全域圖,每筆資料在 SQL 中獨立存在。
JOIN động tại thời điểm truy vấn: Khi nhận truy vấn, hệ thống trích xuất thực thể từ câu hỏi, sau đó SQL JOIN tìm các sự kiện chia sẻ cùng thực thể. Kết quả là một hyperedge cục bộ — chỉ được tạo ra cho truy vấn này, không lưu trữ vĩnh viễn.
查詢時動態 JOIN:收到查詢 → 從問題抽實體 → SQL JOIN 找共享實體的事件 → 形成局部超邊。只為這次查詢存在,不持久化。
Hạ tầng CSDL tiêu chuẩn: Dùng SQLite/PostgreSQL thông thường. Không cần vector DB, không cần graph DB. Hỗ trợ ghi tăng dần, xử lý song song, mở rộng ngang tự nhiên nhờ cơ sở dữ liệu quan hệ.
標準資料庫基礎設施:用普通 SQLite/PostgreSQL。不需向量庫、不需圖資料庫。天然支援增量寫入、並行處理、水平擴展。
4. So sánh với các phương pháp hiện tại
4. 與現有方案對比
| Dense RAG | KG RAG | SAG |
| Suy luận nhiều bước | Yếu | Trung bình | ✅ SQL JOIN |
| Chi phí bảo trì | Thấp | Cao (dựng lại toàn đồ thị) | ✅ Không đồ thị |
| Toàn vẹn ngữ nghĩa | Cao | Thấp (phân mảnh) | ✅ Mỗi sự kiện độc lập |
| Khả năng mở rộng | Cần vector DB | Khó | ✅ SQL DB tiêu chuẩn |
5. Ứng dụng thực tế: Bài học cho Hermes Agent
5. 落地應用:對 Hermes Agent 的啟發
Hermes Agent dùng fact_store — SQLite + FTS5, cấu trúc phẳng không có tầng thực thể. SAG cho thấy hướng đi SQLite là đúng: không cần Neo4j hay vector DB phức tạp. Để áp dụng SAG, chỉ cần thêm cột entity_tags vào fact_store, khi ghi gọi LLM nhẹ trích xuất thực thể, khi truy vấn dùng JOIN thay vì LIKE. Nhưng với 83 facts hiện tại, FTS5 đã đủ. Chỉ nên nâng cấp khi vượt 500+ facts và nhu cầu truy vấn đa thực thể trở nên thường xuyên.
Hermes 的 fact_store 已是 SQLite+FTS5,扁平結構缺實體層。SAG 驗證了選 SQLite 是對的——不需 Neo4j 或向量庫。要 SAG 化只需加 entity_tags 欄位、寫入時抽實體、查詢時 JOIN。但 83 條事實規模下 FTS5 已夠用,等 500+ 條再進化。