什麼是RAPTOR
參考資料:https://www.cnblogs.com/xiaoqi/p/18060281/RAPTOR
RAPTOR 是一種基於「樹狀結構」的 RAG 方法。首先,RAPTOR 將所有文本分割成小塊,並將這些塊轉化為向量,然後通過聚類這些向量形成樹狀結構的層級索引(例如,不同層級的主題群組)。在查詢時,模型可以根據這棵樹的結構,有針對性地檢索和生成答案。
RAPTOR 是基於樹狀結構的分層檢索方法,將文本片段轉換成向量並聚類形成樹狀索引。這種方法讓系統可以在樹狀結構中快速定位特定的主題或類別,並支持多層次的檢索。RAPTOR 依賴樹狀結構的索引來進行分層檢索,根據查詢在預先建立的分層索引中找到最佳匹配的層次和分支。這使得它在面對大量資訊的時候,可以快速進行全局性或細節性的檢索。
高度依賴於樹狀索引結構,這使得它能更快地找到分層的資訊,但靈活性相對較低。
這種基於樹的索引方式可以讓檢索更高效,因為系統可以快速定位到與查詢最相關的分支。這也有助於全局性查詢,特別是需要在不同主題中查找關鍵資訊的情境。樹狀結構還提供了一種自然的分層索引方法,能適應不同的查詢深度。
和Graph RAG的差異
RAPTOR 和 Graph RAG 有一些相似之處,因為它們都基於結構化的索引來組織和檢索資料,並試圖在回答查詢時提供更全面和有層次的資訊。不過,它們在具體的結構、處理流程和應用場景上仍有一些關鍵區別:
相似之處
RAPTOR 和 Graph RAG 都依賴預先建立的結構化索引,RAPTOR 使用樹狀結構,而 Graph RAG 則使用多層次的圖形社群結構。這些方法預先組織了資料,以便在查詢時可以快速定位。
- 結構化的資料組織:兩者都使用層級或樹狀的結構來組織資料,這樣的結構使得可以快速縮小查詢範圍,確保檢索效率。
- 支援全局性查詢:兩者都適合大型數據集,並且都能針對全局性問題提供多層次的資訊。
- 分層次檢索:無論是 RAPTOR 的樹狀索引還是 Graph RAG 的社群結構,兩者都允許在不同的層次上檢索和聚合資訊,從而回答多樣性和深度不同的問題。
區別之處
- 資料結構:
- RAPTOR:採用樹狀結構,主要依靠向量聚類來建立層級索引。文本片段被嵌入到向量空間中,然後通過聚類形成樹狀分層。這樣的樹狀結構適合根據查詢需求快速定位到特定主題分支,對於快速定位到某個類別或主題的細節特別有效。
- Graph RAG:基於圖形結構,並利用實體和關係之間的連結建立社群,形成了多層次的圖形索引。Graph RAG 的圖結構比純粹的樹狀結構更靈活,因為它能表示更複雜的實體關係(例如多對多的連結),適合回答多跳查詢(multi-hop questions)或關於多主題交叉的問題。
- 資訊摘要和記憶:
- RAPTOR:主要依靠分層索引中的文本塊,根據查詢需求直接檢索出相關的嵌入向量,並對相關文本塊進行組合。
- Graph RAG:加入了「社群摘要」的概念,將實體和關係的資訊摘要儲存在不同層級的社群中,這樣不僅可以記錄原始數據,還能提供一種「自我記憶」的功能,使系統在回答時具備更高的總結能力。
- 適用場景:
- RAPTOR:適合需要快速定位到特定主題的查詢,尤其是在類別或主題清晰分層的資料集中,樹狀結構能提供更快的檢索體驗。
- Graph RAG:適合處理涉及複雜關係和多跳推理的查詢,例如需要跨多個相關主題或連結資訊的情境。因為它的圖形結構包含了更複雜的連結和關係,比純粹的樹狀結構更加靈活。
RAPTOR 和 Graph RAG 通過層級結構或社群摘要來進行資訊組織,這些摘要是預先準備好的,可快速調用。RIG 的資訊生成過程是動態的,每次生成部分答案後再進行新一輪檢索和生成,因此不依賴於預先準備的摘要,而是根據查詢需要來即時擴充答案。