google_ml_integration 扩展程序包含两个不同命名空间(public 和 google_ml)中的嵌入函数。本页面介绍了如何使用这些命名空间中的函数生成文本嵌入。
public 架构中的 embedding() 函数可与任何 Vertex AI 嵌入模型搭配使用,而无需注册端点。如果您想传递任何自定义信息(例如任务类型),请注册端点,然后在 google_ml 架构中使用 google_ml.embedding() 函数。如需详细了解如何注册端点,请参阅注册模型。
嵌入工作原理
假设某个数据库在 AlloyDB Omni 上运行,具有以下特点:
该数据库包含一个表:
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 Omni 生成嵌入,请执行以下操作:
-
以
postgres用户身份运行并连接到 AlloyDB Omni。 -
验证
google_ml_integration扩展程序是否已安装。CREATE EXTENSION IF NOT EXISTS google_ml_integration CASCADE;
如果您没有必要的权限,请与数据库管理员联系以执行更新。或者,您也可以等待系统自动将新版本发布到您的集群。
-
验证
google_ml_integration.enable_model_support标志是否已设置为on。 - 您必须先将 AlloyDB Omni 配置为与 Vertex AI 搭配使用,然后才能通过 AlloyDB Omni 数据库生成嵌入。
-
为数据库用户授予执行嵌入函数以生成嵌入的权限:
\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 Omni 集群和 Vertex AI 端点位于不同的项目中,请执行以下操作:
运行以下
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' );如需为已注册的
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');