すべてのプロダクト
Search
ドキュメントセンター

OpenSearch:予測クエリ

最終更新日:Apr 21, 2026

仕組み

予測クエリは、Vector Search Edition の組み込み埋め込みモデルを使用して、テキスト、画像、動画などのコンテンツをベクターに変換し、そのベクターに基づいて結果を取得します。

既存のベクターがあり、Vector Search Edition インスタンスで直接クエリを実行したい場合は、「ベクタークエリ」をご参照ください。

エンドポイント

/vector-service/inference-query

  • 上記 URL には、リクエストヘッダー、エンコーディング、その他の要素は含まれていません。

  • このパスの前に、ご利用のインスタンスのホストアドレスを付加する必要があります。

  • 各パラメーターの詳細については、後述の「リクエスト本文のパラメーター」セクションをご参照ください。

リクエストプロトコル

HTTP

リクエストメソッド

POST

サポートされているフォーマット

JSON

認証

次のメソッドを使用して、権限付与の値を計算します:

パラメーター

タイプ

説明

accessUserName

string

ユーザー名。インスタンスのDetails>Network Informationセクションで確認できます。

accessPassWord

string

パスワードです。インスタンスのDetails>Network Information セクションで設定または変更できます。

import com.aliyun.darabonba.encode.Encoder;
import com.aliyun.darabonbastring.Client;

public class GenerateAuthorization {
 public static void main(String[] args) throws Exception {
 String accessUserName = "username";
 String accessPassWord = "password";
 String realmStr = "" + accessUserName + ":" + accessPassWord + "";
 String authorization = Encoder.base64EncodeToString(Client.toBytes(realmStr, "UTF-8"));
 System.out.println(authorization);
 }
}

正しくフォーマットされた権限付与値の例:

cm9vdDp******mdhbA==

HTTP リクエストを行う際は、値の前に `Basic ` を付け、`Authorization` ヘッダーで指定します。

例 (リクエストヘッダー内):

Authorization: Basic cm9vdDp******mdhbA==

リクエスト本文のパラメーター

パラメーター

説明

デフォルト

タイプ

必須

tableName

クエリ対象のテーブル名。

string

はい

indexName

クエリ対象のインデックス名。

最初の設定済みインデックス

string

いいえ

content

クエリコンテンツ。融合ベクター取得を含まないクエリに使用します。

string

はい (融合ベクター取得以外の場合)

contents

クエリコンテンツ項目のリスト。複数のモダリティからのコンテンツをサポートする融合ベクター取得に使用します。

list[string]

はい (融合ベクター取得の場合)

contentType

コンテンツのデータの型。有効値:`text` (テキスト)、`image_encode` (Base64 エンコードされた画像)、`video_uri` (動画の OSS パス)、`video_encode` (Base64 エンコードされた動画)。

フュージョンベクター取得では、各タイプが contents リストの項目に対応するように、text,image_encode のようなカンマ区切りのタイプリストを指定します。

string

いいえ

modal

埋め込みモデルのモダリティ。有効値:`text` (Text-to-Text または Text-to-Image 取得用)、`image` (画像検索用)、`video` (動画取得用、入力としてテキスト、画像、動画をサポート)、`fusion` (融合ベクター取得用、複数のフィールドを単一のベクターにエンコードしてクロスモーダル取得を実現)。

string

はい

videoFrameTopK

動画クエリで取得するフレーム数。

100

int

いいえ

namespace

クエリ対象の名前空間。

""

string

いいえ

topK

返される結果の数。

100

int

いいえ

includeVector

応答にベクターを含めるかどうかを指定します。

false

bool

いいえ

outputFields

応答に含めるフィールドのリスト。

[]

list[string]

いいえ

order

結果のソート順。有効値:ASC (昇順)、DESC (降順)。

ASC

string

いいえ

searchParams

アルゴリズム固有のクエリパラメーター:

""

string

いいえ

filter

検索に適用するフィルター式。

""

string

いいえ

scoreThreshold

スコアに基づいて結果をフィルターします。

ユークリッド距離を使用する場合、`scoreThreshold` より小さいスコアの結果を返します。内積を使用する場合、`scoreThreshold` より大きいスコアの結果を返します。

デフォルトではフィルターなし

float

いいえ

応答パラメーター

フィールド

説明

タイプ

result

一致する項目のリスト。

list[Item]

totalCount

結果リスト内の項目数。

int

totalTime

エンジンの処理時間 (ミリ秒、ms)。

float

errorCode

エラーコード。このフィールドはエラー発生時にのみ表示されます。

int

errorMsg

エラーメッセージ。このフィールドはエラー発生時にのみ表示されます。

string

  • Item オブジェクトの定義

フィールド

説明

タイプ

score

距離スコア。

float

fields

フィールド名とその対応する値のマップ。

map<string, FieldType>

vector

ベクター値。

list[float]

id

