本文档介绍了在使用 优化型 AI 函数时可能遇到的错误。 还提供了错误示例和建议的修复方法。
预计性能会降低。优化型 AI 函数不可用
说明
此警告表示查询回退到使用 LLM。如果优化型函数仍在训练、从未准备好、未能通过运行时准确率验证检查,或者 ai.if()
函数中引用的内容列和嵌入列不属于同一表,则会发生这种情况。对于较小的表,代理模型可能无法很好地泛化,准确率通常低于 95%,因此
AlloyDB 默认使用 LLM。
导致错误的查询示例
EXECUTE positive_reviews_query;
建议的修复方法
- 等待优化型函数训练完成。
- 确保使用
PREPARE语句正确准备查询。 - 验证
ai.if()函数中引用的内容列和嵌入列是否属于同一表。 - 优化型函数 (预览版) 更适合较大的表。您还可以使用 基于数组的 AI 函数 来提高性能。
如果您想绕过运行时准确率检查(例如在开发环境中),请为整个数据库环境将
google_ml_integration.runtime_accuracy_check设置为off。ALTER DATABASE DATABASE_NAME SET google_ml_integration.runtime_accuracy_check = off;将
DATABASE_NAME替换为您的数据库的名称。
查询未处理任何行或模型准备失败
说明
如果查询未处理任何行,主要原因是未生成嵌入,或者整个嵌入列具有 NULL 值。这会导致查询准备失败,因为它不会对具有 NULL
嵌入的任何行进行抽样。
建议的修复方法
- 在使用优化型函数之前,为您的数据生成嵌入。
- 确保嵌入列不包含
NULL值。 - 仅在
WHERE子句中的常量值不同的查询可能仍会使用现有的训练模型。
尽管使用了优化型 AI 函数,但性能仍然很慢
说明
确保您未超出 Gemini Enterprise Agent Platform 配额。即使使用优化型 AI 函数,初始运行时准确率检查也需要为行样本调用远程 LLM。配额不足可能会导致此初始检查速度缓慢或失败。
建议的修复方法
检查您的 Agent Platform 配额,并在必要时申请增加配额,以确保初始运行时准确率检查可以顺利进行。
错误:函数 ai.if(prompt => text, embedding => vector) 不存在
说明
如果您在调用 ai.if() 函数时传递 model_id 参数以及嵌入列,AlloyDB 不会使用训练的代理模型,而是会生成类似于以下内容的错误:
testdb=# select ai.if('Is the rating positive?' || review, review_embedding, 'gemini-2.5-pro') from restaurant_reviews;
ERROR: function ai.if(text, vector, unknown) does not exist
LINE 1: select ai.if('Is the rating positive?' || review, review_embe...
^
HINT: No function matches the given name and argument types. You might need to add explicit type casts.
建议的修复方法
确保在调用 ai.if() 函数时未传递 model_id 值。这可确保 AlloyDB 使用训练的代理模型来处理查询。