有了前幾篇文章的觀念,以及「Node.js & LLM 原理與實務第 4 章」的基礎,我們就可以「純手工」來打造一個「極簡向量資料庫」。
有了「語意空間」與「距離」的觀念後,就可以實際打造一個語意搜尋系統,方式如下: 上述過程就稱為 Top-K 檢索,這是 RAG 系統中「語境擷取(Context Retrieval)」的第一步。舉例來說,若查詢「退貨流程」,系統會自動挑出語意最接近的句子,如「退款規則」、「商品退換申請」。接著,這些句子將作為 LLM 的參考語境輸入,協助模型生成更準確的回答。
在前幾節中,我們學會了如何以向量表示語言、計算語意距離、並透過語意空間建立語境。 既然提到 Text Embedding,就不能忽略「語意對齊(Semantic Alignment)」的觀念。語意對齊扮演很重要的角色,它是 LLM 的要角,例如:多模態(Multimodal)就需要語意對齊技術。
之前的教學,我們將語言變成可運算的數學表達式。接下來,就是要實際寫程式判斷兩個句子是否「語意相近」,最基本的方法,就是:餘弦相似度(Cosine Similarity)。
「Node.js & LLM 原理與實務」書上第 4 章提到 Text Embeddeding(向量化),其中 4.4 節「向量化文本資料」介紹如何使用 text-embedding-3-small 來取得語意向量的部份,延續前二篇文章的說明(詳見 Also read),本文再行補充 2 個實例,說明向量化與語意搜尋的概念。
語意搜尋的關鍵在於「讓語言變成可運算的 Expression(運算式)」,例如:x = 10 就是一個運算式,y = 20 是一個運算式,result = x + y 也是一個運算式。
這本書是為 LLM 初學者設計的入門教材,使用在筆者的 LLM/GPT 教育訓練講課程。本書詳細資訊,請見 Moko365 官網介紹:
如 Node.js & LLM 原理與實務一書(第 1 章)所的「語境」觀念,語意判斷跟語氣,取決於語境。RAG 檢索之所以重要,是因為 RAG 在「如何找到正確的語境」,RAG 並不是傳統的關鍵字檢索;RAG 為何能提升 LLM 應用程式的正確性?便是這個道理。所謂的「正確性」,白話來講,就是讓 LLM 可以生成符合我們預期語氣的內容。
這本書是為 Node.js 初學者設計的入門教材,使用在筆者的 Node.js 教育訓練講課程。本書詳細資訊,請見 Moko365 官網介紹:
不久前(2018 年 1 月),Ethereum 才剛針對 ERC 20 提出的 ERC 827 擴充標準;近期,ERC-891 代幣標準橫空出世。即使 ERC 891 仍只是一個 EIP(Ethereum Improvement Proposal),但筆者認為這是一個相當值得關注的提案...