:::

雜談:我可以只要RAG的「R」嗎? / TALK: Can I Just Have the “R” in RAG?

2月 13, 2025 , , 0 Comments Edit Copy Download

download.png

很多人以為RAG可以取代搜尋引擎,但其實很多人要的功能只有「能用自然語言檢索」而已。


RAG中的語意檢索 / Semantic Search in RAG

RAG_-_2025.png

RAG的全名「Retrieval-Augmented Generation」反映了它的整體架構。其中第一步就是基於Retrieval找到相關資料的檢索。

很多人會以為RAG的檢索就一定是使用語意檢索。而語意檢索又要經過分段(chunking)、製作語意向量(text-embedding)、保存到向量資料庫(vector database)等過程。雖然RAG在實作的時候也可以有許多不同的變化,但於語意檢索已然成為了RAG受人關注的一大特色。

RAG_-_2025.png

舉個例子來說,傳統的資料庫只能使用「關鍵字」檢索。而且還不能輸入太多關鍵字,因為不太會有文獻能夠同時符合這麼多的關鍵字。以往圖書館利用教育裡面,如何設定合適的關鍵字跟檢索策略,一直都是圖書館員在教學上的一大重點。

RAG_-_2025_1_.png

但是在語意檢索的架構中,使用者輸入的查詢語句不再受限於特定幾個關鍵字,而更可以使用自己常用的語言來輸入──在學術上,這種查詢方式叫做「自然語言」檢索。此時輸入的查詢語句被轉換成了語意向量。而查詢語句跟文件之間的比對,也從原本的關鍵字相符程度,變成了向量之間相似程度的計算。當然,就算是在語意檢索的架構中,我們依然可以用「很不自然」的多個關鍵字來查詢,語言檢索背後依然會用同樣地邏輯來找尋具有相似語意的文件。

簡單來說,如果是探索一些模糊概念、或是你也不太記得明確的關鍵字的情況下,語意檢索的應用範圍其實已經可以取代傳統的關鍵字檢索了。


RAG中的R不是真正的檢索 / The R in RAG Is Not True Retrieval

2025-0209-235912.png

RAG使用了語意檢索,使得資料的搜尋可以突破「關鍵字」的限制,而使用「語意」來找尋文件。然而這背後其實有兩大問題。

2025-0210-000842.png

首先是很多人會質疑的「語意」,這到底是什麼意思?是誰來判斷「語意」?這時候工程的老師就會講說什麼類神經網路架構啦、Transformer架構啦、注意力機制啦之類會讓人聽到睡著的理論,最後跟你說這是Text Embedding模型決定的。簡單來說,選擇能夠理解你使用文字的Text Embedding模型,是讓於「語意」檢索能夠成功的基礎。

2025-0210-000456.png

但比起Text Embedding,RAG的另一個問題更導致它並不能真正地稱為「檢索」。為了配合RAG的「A」擴增給大型語言模型的字數限制(token limit),RAG在R的階段會採取Top K策略,只選出最相關的數筆資料作為結果顯示。而這個Top K在很多RAG應用裡面大概都落在3到10之間,也就是最多只取回3筆到10筆結果,後面的資料全部都會被捨棄。有些付費的服務會擴增到20筆,但它們都要配合大型語言模型的字數限制,並不能無限增加。

2025-0210-000922.png

結果來說,我們的搜尋結果就被限縮到了3筆到10筆之間。而且要注意的是,這是已經被分段之後的搜尋結果。這些結果可能實際上都來自於同一份文件的內容,因此到最後實際上你可能只找到了「一份文件」。

2025-0210-001119.png

這顯然地跟我們對搜尋引擎的認知有相當大的差異:畢竟Google搜尋就應該給我超級多搜尋結果,讓我可以一一去瀏覽、檢視、確認才對啊。

好好好,我知道、我知道。過往的學術研究都會說一般使用者只會看前面數個搜尋結果,後面就算有成千上萬筆,使用者都會把它捨棄。這也是為什麼RAG的R會使用Top-K策略的緣故。

這種做法對「一般的使用者」來說也許可行,但對於需要仔細分析全部資料的「研究者」來說,這種限制還真是令人困擾。


能夠只用語意搜尋功能嗎? / Can I Use Only Semantic Search?

以程式開發的角度來說,當然,有什麼不行?不就是資料庫檢索而已嗎?但普羅大眾真的不會沒事在家裡架個向量資料庫,還要配合Text-Embedding模型來做語意檢索。我更想要找的是一般人也能使用的語意檢索功能。

2025-0210-001557.png

https://blogs.windows.com/windows-insider/2025/01/17/previewing-improved-windows-search-on-copilot-pcs-with-windows-insiders-in-the-dev-channel/ 

微軟在1月的開發者頻道中加入了新的AI搜尋功能。它讓使用者可以輸入自然語言來檢索,而不需要用特定的關鍵字。因此使用者可以輸入「budget spreadsheet」(預算表),或是「landscape」(風景)來搜尋。

2025-0210-001755.png

讓我們來看看這個例子。使用者搜尋了「eco friendly clothing」(環保服裝)。Windows認為「Hero Image for Marketing」這張圖片背後的「意思」跟環保服裝有所相關,所以把它放在搜尋結果的第一個。

https://blogs.windows.com/windows-insider/2025/01/17/previewing-improved-windows-search-on-copilot-pcs-with-windows-insiders-in-the-dev-channel/

https://blogs.windows.com/windows-insider/2025/01/17/previewing-improved-windows-search-on-copilot-pcs-with-windows-insiders-in-the-dev-channel/ 

這個AI搜尋功能要求使用者的硬體必須要支援Copliot+,也就是Windows現在在市場上推動的AI電腦、AI筆電才行。雖然目前不太能得知AI搜尋的細節,但看起來背後的確使用了語意檢索的架構。

如果Windows的Copliot+能夠讓使用者用自然語言檢索自己電腦上的檔案的話,相信這應該是普及語意檢索的一項重大里程碑吧。雖然我已經離開Windows很多年了,但還是很期待Windows AI搜尋的發展呢。