嵌入和向量搜尋簡介
本文將概要說明 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 函式支援下列輸入類型:
- 文字資料。
- 以
ObjectRef值表示的圖片資料。(預覽) - 以
ObjectRefRuntime值表示的圖片資料。
生成嵌入項目表格
您可以使用
AI.GENERATE_EMBEDDING
建立表格,其中包含輸入表格中某個資料欄的所有資料嵌入。對於所有類型的支援模型,AI.GENERATE_EMBEDDING 都能處理標準資料表中的結構化資料。如果是多模態嵌入模型,AI.GENERATE_EMBEDDING 也適用於來自標準資料表資料欄 (包含 ObjectRef 值) 或物件資料表的視覺內容。
如果是遠端模型,所有推論作業都會在 Vertex AI 中進行。如果是其他模型類型,所有推論作業都會在 BigQuery 中進行。結果會儲存在 BigQuery 中。
請參閱下列主題,瞭解如何在 BigQuery ML 中產生嵌入內容:
- 使用
AI.GENERATE_EMBEDDING函式生成文字、圖片或影片。 - 生成及搜尋多模態嵌入
- 執行語意搜尋和檢索增強生成
自主生成嵌入內容
您可以使用自主嵌入生成功能,簡化建立、維護及查詢嵌入內容的程序。BigQuery 會根據來源資料欄,在資料表上維護嵌入項目的資料欄。在來源資料欄中新增或修改資料時,BigQuery 會使用 Vertex AI 嵌入模型,自動為該資料產生或更新嵌入資料欄。如果來源資料會定期更新,這項功能就非常實用,可讓 BigQuery 維護您的嵌入內容。
搜尋
可用的搜尋功能如下:
VECTOR_SEARCH: 使用 SQL 執行向量搜尋。AI.SIMILARITY(預覽版): 計算兩個輸入內容的嵌入向量之間的餘弦相似度,藉此比較兩者。如果您想執行少量比較,且尚未預先計算任何嵌入內容,就很適合使用這項函式。如果效能至關重要,且您要處理大量嵌入內容,就應該使用VECTOR_SEARCH。比較這些函式的功能,選擇最適合您用途的函式。
您也可以選擇使用 CREATE VECTOR INDEX 陳述式建立向量索引。使用向量索引時,VECTOR_SEARCH 和 AI.SEARCH 函式會採用近似最鄰近搜尋技術,提升向量搜尋成效,但會降低召回率,因此傳回的結果會更近似。如果沒有向量索引,這些函式會使用暴力搜尋來測量每筆記錄的距離。您也可以選擇使用暴力搜尋法,即使有向量索引,也能取得確切結果。
定價
VECTOR_SEARCH 和 AI.SEARCH 函式以及 CREATE VECTOR INDEX 陳述式會採用 BigQuery 計算定價。
VECTOR_SEARCH和AI.SEARCH函式:系統會根據以量計價或版本計價方式,收取相似性搜尋費用。- 以量計價:系統會根據掃描的位元組數向您收費,包括基本資料表、索引和搜尋查詢。
方案價格:系統會根據預留方案中完成工作所需的運算單元向您收費。如果相似度計算的範圍較大或較複雜,費用就會較高。
CREATE VECTOR INDEX聲明:只要索引資料表資料的總大小低於機構的限制,建立及重新整理向量索引所需的處理作業就不會產生費用。如要支援超出此限制的索引作業,您必須自行預留資源,以處理索引管理作業。
儲存空間也是嵌入和索引的考量因素。以嵌入和索引形式儲存的位元組數量,會產生動態儲存費用。
- 向量索引處於有效狀態時會產生儲存空間費用。
- 您可以使用
INFORMATION_SCHEMA.VECTOR_INDEXES檢視畫面找出索引儲存空間大小。如果向量索引的涵蓋範圍尚未達到 100%,系統仍會針對已建立索引的內容向您收費。您可以使用INFORMATION_SCHEMA.VECTOR_INDEXES檢視畫面檢查索引涵蓋範圍。
配額與限制
詳情請參閱「向量索引限制」和「生成式 AI 函式限制」。
限制
含有 VECTOR_SEARCH 或 AI.SEARCH 函式的查詢不會透過 BigQuery BI Engine 加速。
後續步驟
- 進一步瞭解如何建立向量索引。
- 瞭解如何使用
VECTOR_SEARCH函式執行向量搜尋。 - 瞭解如何使用
AI.SEARCH函式執行語意搜尋。 - 進一步瞭解自主產生嵌入內容。
- 請參閱「使用向量搜尋功能搜尋嵌入」教學課程,瞭解如何建立向量索引,然後使用索引和不使用索引,對嵌入執行向量搜尋。
請試用「執行語意搜尋和檢索增強生成」教學課程,瞭解如何執行下列工作:
- 生成文字嵌入。
- 在嵌入上建立向量索引。
- 使用嵌入執行向量搜尋,尋找相似文字。
- 使用向量搜尋結果增強提示輸入內容,並改善結果,執行檢索增強生成 (RAG)。
請參閱「在檢索增強生成管道中剖析 PDF」教學課程,瞭解如何根據剖析的 PDF 內容建立 RAG 管道。
您也可以在 Python 中使用 BigQuery DataFrames 執行向量搜尋。如需說明此方法的筆記本,請參閱「使用 BigQuery DataFrame 建構向量搜尋應用程式」。