生成文字嵌入

google_ml_integration 擴充功能包含兩個不同命名空間的嵌入函式:publicgoogle_ml。本頁說明如何使用這些命名空間中的函式生成文字嵌入。

public 架構中的 embedding() 函式可搭配任何 Gemini Enterprise Agent Platform 嵌入模型使用,無須註冊端點。如要傳遞任何自訂資訊 (例如工作類型),請註冊端點,然後在 google_ml 結構定義中使用 google_ml.embedding() 函式。如要進一步瞭解如何註冊端點,請參閱「註冊模型」。

嵌入的運作方式

假設在 AlloyDB 上執行的資料庫具有下列特性:

  • 資料庫包含資料表 items。這份表格的每一列都說明貴商家銷售的項目。

  • items 資料表包含 complaints 資料欄。這個 TEXT 欄會儲存買家對各個項目的申訴記錄。

  • 資料庫與 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 擴充功能

    如要使用下列指令檢查擴充功能版本:

    SELECT extversion FROM pg_extension WHERE extname = 'google_ml_integration';
    

    如要更新擴充功能,請使用 ALTER EXTENSION google_ml_integration UPDATE; 指令。

  • 如要從 AlloyDB 資料庫產生嵌入,必須先設定 AlloyDB,才能與 Agent Platform 搭配使用。詳情請參閱「將資料庫與 Agent Platform 整合」。

  • 授予資料庫使用者產生嵌入內容的權限。

    如要生成嵌入,請將 google_ml.embedding 函式的 EXECUTE 權限授予使用者:

    \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 叢集和 Gemini Enterprise Agent Platform 端點位於不同專案,請按照下列步驟操作:

  1. 執行下列 CALL 陳述式。

       CALL
         google_ml.create_model(
           model_id => 'gemini-embedding-001',
           model_request_url => 'https://REGION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/REGION_ID/publishers/google/models/gemini-embedding-001:predict',
           model_provider => 'google',
           model_type => 'text_embedding',
           model_auth_type => 'alloydb_service_agent_iam',
           model_in_transform_fn => 'google_ml.vertexai_text_embedding_input_transform',
           model_out_transform_fn => 'google_ml.vertexai_text_embedding_output_transform'
         );
    
  2. 如要為已註冊的 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-smalltext-embedding-3-large 模型端點產生嵌入內容,請執行下列陳述式:

 SELECT
   google_ml.embedding(
     model_id => 'text-embedding-3-small',
     content => 'Vector embeddings in AI');

後續步驟