了解語意搜尋

已完成

立即了解語意搜尋的基本概念:

  • 它與標準語彙搜尋有何不同。
  • 什麼是向量內嵌?
  • 向量資料庫的功能為何?

標準語彙搜尋或關鍵字搜尋透過比對字元的方式查詢文件。 例如,查詢「light」會比對文字「bright light」,因為字元 light 出現在文件中。

語彙搜尋可以透過模糊比對的方式增強;例如,查詢「lights」仍然可能比對文字「bright light」或拼錯的 lihgts,因為差一個字元 (遺漏 s, 或交換 gh)。 雖然模糊比對和其他技術,例如詞幹分析很實用,但這項技術必須符合同義字或語意類似的語言:不同的片語、俚語、技術詞彙等。若要利用語彙搜尋提供最相關的搜尋結果,作者必須在中繼資料或文字本身內嵌關鍵字 (可能是尷尬的使用者體驗)。

語意搜尋登場。 語意搜尋不利用字元相似性。 相反地,它使用單字和片語概念的數值表示法。 這些數值表示法稱為內嵌向量,或單純稱為內嵌

如果兩個內嵌的數值相似,則語意也類似。 這種相似性比測試關鍵字重疊範圍更廣,因為它對精確的關鍵字選取或用字遣詞較不敏感。

若要執行語意搜尋,請先產生查詢的內嵌向量。 然後,比較該向量與向量資料庫。 最接近查詢內嵌的內嵌是語意與查詢最相似的文件。

大部分的關聯式資料庫使用案例不必儲存 n 維向量,以及計算兩者之間的數值距離。 有效率的語意搜尋需要向量資料庫功能。

此圖顯示透過 OpenAI 內嵌 API 變成內嵌向量的文件和查詢。接著會使用餘弦距離比較這些向量。

Embeddings

內嵌是語意的數值表示法。 內嵌以 n 維向量表示:n 個數字的陣列。 每個維度都代表內嵌模型決定的部分語意品質。

圖表會顯示傳送至 Azure OpenAI 內嵌 API 的“lorem ipsum” 輸入文字,會導致數字的向量陣列。

如果兩個內嵌向量指向類似的方向,則它們代表類似的概念,例如「明亮」和「陽光普照」。如果他們方向相反則代表相反的概念,例如「悲傷」和「快樂」。內嵌模型結構和訓練資料會決定視為類似和不同的定義。

內嵌可以套用至文字和任何類型的資料,例如影像或音訊。 關鍵在於根據某些模型或函式,將資料轉換成 n 維內嵌向量。 內嵌的數值相似性,代表其對應資料的語意相似性。

兩個 n 維向量 v1v2 的數值相似度,是由其點乘積所指定,寫成 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. 使用語言模型產生查詢內嵌。
  2. 根據每個文件的預先計算內嵌,取得查詢內嵌的點乘積。
  3. 排序點乘積,數字從 -1 到 1。
  4. 最相關的 (語意相似) 文件分數最高,而最不相關的 (語意不同的) 文件則分數最低。

雖然是簡單的數學問題,但這不是關聯式資料庫中的簡單或高效能查詢。 若要儲存及處理這類向量相似性查詢,請使用向量資料庫

向量資料庫

向量資料庫會最佳化多維度向量的儲存和計算,例如內嵌。 特別是,向量資料庫提供快速精確的點乘積計算,可執行向量相似性查詢。

向量相似性搜尋有數個使用案例:

  • 尋找類似查詢影像內嵌的影像
  • 尋找語意與查詢文字類似的文件
  • 尋找具有類似建議系統功能和評等的產品

語意搜尋會查詢向量資料庫,取得查詢內嵌與每個儲存內嵌的相似度。 然後,應用程式便可擷取與內嵌相應的資料。

有許多原生向量資料庫和資料庫延伸模組可供選擇。 下列 Azure 服務可協助您滿足向量資料庫需求: