Kernel Memory 入门系列: Embedding 简介
Kernel Memory 入門系列: Embedding 簡介
在 RAG模式 其實留了一個問題。
我們對于的用戶問題的理解和文檔的檢索并沒有提供合適的方法。
當然我們可以通過相對比較傳統的方法。
例如對用戶的問題進行關鍵詞提取,然后通過關鍵詞檢索文檔。這樣的話,就需要我們提前對文檔做好相關關鍵詞的標注,同時也需要關鍵詞能夠覆蓋到用戶可能的提出方式以及表達方法。這樣的話,就需要我們對用戶的問題有一個很好的預測。用戶也需要在提問的時候,能夠按照我們的預期進行提問。我們和用戶雙向猜測,雙向奔赴,如果猜對了,那么就可以得到一個比較好的結果。如果猜錯了,結果難以想象。
那么有沒有一種方法,能夠讓我們不需要對用戶的問題進行預測,也不需要對文檔進行關鍵詞標注,就能夠得到一個比較好的結果呢?
這個答案就是 Embedding。
Embedding 是什么
Embedding 是一種將高維數據映射到低維空間的方法。在這個低維空間中,數據的相似性和原始空間中的相似性是一致的。這樣的話,我們就可以通過低維空間中的相似性來進行檢索。
通俗的理解,大語言模型基于大量的文本數據進行訓練,得到了一個高維的向量空間,我們可以認為這是一個語義的空間。在這個語義空間中,每一個詞或者每個句子都有一個對應的空間坐標。雖然這個坐標系的維度是非常高的,起碼都是上百甚至上千的維度,但是我們仍可以想象在二維或者三維空間中的點去理解這個坐標。
然后,我們就可以通過這個向量來判斷兩段文字是否相似。如果兩段文字的向量越接近,那么這兩個詞的語義就越接近。例如,貓 和 狗 的向量就會比 貓 和 蘋果 的向量更加接近。
這個空間坐標和模型的關系更加密切,模型越強大,對于語義的理解越深刻,那么這個空間坐標的效果就越好。所以,尋找或者訓練一個好的Embedding模型對于實現一個好的檢索系統是非常重要的。
使用Embedding進行匹配
有了Embedding的結果之后,我們就可以看如何使用Embedding進行匹配了。
首先我們需要對用戶的提問和我們的文本進行Embedding,得到對應的向量。
通過計算問題的向量與文本的向量的相似性,通常是余弦相似度計算,我們就可以得到一個排序的結果。這個排序的結果就是我們的檢索結果。
根據實際模型的表現,選擇合適的相似度閾值,然后就可以找到最為相似的內容了。
參考
- 嵌入基礎知識
- What are Embeddings?
總結
以上是生活随笔為你收集整理的Kernel Memory 入门系列: Embedding 简介的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 真我618最高直降800元!&ldquo
- 下一篇: C++ Qt开发:MdiArea多窗体组