今天主要來補充一下之前一直沒說到的「文字轉向量」,為什麼要將文字轉成向量來代表文字的意涵?為什麼不要用電腦常用的Unicode或者任何其他編碼原則來表示文字意義?
先回答第一個問題,因為AI不可能看得懂文字「符號」所代表的涵意,更不用說要AI看得懂我們所寫的文章。因此就需要透個一連串的數字去代表不同的文字所組成的句子,類似於將句子編號,但是這種編號並非按照順序。這種編號的過程叫做embedding,把不同的句子或詞語透過一串數字進行表述。而這些數字也不一定是只有正整數或整數,這些數字大家也稱作:向量,利用這些向量來表示文字的含義。
再來第二個問題:為什麼不要用電腦常用的Unicode或者任何其他編碼原則來表示文字意義?我個人自己認為是因為和後續的檢索過程有關,想要在茫茫的文字海中找到與問題相關的資訊是一件很困難的事情。如果利用類似Unicode那樣的編碼對於機器來說或許看得懂,但是沒有任何數學意義。因此在檢索的時候若想要用Unicode就無法使用像cosine similarity的方式快速計算每一份資料與問題的語意相關性。
圖片來源
總結來說,使用Vector來當作文字轉換的代名詞,不僅是為了要讓機器理解文字意涵,更是為了要提供資料檢索時有更好的檢索效率和效果。
到目前為止我們了解RAG核心概念: Vector,理解為什麼要使用Vector來將文字進行轉換;學習到MongoDB 當中要如何使用Vector Search。接下來將要開始建立最基本款的RAG聊天機器人,不管在基本款(Naive)或進階款( Advanced)的RAG在處理資料和使用者問題時都逃不過Vector表示!
希望今天的介紹可以讓剛入門的同學們理解RAG的精髓~