エラーハンドラー拡張ポイントの作成

  • リリースバージョン: Zurich
  • 更新日 2025年07月31日
  • 所要時間:5分
  • スクリプト化された拡張ポイントを作成して、 AI 検索 検索拡張生成 (RAG) アプリケーションのカスタム埋め込みモデルがセマンティックベクトルを生成するときに発生する埋め込み生成エラーを処理します。

    始める前に

    必要なロール:admin

    このタスクについて

    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. [Update (更新)] を選択します。