嵌入和向量搜尋簡介

本文將概要說明 BigQuery 中的嵌入和向量搜尋功能。向量搜尋是一種技術,可使用嵌入項目比較相似的物件,並用於支援 Google 搜尋、YouTube 和 Google Play 等 Google 產品。您可以使用向量搜尋大規模執行搜尋。使用向量搜尋功能時,您可以搭配向量索引,充分運用反向檔案索引 (IVF) 和 ScaNN 演算法等基礎技術。

向量搜尋是以嵌入為基礎建構而成。嵌入是指高維度數值向量,代表特定實體,例如一段文字或音訊檔案。機器學習 (ML) 模型會使用嵌入技術,將這類實體的語意編碼,方便推理及比較。舉例來說,在分群、分類和建議模型中,常見的作業是測量嵌入空間中向量之間的距離,找出語意上最相似的項目。

當您考量如何繪製不同項目時,就能以視覺化方式瞭解嵌入空間中的語意相似度和距離。舉例來說,獅子等字詞都代表動物類型,因此在這個空間中會因語意特徵相似而緊密相連。同樣地,「汽車」、「卡車」和較籠統的「車輛」等字詞會形成另一個群組。如下圖所示:

語意相似的概念 (例如「貓」、「狗」和「獅子」,或是「車」、「卡車」和「車輛」) 在嵌入空間中會彼此靠近。

您會發現動物和車輛叢集彼此相距甚遠。群組之間的間隔說明瞭以下原則:物件在嵌入空間中的距離越近,語意相似度就越高;距離越遠,語意相似度就越低。

用途

結合嵌入生成和向量搜尋功能,可實現許多有趣的使用案例。以下列舉幾個可能的應用實例:

  • 檢索增強生成 (RAG) 在 BigQuery 中剖析文件、對內容執行向量搜尋,並使用 Gemini 模型生成自然語言問題的摘要答案。如需說明這個情境的筆記本,請參閱「使用 BigQuery DataFrames 建構向量搜尋應用程式」。
  • 推薦替代或相符產品:根據顧客行為和產品相似度,建議替代產品,提升電子商務應用程式的效能。
  • 記錄檔分析:協助團隊主動分類記錄檔中的異常狀況,並加快調查速度。您也可以使用這項功能,為 LLM 增補情境資訊,以改善威脅偵測、鑑識和疑難排解工作流程。如要查看說明這個情境的筆記本,請參閱「Log Anomaly Detection & Investigation with Text Embeddings + BigQuery Vector Search」。
  • 分群和指定目標:精確區隔目標對象。舉例來說,連鎖醫院可使用自然語言附註和結構化資料將病患分群,行銷人則可根據查詢意圖指定廣告。如需說明這個情境的筆記本,請參閱「Create-Campaign-Customer-Segmentation」。
  • 實體解析和重複資料刪除:清理及彙整資料。 舉例來說,廣告公司可以對個人識別資訊 (PII) 記錄進行重複資料刪除,房地產公司則可找出相符的郵寄地址。

生成嵌入項目

以下各節說明 BigQuery 提供的函式,可協助您生成或使用嵌入項目。

生成單一嵌入

您可以搭配使用 AI.EMBED 函式和 Vertex AI 嵌入模型,為輸入內容生成單一嵌入。

AI.EMBED 函式支援下列輸入類型:

生成嵌入項目表格

您可以使用 AI.GENERATE_EMBEDDING 建立表格,其中包含輸入表格中某個資料欄的所有資料嵌入。對於所有類型的支援模型,AI.GENERATE_EMBEDDING 都能處理標準資料表中的結構化資料。如果是多模態嵌入模型,AI.GENERATE_EMBEDDING 也適用於來自標準資料表資料欄 (包含 ObjectRef 值)物件資料表的視覺內容。

如果是遠端模型,所有推論作業都會在 Vertex AI 中進行。如果是其他模型類型,所有推論作業都會在 BigQuery 中進行。結果會儲存在 BigQuery 中。

請參閱下列主題,瞭解如何在 BigQuery ML 中產生嵌入內容:

自主生成嵌入內容

您可以使用自主嵌入生成功能,簡化建立、維護及查詢嵌入內容的程序。BigQuery 會根據來源資料欄,在資料表上維護嵌入項目的資料欄。在來源資料欄中新增或修改資料時,BigQuery 會使用 Vertex AI 嵌入模型,自動為該資料產生或更新嵌入資料欄。如果來源資料會定期更新,這項功能就非常實用,可讓 BigQuery 維護您的嵌入內容。

可用的搜尋功能如下:

  • VECTOR_SEARCH: 使用 SQL 執行向量搜尋。

  • AI.SEARCH (預覽): 搜尋與您提供的字串相近的結果。如果資料表已啟用自主嵌入生成功能,即可使用這項函式。

  • AI.SIMILARITY (預覽版): 計算兩個輸入內容的嵌入向量之間的餘弦相似度,藉此比較兩者。如果您想執行少量比較,且尚未預先計算任何嵌入內容,就很適合使用這項函式。如果效能至關重要,且您要處理大量嵌入內容,就應該使用 VECTOR_SEARCH比較這些函式的功能,選擇最適合您用途的函式。

您也可以選擇使用 CREATE VECTOR INDEX 陳述式建立向量索引。使用向量索引時,VECTOR_SEARCHAI.SEARCH 函式會採用近似最鄰近搜尋技術,提升向量搜尋成效,但會降低召回率,因此傳回的結果會更近似。如果沒有向量索引,這些函式會使用暴力搜尋來測量每筆記錄的距離。您也可以選擇使用暴力搜尋法,即使有向量索引,也能取得確切結果。

定價

VECTOR_SEARCHAI.SEARCH 函式以及 CREATE VECTOR INDEX 陳述式會採用 BigQuery 計算定價

  • VECTOR_SEARCHAI.SEARCH 函式:系統會根據以量計價或版本計價方式,收取相似性搜尋費用。

    • 以量計價:系統會根據掃描的位元組數向您收費,包括基本資料表、索引和搜尋查詢。
    • 方案價格:系統會根據預留方案中完成工作所需的運算單元向您收費。如果相似度計算的範圍較大或較複雜,費用就會較高。

  • CREATE VECTOR INDEX聲明:只要索引資料表資料的總大小低於機構的限制,建立及重新整理向量索引所需的處理作業就不會產生費用。如要支援超出此限制的索引作業,您必須自行預留資源,以處理索引管理作業。

儲存空間也是嵌入和索引的考量因素。以嵌入和索引形式儲存的位元組數量,會產生動態儲存費用

  • 向量索引處於有效狀態時會產生儲存空間費用。
  • 您可以使用 INFORMATION_SCHEMA.VECTOR_INDEXES 檢視畫面找出索引儲存空間大小。如果向量索引的涵蓋範圍尚未達到 100%,系統仍會針對已建立索引的內容向您收費。您可以使用 INFORMATION_SCHEMA.VECTOR_INDEXES 檢視畫面檢查索引涵蓋範圍。

配額與限制

詳情請參閱「向量索引限制」和「生成式 AI 函式限制」。

限制

含有 VECTOR_SEARCHAI.SEARCH 函式的查詢不會透過 BigQuery BI Engine 加速。

後續步驟