google_ml_integration
擴充功能會在兩個不同的命名空間中嵌入函式:public
和 google_ml
。本頁說明如何使用這些命名空間中的函式生成文字嵌入。
public
架構中的 embedding()
函式可搭配任何 Vertex AI 嵌入模型使用,無須註冊端點。如要傳遞任何自訂資訊 (例如工作類型),請註冊端點,然後在 google_ml
結構定義中使用 google_ml.embedding()
函式。如要進一步瞭解如何註冊端點,請參閱「註冊模型」。
嵌入的運作方式
假設在 AlloyDB 上執行的資料庫具有下列特性:
資料庫包含資料表
items
。這份表格的每一列都說明貴商家銷售的項目。items
資料表包含complaints
資料欄。這個TEXT
欄會儲存買家對各個項目的申訴記錄。資料庫會與 Vertex AI Model Garden 整合,因此可存取
gemini-embedding-001
英文模型。
雖然這個資料庫會儲存有關項目的申訴內容,但這些申訴內容會以純文字形式儲存,因此難以查詢。舉例來說,如要查看收到錯誤顏色商品的顧客最常抱怨哪些項目,您可以在資料表上執行一般 SQL 查詢,尋找各種關鍵字相符項目。不過,這種做法只會比對包含這些完全相符關鍵字的資料列。
舉例來說,如果 SELECT * FROM item WHERE complaints LIKE
"%wrong color%"
欄位只包含 The picture shows a blue one, but the one I received was red
,則 SELECT * FROM item WHERE complaints LIKE
"%wrong color%"
等基本 SQL 查詢不會傳回資料列。complaints
使用 LLM 輔助嵌入的 SQL 查詢,有助於針對這類查詢傳回語意相似的回覆。套用嵌入後,您可以在這個範例中查詢資料表,找出與指定文字提示 (例如 It was the
wrong color
) 語意相似的項目。
如要產生嵌入,請選取下列其中一個結構定義。
事前準備
如要讓 AlloyDB 生成嵌入內容,請按照下列步驟操作:
- 使用
psql
或 AlloyDB for PostgreSQL Studio,以postgres
使用者身分連線至資料庫。 - 確認已安裝
google_ml_integration
擴充功能。 - 確認
google_ml_integration.enable_model_support
標記已設為on
。 - 如要從 AlloyDB 資料庫產生嵌入,必須先設定 AlloyDB 與 Vertex AI 搭配運作。詳情請參閱「整合資料庫與 Vertex AI」。
授予資料庫使用者執行嵌入函式的權限,以生成嵌入內容:
\c DB_NAME; GRANT EXECUTE ON FUNCTION google_ml.embedding TO USER_NAME;
更改下列內容:
DB_NAME:要授予權限的資料庫名稱
USER_NAME:要授予權限的使用者名稱
生成嵌入項目
使用 google_ml.embedding()
SQL 函式呼叫文字嵌入模型。
如要呼叫模型並生成嵌入,請執行下列查詢:
SELECT
google_ml.embedding(
model_id => 'MODEL_ID',
content => 'CONTENT');
更改下列內容:
MODEL_ID
:合格的模型 ID,例如gemini-embedding-001
。CONTENT
:要翻譯成向量嵌入的文字。
生成嵌入的範例
本節列出一些範例,說明如何使用已註冊的模型端點生成嵌入。
Gemini 嵌入模型
如要為已註冊的 gemini-embedding-001
模型端點產生嵌入內容,請執行下列陳述式:
SELECT
google_ml.embedding(
model_id => 'gemini-embedding-001',
content => 'AlloyDB is a managed, cloud-hosted SQL database service');
如果 AlloyDB 叢集和 Vertex AI 端點位於不同專案,請將 model_id
設為端點的合格路徑,例如 projects/PROJECT_ID/locations/REGION_ID/publishers/google/models/gemini-embedding-001
。
如要為已註冊的 gemini-embedding-001
模型端點產生嵌入內容,請執行下列陳述式:
SELECT
google_ml.embedding(
model_id => 'gemini-embedding-001',
content => 'AlloyDB is a managed, cloud-hosted SQL database service');
OpenAI 嵌入模型
如要為 OpenAI 的已註冊text-embedding-ada-002
模型端點產生嵌入內容,請執行下列陳述式:
SELECT
google_ml.embedding(
model_id => 'text-embedding-ada-002',
content => 'e-mail spam');
如要為 OpenAI 註冊的 text-embedding-3-small
或 text-embedding-3-large
模型端點產生嵌入內容,請執行下列陳述式:
SELECT
google_ml.embedding(
model_id => 'text-embedding-3-small',
content => 'Vector embeddings in AI');