了解語意搜尋
立即了解語意搜尋的基本概念:
- 它與標準語彙搜尋有何不同。
- 什麼是向量內嵌?
- 向量資料庫的功能為何?
什麼是語意搜尋?
標準語彙搜尋或關鍵字搜尋透過比對字元的方式查詢文件。 例如,查詢「light」會比對文字「bright light」,因為字元 light
出現在文件中。
語彙搜尋可以透過模糊比對的方式增強;例如,查詢「lights」仍然可能比對文字「bright light」或拼錯的 lihgts
,因為差一個字元 (遺漏 s,
或交換 g
和 h
)。 雖然模糊比對和其他技術,例如詞幹分析很實用,但這項技術必須符合同義字或語意類似的語言:不同的片語、俚語、技術詞彙等。若要利用語彙搜尋提供最相關的搜尋結果,作者必須在中繼資料或文字本身內嵌關鍵字 (可能是尷尬的使用者體驗)。
語意搜尋登場。 語意搜尋不利用字元相似性。 相反地,它使用單字和片語概念的數值表示法。 這些數值表示法稱為內嵌向量,或單純稱為內嵌。
如果兩個內嵌的數值相似,則語意也類似。 這種相似性比測試關鍵字重疊範圍更廣,因為它對精確的關鍵字選取或用字遣詞較不敏感。
若要執行語意搜尋,請先產生查詢的內嵌向量。 然後,比較該向量與向量資料庫。 最接近查詢內嵌的內嵌是語意與查詢最相似的文件。
大部分的關聯式資料庫使用案例不必儲存 n 維向量,以及計算兩者之間的數值距離。 有效率的語意搜尋需要向量資料庫功能。
Embeddings
內嵌是語意的數值表示法。 內嵌以 n 維向量表示:n 個數字的陣列。 每個維度都代表內嵌模型決定的部分語意品質。
如果兩個內嵌向量指向類似的方向,則它們代表類似的概念,例如「明亮」和「陽光普照」。如果他們方向相反則代表相反的概念,例如「悲傷」和「快樂」。內嵌模型結構和訓練資料會決定視為類似和不同的定義。
內嵌可以套用至文字和任何類型的資料,例如影像或音訊。 關鍵在於根據某些模型或函式,將資料轉換成 n 維內嵌向量。 內嵌的數值相似性,代表其對應資料的語意相似性。
兩個 n 維向量 v1
和 v2
的數值相似度,是由其點乘積所指定,寫成 v1·v2
。 若要計算點乘積,請將每個維度的值組相乘,然後加總結果:
dot_product(v1, v2) = SUM(
v1[0] * v2[0] +
v1[1] * v2[1],
...,
v1[n-1] * v2[n-1],
v1[n] * v2[n]
)
由於內嵌是單位向量 (長度一的向量),因此點乘積等於向量的餘弦相似性,亦即介於 -1 (方向正好相反) 和 1 之間 (方向完全相同) 的值。 餘弦相似性為零的向量為正交:語意不相關。
使用主體元件分析 (PCA) 將它們投影至 3 維空間,即可將 n 維空間視覺化。 PCA 是減少向量維度的標準技術。 結果是視覺化的簡化 n 維空間投影。 以這種方式轉譯文件內嵌會顯示,較類似的文件以叢集的方式分組,而較不同的文件則距離更遠。
根據這些定義,針對文件內嵌集合執行查詢的語意搜尋是單純的數學問題:
- 使用語言模型產生查詢內嵌。
- 根據每個文件的預先計算內嵌,取得查詢內嵌的點乘積。
- 排序點乘積,數字從 -1 到 1。
- 最相關的 (語意相似) 文件分數最高,而最不相關的 (語意不同的) 文件則分數最低。
雖然是簡單的數學問題,但這不是關聯式資料庫中的簡單或高效能查詢。 若要儲存及處理這類向量相似性查詢,請使用向量資料庫。
向量資料庫
向量資料庫會最佳化多維度向量的儲存和計算,例如內嵌。 特別是,向量資料庫提供快速精確的點乘積計算,可執行向量相似性查詢。
向量相似性搜尋有數個使用案例:
- 尋找類似查詢影像內嵌的影像
- 尋找語意與查詢文字類似的文件
- 尋找具有類似建議系統功能和評等的產品
語意搜尋會查詢向量資料庫,取得查詢內嵌與每個儲存內嵌的相似度。 然後,應用程式便可擷取與內嵌相應的資料。
有許多原生向量資料庫和資料庫延伸模組可供選擇。 下列 Azure 服務可協助您滿足向量資料庫需求: