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%"
等基本 SQL 查询不会返回 complaints
字段仅包含 The picture shows a blue one, but the one I received was red
的行。
使用 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 配置为与 Vertex AI 搭配使用,然后才能通过 AlloyDB 数据库生成嵌入。如需了解详情,请参阅将数据库与 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');