本文說明使用最佳化 AI 函式時可能遇到的錯誤。同時提供錯誤範例和建議的修正方式。
預期效能會降低。無法使用最佳化 AI 函式
說明
這項警告表示查詢已改用 LLM。如果最佳化函式仍在訓練中、從未準備完成、未通過執行階段準確度驗證檢查,或是 ai.if() 函式參照的內容和嵌入資料欄不屬於同一個資料表,就會發生這種情況。如果是較小的資料表,Proxy 模型可能無法妥善泛化,準確度通常低於 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 配額,並視需要要求增加配額,確保初始執行階段準確率檢查能順利進行。
ERROR: function ai.if(prompt => text, embedding => vector) does not exist
說明
如果您在呼叫 ai.if() 函式時,一併傳遞 model_id 參數和嵌入資料欄,AlloyDB 就不會使用訓練過的 Proxy 模型,並產生類似下列的錯誤:
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 使用訓練好的 Proxy 模型處理查詢。