최적화된 함수 문제 해결

이 문서에서는 최적화된 AI 함수를 사용할 때 발생할 수 있는 오류를 설명합니다. 오류의 예시와 권장 해결 방법도 제공됩니다.

성능 저하가 예상됨 최적화된 AI 함수를 사용할 수 없음

설명

이 경고는 쿼리가 LLM을 사용하도록 대체되었음을 나타냅니다. 이는 최적화된 함수가 아직 학습 중이거나, 준비되지 않았거나, 런타임 정확도 검증 체크에 실패했거나, ai.if() 함수에서 참조된 콘텐츠 및 임베딩 열이 동일한 테이블에 속하지 않는 경우에 발생합니다. 작은 테이블의 경우 프록시 모델이 잘 일반화되지 않을 수 있으며 정확도는 일반적으로 95% 미만이므로 AlloyDB는 기본적으로 LLM을 사용합니다.

오류를 유발하는 샘플 쿼리

EXECUTE positive_reviews_query;
  • 최적화된 함수 학습이 완료될 때까지 기다립니다.
  • PREPARE 문을 사용하여 쿼리가 올바르게 준비되었는지 확인합니다.
  • ai.if() 함수에서 참조된 콘텐츠 및 임베딩 열이 동일한 테이블에 속하는지 확인합니다.
  • 최적화된 함수 (미리보기)는 더 큰 테이블에 더 적합합니다. 배열 기반 AI 함수를 사용하여 성능을 개선할 수도 있습니다.
  • 런타임 정확도 검사를 우회하려면 (예: 개발 환경에서) 전체 데이터베이스 환경에 대해 google_ml_integration.runtime_accuracy_checkoff로 설정합니다.

    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는 학습된 프록시 모델을 사용하지 않고 다음과 유사한 오류를 생성합니다.

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가 학습된 프록시 모델을 사용하여 쿼리를 처리합니다.