오류 핸들러 확장점 생성

  • 릴리스 버전: Zurich
  • 업데이트 날짜 2025년 07월 31일
  • 소요 시간: 5분
  • 스크립팅된 확장점을 작성하여 ()RAG 애플리케이션의 사용자 지정 임베딩 모델이 의미 체계 벡터를 AI 검색 검색 증강 생성 생성할 때 발생하는 임베딩 생성 오류를 처리합니다.

    시작하기 전에

    필요한 역할: 관리자

    이 태스크 정보

    BYOMEmbeddingGenerationErrorHandler스크립트를 사용하면 임베딩이 생성될 때 재시도 로직을 제어하고, 배치 실패를 처리하고, 구절을 수정할 수 있습니다. 이러한 전략은 대규모 의미 체계 인덱싱 파이프라인의 성능을 개선하는 데 도움이 됩니다.

    프로시저

    1. 다음으로 이동 모두 > 시스템 확장점 > 스크립팅된 확장점.
    2. API 이름 필드에서 BYOMEmbeddingGenerationErrorHandler 확장점을 검색하여 선택합니다.
    3. 관련 링크에서 구현 만들기를 선택합니다.
    4. 스크립트 포함 양식에서 필요에 따라 스크립트를 업데이트합니다.
      1. 사용자 지정 임베딩 모델에서 임베딩 생성 오류를 관리하려면 확장점 스크립트에서 process(inputParams) 메서드를 정의합니다. 이 메서드는 미리 정의된 오류 범주를 기반으로 하는 구조화된 응답을 반환해야 합니다.
        var BYOMEmbeddingGenerationErrorHandler = Class.create();
        BYOMEmbeddingGenerationErrorHandler.prototype = {
            initialize: function() {},
        
            process: function(inputParams) {
                var responseStatus = inputParams.responseStatus;
                var responseErrorCode = parseInt(inputParams.responseErrorCode);
                var responseBody = inputParams.responseBody;
                var responseHeaders = inputParams.responseHeaders;
                var responseErrorMessage = inputParams.responseErrorMessage;
                var passages = inputParams.passages;
                var maxTokens = inputParams.maxTokens;
                var additionalParams = {};
        
                var response = BYOMEmbeddingUtil.buildErrorResponse(
                    BYOMEmbeddingUtil.ErrorCodeEnum.UNKNOWN_ERROR,
                    "unknown error",
                    additionalParams
                );
        
      2. 오류를 분류하려면 BYOMEmbeddingUtil.ErrorCodeEnum 코드를 사용합니다.
        
        BYOMEmbeddingUtil.ErrorCodeEnum = {
            REQUEST_SIZE_TOO_LARGE_ERROR: "RequestSizeTooLargeError",        // Reduce batch size and retry
            RATE_LIMIT_ERROR: "RateLimitError",                              // Retry without reducing batch size
            PASSAGE_SIZE_TOO_LARGE_ERROR: "PassageSizeTooLargeError",        // Retry with reduced passage size
            UNKNOWN_ERROR: "UnknowError",                                     // Ignore this run; retry in next job
            SKIP_BATCH_ERROR: "SkipBatchError",                              // Skip the entire batch, no retry
            UPDATE_PASSAGE_CONTENT_ERROR: "UpdatePassageContentError",       // Retry with updated passage content
            RETRY_SKIP_ON_FAIL_ERROR: "RetrySkipOnFailError"                 // Retry with backoff; skip on failure
        };
        
      3. buildErrorResponse에 허용되는 필드에는 다음과 같은 유형의 오류 코드가 포함됩니다.
        
        var allowedFieldsByErrorCode = {
            REQUEST_SIZE_TOO_LARGE_ERROR: ['error_code', 'error_message'],
            RATE_LIMIT_ERROR: ['error_code', 'error_message', 'retry_after_seconds'],
            PASSAGE_SIZE_TOO_LARGE_ERROR: ['error_code', 'error_message', 'passages'],
            UNKNOWN_ERROR: ['error_code', 'error_message'],
            SKIP_BATCH_ERROR: ['error_code', 'error_message'],
            UPDATE_PASSAGE_CONTENT_ERROR: ['error_code', 'error_message', 'passages'],
            RETRY_SKIP_ON_FAIL_ERROR: ['error_code', 'error_message']
        };
        
      4. 다음 표에서는 오류 코드와 해당 재시도 전략에 대해 설명합니다.
        오류 코드 설명 재시도 전략
        REQUEST_SIZE_TOO_LARGE_ERROR 배치가 너무 큼 배치 크기를 줄이고 기하급수적으로 재시도합니다.
        RATE_LIMIT_ERROR 요율 제한에 도달함 retry_after_seconds 기다렸다가 다시 시도합니다.
        PASSAGE_SIZE_TOO_LARGE_ERROR 통로가 너무 큼 통로 길이(보통 절반)를 줄인 다음 다시 시도합니다.
        UNKNOWN_ERROR 알 수 없는 문제 이 실행 재시도를 건너뛰고 예약된 다음 작업에서 자동으로 재시도합니다.
        SKIP_BATCH_ERROR 일괄 처리로 복구할 수 없는 문제 재시도 없이 전체 배치를 건너뜁니다.
        UPDATE_PASSAGE_CONTENT_ERROR 수정된 콘텐츠로 재시도 응답에서 수정된 구절을 사용하고 다시 시도합니다.
        RETRY_SKIP_ON_FAIL_ERROR 재시도 후 건너뛰기 지정된 재시도 횟수에 대한 대기 시간을 늘려 재시도합니다.
    5. 업데이트를 선택합니다.