干貨分享 | RAG的5種切分策略
這篇文章將帶你深入探索RAG的五種切分策略,這些策略是優(yōu)化RAG工作流程的第一步,對于提高信息檢索的效率和準確性至關重要。
RAG(Retrieval-Augmented Generation,檢索增強生成)是一種結合了信息檢索技術和語言生成模型的人工智能技術。RAG模型由Facebook AI Research(FAIR)團隊于2020年首次提出,并迅速成為大模型應用中的熱門方案。
RAG的基本思想是通過從外部知識庫中檢索相關信息,并將這些信息作為額外的上下文提供給語言模型,從而增強模型生成文本的能力。能幫助模型減少幻覺、提高內容生成的準確性。
本文主要介紹RAG工作流程的第一步涉及的5種切分策略。
01. RAG應用工作流程
以下是典型的RAG應用工作流程:
RAG:將額外信息存儲為向量,將傳入的查詢與這些向量匹配,并將最相似的信息與查詢一起傳遞給大語言模型(LLM)。
由于額外的文檔可能非常大,第1步還需要進行切分操作,將大文檔分割成較小、易于管理的部分。
這一步至關重要,它確保文本能夠適應嵌入模型的輸入大小。此外,它提高了檢索步驟的效率和準確性,這直接影響生成響應的質量。
以下將逐步介紹RAG的五種切分策略:
02. 固定大小切分
最直觀的切分方法是根據預定的字符數、單詞數或Token數量將文本均勻分割成若干段落。
由于直接切分可能會破壞語義流暢性,建議在連續(xù)段落間保留一些重疊(如上圖的藍色部分)。
這種方法易于實現,而且所有段落大小相同,有助于簡化批處理。
但它存在一個大問題:通常會在句子(或想法)中途切分,導致重要信息可能分散在不同段落中。
03. 語義切分
根據句子、段落或主題部分等有意義的單元來切分文檔,接著,為每個段落生成嵌入,假設從第一個段落及其嵌入開始。
- 如果第一個段落的嵌入與第二個段落的嵌入余弦相似度較高,則兩個段落組成一個切片。
- 這個過程持續(xù)進行,直到余弦相似度顯著下降。
- 一旦下降,我們就開始一個新切片并重復此過程。
輸出可能如下所示:
這種方式與固定大小切片不同,能夠保持語言的自然流暢性,并保留完整的思想。
由于每個切片語義更為豐富,它提高了檢索準確度,進而使LLM生成的響應更加連貫且相關。
一個小問題是,確定余弦相似度下降的閾值在不同文檔間可能有所不同。
04. 遞歸切分
首先,基于內在的分隔符(如段落或章節(jié))進行切分。
然后,如果某個切片的大小超過預定義的切片大小限制,就將其進一步分割。如果切片符合大小限制,則不再進行切分。
輸出結果可能如下所示:
如上所示:
- 首先,我們定義了兩個切片(紫色的兩個段落)。
- 接下來,第1段被進一步分割成較小的切片。
與固定大小的切片不同,這種方法也保持了語言的自然流暢性,并保留了完整的思想。
不過,在實現和計算復雜性方面有一些額外的開銷。
05. 基于文檔結構的切分
利用文檔內在的結構(如標題、章節(jié)或段落)定義切片邊界。
這種方式能保持文檔的結構完整性,確保切片與文檔的邏輯部分對齊。
該方法假設文檔結構清晰,但這可能并非總是如此。此外,切片長度可能不同,甚至超過模型的Token限制??梢試L試與遞歸切分結合使用。
輸出結果可能如下所示:
06. 基于LLM的切分
由于每種方法都有其優(yōu)缺點,為什么不讓LLM來生成切片呢?LLM可以通過提示詞生成語義隔離且有意義的切片。
顯然,這種方法確保了高語義準確性,因為LLM能理解上下文和意義,遠超簡單的啟發(fā)式方法。
唯一的問題是,這種方式的計算成本是五種方法中最高的。此外,由于LLM通常有上下文窗口限制,需要對此加以處理。
總結
每種技術都有各自的優(yōu)劣,不過我發(fā)現語義切分在許多情況下效果不錯,但仍然需要根據實際情況進行測試,最終的選擇將取決于內容的性質、嵌入模型的能力和計算資源等。
作者:小布Bruce,公眾號:AI思
本文由 @小布Bruce 原創(chuàng)發(fā)布于人人都是產品經理。未經作者許可,禁止轉載
題圖來自 Unsplash,基于CC0協(xié)議
該文觀點僅代表作者本人,人人都是產品經理平臺僅提供信息存儲空間服務
歡迎關注我的公眾號:AI者也