2026年8月17日 星期一

AID04-文件餵給 AI 之前,Embedding 做了什麼-5分鐘學AI

文件不是整份丟進去,是先切開,再換算成它比得出遠近的樣子。 它永遠會挑出最接近的一塊,但最接近不等於正確。


#一起搞懂AI #AI名詞 #AI入門 #白話AI #企業AI 文件餵給 AI 之前,Embedding 做了什麼。 阿哲,公司說要把幾千份文件餵給 AI。我一直想不通,這個餵到底是怎麼餵?先問你一件事。你還記得它只有一張桌子,桌上攤得開的才看得到吧?記得。啊,那幾千份文件根本攤不上去。對,所以沒有人真的把整份丟進去。實際的做法是先把文件切開,再讓它有辦法從幾千塊裡面,一次只撈出最相關的那幾塊。 那我們就從切開講起。這件事有名字嗎?有,叫 Chunk,中文就是切塊。把一份長文件切成一小段一小段,每一段大概是一個段落到一頁那麼長。 可是切的時候,剛好切在一句話中間怎麼辦?這就是第二個名詞,重疊。切的時候讓每一塊的頭尾跟隔壁多留一段重複的字,被切斷的那句話,兩邊都還留得住。 可是切成一小段一小段,不是把好好的文章拆爛了嗎?不會。因為你要的本來就只是其中一小段,不是整份。切開之後,它才有辦法只把那一小段拿出來給你看。喔,就像一本很厚的書,我要找的其實是某一章,不是整本從頭讀一遍?對,就是這樣。要小心的是接縫。重疊留得不夠,答案就會斷在半句話,你看到的那一段可能剛好少掉最關鍵的後半句。那到底要切多大才對?沒有標準答案,但有一個好用的原則:一塊只講一件事。切太大,裡面混了好幾個主題;切太碎,一句話的前因後果就被拆散了。 切好之後呢?就這樣一塊一塊放著嗎?還要再做一件事。每一塊都會被換算成一組數字,你可以把那組數字想成它在一個很大的空間裡的位置。意思接近的,位置就靠得近。 換算成數字,那不就跟意思沒關係了?剛好相反。這組數字就是拿來表示意思的。兩段話講的是同一件事,換算出來的位置就會很靠近;講不同的事,就離得很遠。喔,就像幫每一段話調一個顏色?意思很接近的,調出來的顏色也會很接近,一眼就看得出是同一區的。這個比喻很好。但要注意,它比的是意思像不像,不是有沒有出現同一個字。休假規定跟請假辦法,一個字都沒重複,位置卻很近。那反過來呢?用了同一個字,意思卻不一樣?那就會被分開。蘋果手機跟蘋果削皮,都有蘋果兩個字,位置卻差得很遠。這也是它跟用關鍵字去找最不一樣的地方。 那這些位置又要放到哪裡去?放在一個專門存位置的地方,叫向量資料庫。它跟你熟悉的那種資料庫最大的差別是,它不是照名字或日期排的,是照意思擺的。 照意思擺,實際上是什麼樣子?就是位置接近的東西本來就被放在一起。你丟一個問題進來,它換算成一個位置,只要看那個位置附近有誰,不用把幾千塊全部翻一遍。喔,就像超市的貨架?不是照商品名字的筆畫排,是把你會一起買的東西擺在同一區,走到那一區,旁邊都是我可能要的。很貼切。但有一件事很多人會誤會:它裡面放的不是你原本那份檔案,是切好、換算過的一份副本。原檔改了,這裡不會自己跟著變。那不就會拿到舊的內容?會。所以文件更新之後,要重新切一次、重新換算一次。這件事不會有人提醒你,它也不會報錯,只會安安靜靜地一直回答舊版本。 找到附近那幾塊之後,它怎麼決定哪一塊最好?靠一個分數,叫語意相似度。它算的是你的問題跟每一塊的意思有多接近,分數高的排前面,只有前幾名會被拿去用。 那這個分數是怎麼算出來的?我常看到餘弦兩個字。餘弦相似度是最常用的那一種算法。它不比兩個位置離得多遠,它比的是兩邊指的方向差多少,角度越小就越像。 為什麼要比方向,不比距離?因為長短會騙人。同一件事,一段寫得很長、一段寫得很短,位置就離得遠了,可是它們講的是同一件事。看方向就不會被長短影響。喔,就像看兩個人是不是朝同一邊走?走多快、走多遠都不管,只看有沒有往同一個方向。就是這個畫面。但這裡有一個最大的誤會:分數高不等於答對。它只是把最接近的那一段挑給你,就算整份文件裡根本沒有答案,它還是會挑一段最接近的出來。咦,所以它不會跟我說我找不到?除非有人特別要求它這樣做,不然不會。所以看到答案的時候,重要的事情,還是翻回它引用的那一段自己看一眼。 那我把這一集重新排一次好不好?好,你來。切塊是把長文件切成一小段一小段。重疊是每一塊的頭尾多留一點,句子才不會被切斷。嵌入是把每一段換算成一個位置,意思接近的就擺得近。向量資料庫是照意思擺、不照名字排的地方。語意相似度是比意思有多接近,不是比字面像不像。餘弦相似度是比方向的夾角,不是比距離遠近。完全正確。以後聽到有人說文件已經餵進去了,你只要問一句:它找回來的那一段,真的是對的那一段嗎? 企業級智庫引擎。讓公司的知識,答得出來、查得到、帶不走。

沒有留言:

張貼留言