RAG中語義理解和語義檢索的區別與應用 原創
“ 語義理解是模型的基礎能力,語義檢索是一種檢索技術?!?/strong>
可能很多人都聽過語義理解和語義檢索,但大部分可能都沒搞明白這兩者之間的區別和聯系,以及應用場景。
在自然語言處理的大模型中,大模型的執行由兩個階段組成,自然語言理解(NLU)和自然語言生成(NLG);而在RAG中同樣存在類似的兩種類型,即語義理解和語義檢索。
那么,語義理解和語義檢索在RAG的中有什么區別和應用場景呢?或者說RAG哪個階段屬于語義理解階段,哪個階段屬于語義檢索階段?
語義理解和語義檢索
在RAG的流程中,用戶提出問題,然后根據問題去進行標量(條件查詢)或向量檢索(語義檢索),其目的是檢索到與問題相關的文檔,然后給模型進行增強生成。
簡單流程如下圖所示:

然后把用戶問題,檢索回來的文檔,以及歷史記錄拼接到提示詞中,讓大模型進行生成,而這個階段就涉及到大模型的自然語言理解和自然語言生成兩個過程。
事實上在傳統RAG中,語義檢索才是核心,原因是因為基于自然語言的問答,需要進行語義檢索而不是傳統的條件檢索;而這也是為什么RAG需要向量數據庫的原因,因為語義檢索的技術本質就是向量計算。
可能有些人不太了解向量數據庫,或者有點神話向量數據庫的作用;事實上,向量數據庫和傳統的關系型數據庫沒有本質上的區別,唯一的一點就是向量數據庫多了向量計算的能力;所以,只要是需要向量計算的場景都可以使用向量數據庫,包括但不僅限于智能問答,智能搜索等。
向量數據庫就是在關系型數據庫的基礎之上,增加了向量列,而向量列的唯一作用就是相似度檢索;但真正用于模型增強生成的還是原文檔,這就類似于我們經常需要用ID或Name字段做檢索,但真正使用的是表中的其它列。

OK,了解了語義檢索的基本原理,那么再來說說語義理解;在前面說大模型在生成階段需要經過語義理解和語義生成的過程;但在智能體實現的RAG系統中,語義理解也是其中的一個重要過程,可以說語義理解才是智能體的核心。
在增強檢索的智能體中,我們設置幾個查詢工具,每個工具有不同的查詢參數;而這個參數的作用就是用來做語義查詢或者條件查詢,但這個參數是怎么生成的呢?

就是大模型通過理解用戶的問題,根據問題生成工具參數的值,然后進行工具調用。因此,在智能體中語義理解扮演著重要角色,如果大模型無法進行準確的語義理解,那么工具調用的結果就會出錯。
因此在RAG中,語義理解和語義檢索扮演著不同的角色,以此實現不同的功能;語義理解是模型的基本能力,而語義檢索是檢索的一種手段,區別于傳統字符匹配方式,但本質相同。
本文轉載自??AI探索時代?? 作者:DFires

