プライマリキーの値。型は定義されたフィールドの型と一致します。

FieldType

namespace

ベクターの名前空間。このフィールドは名前空間が設定されている場合にのみ返されます。

string

API 応答には、内部デバッグ目的で __source__coveredPercent などの追加フィールドが含まれる場合があります。これらのフィールドはビジネスロジックに影響を与えないため、無視しても問題ありません。

Text-to-Text 取得

  • リクエスト本文:

    {
      "tableName": "gist",
      "indexName": "test",
      "content": "hello",
      "modal": "text",
      "topK": 3,
      "searchParams":"{\"qc.searcher.scan_ratio\":0.01}",
      "includeVector": true
    }
  • 応答:

    {
      "result":[
        {
          "id": 1,
          "score":1.0508723258972169,
          "vector": [0.1, 0.2, 0.3]
        },
        {
          "id": 2,
          "score":1.0329746007919312,
          "vector": [0.2, 0.2, 0.3]
        },
        {
          "id": 3,
          "score":0.980593204498291,
          "vector": [0.3, 0.2, 0.3]
        }
      ],
      "totalCount":3,
      "totalTime":2.943
    }

画像取得

Text-to-Image 取得

  • リクエスト本文:

    {
      "tableName": "gist",
      "indexName": "test",
      "content": "Bicycle",
      "modal": "text",
      "topK": 3,
      "searchParams":"{\"qc.searcher.scan_ratio\":0.01}",
      "includeVector": true
    }
  • 応答:

    {
      "result":[
        {
          "id": 1,
          "score":1.0508723258972169,
          "vector": [0.1, 0.2, 0.3]
        },
        {
          "id": 2,
          "score":1.0329746007919312,
          "vector": [0.2, 0.2, 0.3]
        },
        {
          "id": 3,
          "score":0.980593204498291,
          "vector": [0.3, 0.2, 0.3]
        }
      ],
      "totalCount":3,
      "totalTime":2.943
    }

画像検索

  • リクエスト本文:

    {
      "tableName": "gist",
      "indexName": "test",
      "content": "base64-encoded image data",
      "modal": "image",
      "topK": 3,
      "searchParams":"{\"qc.searcher.scan_ratio\":0.01}",
      "includeVector": true
    }
  • 応答:

    {
        "totalCount": 5,
        "result": [
            {
                "id": 5,
                "score": 1.103209137916565
            },
            {
                "id": 3,
                "score": 1.1278988122940064
            },
            {
                "id": 2,
                "score": 1.1326735019683838
            }
        ],
        "totalTime": 242.615
    }

主体識別

  • リクエスト本文:

    range パラメーターなしの場合:

    {
     "tableName": "gist",
     "indexName": "test",
     "content": "/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAgGBgcGBQ",
     "modal": "image",
     "searchParams": "{\"crop\": true}",
     "topK": 3,
     "includeVector": true
    }

    注:"crop":true は主体識別を有効にします。`range` パラメーターが指定されていない場合、モデルは自動的に主体を検出します。

    range パラメーターありの場合:

    {
     "tableName": "gist",
     "indexName": "test",
     "content": "/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAgGBgcGBQ",
     "modal": "image",
     "searchParams": "{\"crop\": true, \"range\": \"100,100,60,70\"}",
     "topK": 3,
     "includeVector": true
    }

    "crop":true, "range":"100,100,60,70" は、画像の指定された領域内で主体識別を有効にします。`range` の 4 つの数値は、領域の左上隅の `(x, y)` 座標、幅、高さを表します。

  • 応答:

    {
     "result":[
     {
     "id": 1,
     "score":1.0508723258972169,
     "vector": [0.1, 0.2, 0.3]
     }
     ],
     "__meta__": {
     "__range__": "100,100,60,70;",
     }
     "totalCount":1,
     "totalTime":2.943
    }
    • `modal=image` で主体識別を実行すると、応答に `__range__` フィールドが含まれます。

    • __range__ フィールドは、検出された主体の領域を `x,y,width,height` 形式で示します。

    • モデルが複数の主体を識別した場合、それらの領域は __range__ フィールドにスコアの降順でリストされます。クエリはデフォルトで最初 (最高スコア) の主体の結果を返します。

Text-to-Video 取得

  • リクエスト本文:

    {
      "tableName": "video",
      "content": "hello",
      "modal": "video",
      "topK": 3,
      "videoFrameTopK":100,
      "contentType":"text",
      "searchParams":"{\"qc.searcher.scan_ratio\":0.01}"
    }
  • 応答:

    {
      "result":[
        {
          "videoId": 1,
          "videoUri": "oss://...",
          "fields" : {
            "tag" : "demo"
          },
          "clips": [{
              "queryStartTime": 5,
              "startTime": 5,
              "duration": 5,
              "queryStartFrameIndex": 150,
              "queryEndFrameIndex": 300,
              "startFrameIndex": 150,
              "endFrameIndex": 300,
              "sim": 0.8
           }]
        }
      ],
      "totalCount":1,
      "totalTime":2.943
    }

