為什么分塊在RAG技術中很重要?但又很沒有存在感? 原創
RAG技術作為目前大模型應用比較火的一個領域,怎么做好一個RAG系統一直是很多人和企業都在思考的一個問題;但RAG并不是一個獨立的技術,而是一個技術的集合體,涉及到多個不同的技術;比如說向量數據庫,embedding,語義分析,搜索技術等等。
而在RAG技術中有一個不被大家所重視的一點就是——分塊(chunk);什么是分塊?
舉個例子,西游記作為我國的四大名著之一,其有八十多萬字;如果說把西游記作為一個整體向量化之后存儲到向量數據庫中,我們要想從中找到孫悟空三大白骨精的內容,就需要把整個西游記都過濾一遍才能找到需要的章節。
而且由于技術方面的原因,向量不擅長處理長文本數據,一般情況下都是把長文本按照某種方式切割成多個短的段落;然后一部分一部分的存儲到向量數據庫中。
而這一部分一部分的數據就是分塊,每一塊都是整體的一部分。
分塊將大塊文本切分成多個小塊文本和段落,這使得文本更容易管理和處理;其使得更容易進行embedding(嵌入),并顯著提升從向量數據庫中召回的相關性與準確性。
文本分塊——chunk
在RAG技術中,存在一個很大的難點就是怎么快速與高效以及準確地檢索到用戶所需要的內容;召回效率與質量是RAG系統的核心指標,如果一個RAG系統的召回效率和質量都很差,那么這個RAG系統不論使用什么高大上的技術都一文不值。
那應該怎么解決RAG的召回質量問題呢?
雖然為了提升RAG的召回質量,在RAG的每個環節都想方設法的優化;而分塊作為RAG其中的一個重要步驟,當然也不能例外。
往小了說,分塊是方便我們對大文本和長文本進行處理,往大了說分塊能直接影響到RAG的召回質量和效率。
在實際操作中,分塊的好處是多方面的。首先,它能夠提高模型處理的效率,因為較小的文本段落更容易進行嵌入和檢索。
其次,分塊后的文本能夠更精確地匹配用戶查詢,從而提供更相關的搜索結果。這對于需要高精度信息檢索和內容生成的應用程序尤為重要。
通過優化內容的分塊和嵌入策略,我們可以最大化LLM在各種應用場景中的性能。分塊技術不僅提高了內容召回的準確性,還提升了整體系統的響應速度和用戶體驗。
因此,在構建和優化基于LLM的應用程序時,理解和應用分塊技術是不可或缺的步驟。
當然,根據不同的應用場景,分塊也有多種不同的方式,比如固定分塊;句子分割,語義分塊等多種分塊方式。但不論哪種分塊方式,目的都是為了讓數據查詢的速度更快,效率更高,結果更準確。
為什么分塊會很重要?
Pinecone公司的Roie Schwaber-Cohen指出:“開始思考如何將我的內容分成更小的塊的原因是,這樣當我檢索時,它實際上能夠命中正確的內容。你將用戶的查詢嵌入,然后將其與內容的嵌入進行比較。
如果你嵌入的內容大小與用戶查詢的大小差異很大,你就更可能得到較低的相似度得分。”這句話強調了分塊的關鍵作用:通過合理的分塊,可以確保用戶查詢與內容之間的相似度得分更高,從而提高搜索結果的相關性和準確性。
本文轉載自公眾號AI探索時代 作者:DFires
