生成文本嵌入

google_ml_integration 扩展程序包含两个不同命名空间(publicgoogle_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%" 等基本 SQL 查询不会返回 complaints 字段仅包含 The picture shows a blue one, but the one I received was red 的行。

使用 LLM 支持的嵌入的 SQL 查询可以帮助针对此类查询返回语义上相似的回答。通过应用嵌入,您可以在此示例的表中查询其投诉与给定文本提示(例如 It was the wrong color)具有语义相似度的商品。

如需生成嵌入,请选择以下架构之一。

准备工作

如需让 AlloyDB 生成嵌入,请执行以下操作:

生成嵌入

使用 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-smalltext-embedding-3-large 模型端点生成预测,请运行以下语句:

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

后续步骤