ビデオ対ビデオ取得

サポートされている動画フォーマットには、MP4、AVI、MKV、MOV、FLV、WebM があります。

  • リクエスト本文:

    OSS URI を使用する場合:

    {
      "tableName": "video",
      "content": "oss://...",
      "modal": "video",
      "topK": 3,
      "videoFrameTopK":100,
      "contentType":"video_uri",
      "searchParams":"{\"qc.searcher.scan_ratio\":0.01}"
    }

    Base64 エンコードされた動画データを使用する場合:

    {
      "tableName": "video",
      "content": "data:video/mp4;base64,AAAAIGZ0eXBtcDQyAAABAGlxxxxxxx",
      "modal": "video",
      "topK": 3,
      "videoFrameTopK":100,
      "contentType":"video_encode",
      "searchParams":"{\"qc.searcher.scan_ratio\":0.01}"
    }

    フォーマットは data:video/{format};base64,{base64_video} です。各要素の説明は次のとおりです。

    • video/{format}:動画のフォーマット。たとえば、MP4 ファイルの場合は video/mp4 を使用します。

    • base64_video:Base64 エンコードされた動画データ。

  • 応答:

    {
      "result":[
        {
          "videoId": 1,
          "videoUri": "oss://...",
          "fields" : {
            "tag" : "demo"
          },      
          "clips": [{
              "queryStartTime": 5,
              "startTime": 5,
              "duration": 5,
              "queryStartFrameIndex": 150,
              "queryEndFrameIndex": 300,
              "startFrameIndex": 150,
              "endFrameIndex": 300,
              "sim": 0.8
           }]
        }
      ],
      "totalCount":1,
      "totalTime":2.943
    }

画像による動画取得

サポートされている画像フォーマットには、PNG、JPEG、JPG があります。

  • リクエスト本文:

    {
      "tableName": "video",
      "content": "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wCEAxxxxxx",
      "modal": "video",
      "topK": 3,
      "videoFrameTopK":100,
      "contentType":"image_encode", 
      "searchParams":"{\"qc.searcher.scan_ratio\":0.01}"
    }

    画像は Base64 データとして提供されます。エンコードされたデータを content パラメーターに data:image/{format};base64,{base64_image} のフォーマットで渡します。各要素の説明は次のとおりです。

    • image/{format}:画像のフォーマット。たとえば、JPG ファイルの場合は image/jpeg を使用します。

    • base64_image:Base64 エンコードされた画像データ。

  • 応答:

    {
      "result":[
        {
          "videoId": 1,
          "videoUri": "oss://...",
          "fields" : {
            "tag" : "demo"
          },      
          "clips": [{
              "queryStartTime": 5,
              "startTime": 5,
              "duration": 5,
              "queryStartFrameIndex": 150,
              "queryEndFrameIndex": 300,
              "startFrameIndex": 150,
              "endFrameIndex": 300,
              "sim": 0.8
           }]
        }
      ],
      "totalCount":3,
      "totalTime":2.943
    }

融合ベクター取得

融合ベクター取得は、テキストや画像など、複数のモダリティからのコンテンツを単一の融合ベクターにエンコードし、クロスモーダル取得を実現します。この機能を使用する前に、テーブル設定で融合ベクターフィールドを構成する必要があります。詳細については、「融合ベクターの構成」をご参照ください。

融合ベクター取得は、他の予測クエリと以下の点で異なります:

  • modal パラメーターは fusion に設定されます。

  • 複数のモダリティからのコンテンツを渡すために、content パラメーターの代わりに contents パラメーター (リスト) が使用されます。

  • contentType パラメーターには、contents リストの項目に対応する型がカンマ区切りで含まれます。

  • リクエスト本文:

    {
      "tableName": "gist",
      "indexName": "test",
      "contents": ["hello", "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wCEAxxxxxx"],
      "modal": "fusion",
      "contentType": "text,image_encode",
      "topK": 3,
      "searchParams":"{\"qc.searcher.scan_ratio\":0.01}",
      "includeVector": true
    }

    contents の最初の要素はテキスト "hello" で、2 番目の要素は Base64 エンコードされた画像データです。contentType では、textimage_encode がそれぞれ contents の 2 つの要素の型に対応しています。

  • 応答:

    {
      "result":[
        {
          "id": 1,
          "score":1.0508723258972169,
          "vector": [0.1, 0.2, 0.3]
        },
        {
          "id": 2,
          "score":1.0329746007919312,
          "vector": [0.2, 0.2, 0.3]
        },
        {
          "id": 3,
          "score":0.980593204498291,
          "vector": [0.3, 0.2, 0.3]
        }
      ],
      "totalCount":3,
      "totalTime":2.943
    }