全部产品
Search
文档中心

OpenSearch:Kueri prediksi

更新时间:Nov 28, 2025

Deskripsi

Kueri prediksi menggunakan model vektorisasi bawaan Edisi Pencarian Vektor untuk mengonversi teks, citra, atau video menjadi data vektor. Anda kemudian dapat menggunakan teks, citra, atau video asli tersebut untuk mencari data.

Catatan: Jika Anda sudah memiliki data vektor dan ingin mengimpornya langsung ke instans Edisi Pencarian Vektor untuk pengambilan, lihat Kueri vektor.

URL

/vector-service/inference-query

  • URL contoh menghilangkan informasi seperti header permintaan dan metode encoding.

  • Titik akhir lengkap juga harus mencakup alamat host aplikasi Anda.

  • Untuk informasi mengenai definisi, penggunaan, dan contoh semua parameter permintaan, lihat bagian Parameter body permintaan.

Protokol

HTTP

Metode permintaan

POST

Format yang didukung

JSON

Mekanisme signature

Hitung signature untuk header `authorization` sebagai berikut:

Parameter

Tipe

Deskripsi

accessUserName

string

Username. Temukan di halaman Detail Instans di bawah Informasi Jaringan.

accessPassWord

string

Password. Ubah di halaman Detail Instans di bawah Informasi Jaringan.

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);
 }
}

Format yang benar untuk nilai otorisasi adalah:

cm9vdDp******mdhbA==

Tambahkan awalan `Basic` saat menentukan parameter `authorization` dalam permintaan HTTP.

Contoh (tambahkan ke header):

authorization: Basic cm9vdDp******mdhbA==

Parameter body permintaan

Nama Parameter

Deskripsi

Bawaan

Tipe

Diperlukan

tableName

Nama tabel yang akan dikueri.

None

string

Ya

indexName

Nama indeks yang akan dikueri.

Indeks pertama yang dikonfigurasi

string

Tidak

content

Data untuk prediksi.

None

string

Ya

contentType

Tipe data untuk prediksi video. Nilai yang valid:

text, image, video_uri, dan video_base64

None

string

Tidak

modal

Model vektorisasi. Nilai yang valid:

  • text: Gunakan untuk pencarian teks-ke-teks dan pencarian teks-ke-gambar.

  • image: Gunakan untuk pencarian berdasarkan gambar.

  • video: Gunakan untuk pencarian teks-ke-video, citra-ke-video, dan video-ke-video.

None

string

Ya

videoFrameTopK

Jumlah frame yang akan diambil.

100

int

Tidak

namespace

Namespace dari vektor yang akan dikueri.

""

string

Tidak

topK

Jumlah hasil yang dikembalikan.

100

int

Tidak

includeVector

Menentukan apakah informasi vektor dikembalikan dalam dokumen.

false

bool

Tidak

outputFields

Daftar bidang yang dikembalikan.

[]

list[string]

Tidak

order

Urutan pengurutan. `ASC`: ascending. `DESC`: descending.

ASC

string

Tidak

searchParams

Parameter kueri.

""

string

Tidak

filter

Ekspresi filter.

""

string

Tidak

scoreThreshold

Ambang batas skor untuk filtering. Jika Anda menggunakan Jarak Euclidean, hanya hasil dengan skor kurang dari `scoreThreshold` yang dikembalikan. Jika Anda menggunakan inner product, hanya hasil dengan skor lebih besar dari `scoreThreshold` yang dikembalikan.

Tidak ada filtering secara default

float

Tidak

Parameter respons

Nama Bidang

Deskripsi

Tipe

result

Daftar hasil.

list[Item]

totalCount

Jumlah item dalam daftar hasil.

int

totalTime

Waktu yang dibutuhkan mesin untuk memproses permintaan, dalam milidetik.

float

errorCode

Kode kesalahan. Bidang ini dikembalikan hanya ketika terjadi kesalahan.

int

errorMsg

Pesan kesalahan. Bidang ini dikembalikan hanya ketika terjadi kesalahan.

string

  • Definisi Item

Nama Bidang

Deskripsi

Tipe

score

Skor jarak.

float

fields

Nama bidang dan nilai yang sesuai.

map<string, FieldType>

vector

Nilai vektor.

list[float]

id

Nilai kunci primary. Tipenya sama dengan tipe bidang yang didefinisikan.

FieldType

namespace

Namespace dari vektor. Bidang ini dikembalikan jika namespace ditetapkan.

string

Contoh

Pengambilan penyematan teks

  • Body permintaan:

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

    {
      "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
    }

Vektorisasi citra

Pencarian teks-ke-gambar:

  • Body permintaan:

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

    {
      "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
    }

Pencarian berdasarkan gambar:

  • Body permintaan:

    {
      "tableName": "gist",
      "indexName": "test",
      "content": "Gambar yang dikodekan Base64",
      "modal": "image",
      "topK": 3,
      "searchParams":"{\"qc.searcher.scan_ratio\":0.01}",
      "includeVector": true
    }
  • Respons:

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

Identifikasi subjek

  • Body permintaan:

    Jika `range` tidak ditentukan:

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

    Catatan: "crop":true menentukan pencarian berdasarkan subjek. Jika parameter `range` tidak ditentukan, sistem akan memanggil model identifikasi subjek.

    Jika `range` ditentukan:

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

    Catatan: "crop":true, "range":"100,100,60,70" menentukan pencarian berdasarkan subjek. Parameter `range` menentukan area subjek dalam citra. Keempat angka tersebut merepresentasikan koordinat x dan y titik kiri atas, lebar, serta tinggi area subjek.

  • Respons:

    {
     "result":[
     {
     "id": 1,
     "score":1.0508723258972169,
     "vector": [0.1, 0.2, 0.3]
     }
     ],
     "__meta__": {
     "__range__": "100,100,60,70;",
     }
     "totalCount":1,
     "totalTime":2.943
    }

    Catatan:

    • Bidang `__range__` dikembalikan hanya untuk kueri identifikasi subjek dengan parameter `modal` diatur ke `image`.

    • __range__ menentukan area subjek dalam citra. Keempat angka tersebut merepresentasikan koordinat x dan y titik kiri atas, lebar, serta tinggi area subjek.

    • Jika model mendeteksi beberapa subjek, bidang __range__ berisi daftar area subjek yang diurutkan berdasarkan skor model secara descending. Secara default, kueri mengembalikan hasil yang sesuai dengan subjek pertama dalam daftar.

Pengambilan teks-ke-video

  • Body permintaan:

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

    {
      "result":[
        {
          "videoId": 1,
          "videoUri": "oss://...",
          "fields" : {
            "tag" : "demo"
          },
          "clips": [{
              "queryStartTime": 5, // Timestamp of the query video frame (in seconds)
              "startTime": 5, // Timestamp of the matched video frame (in seconds)
              "duration": 5, // Matching duration (in seconds)
              "queryStartFrameIndex": 150, // Start index of the query video frame
              "queryEndFrameIndex": 300, // End index of the query video frame
              "startFrameIndex": 150, // Start index of the matched video frame
              "endFrameIndex": 300, // End index of the matched video frame       
              "sim": 0.8 // Overall similarity
           }]
        }
      ],
      "totalCount":1,
      "totalTime":2.943
    }

Pengambilan video-ke-video

Format video yang didukung: MP4, AVI, MKV, MOV, FLV, dan WebM.

  • Body permintaan:

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

    Anda dapat menentukan path OSS dari file input. Contohnya: `oss://bucket-name/xxx/xxx.mp4`

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

    Formatnya adalah data:video/{format};base64,{base64_video}, di mana:

    • video/{format}: Format video. Misalnya, jika video dalam format MP4, tentukan video/mp4.

    • base64_video: Data video yang diencode Base64.

  • Respons:

    {
      "result":[
        {
          "videoId": 1,
          "videoUri": "oss://...",
          "fields" : {
            "tag" : "demo"
          },      
          "clips": [{
              "queryStartTime": 5, // Timestamp of the query video frame (in seconds)
              "startTime": 5, // Timestamp of the matched video frame (in seconds)
              "duration": 5, // Matching duration (in seconds)
              "queryStartFrameIndex": 150, // Start index of the query video frame
              "queryEndFrameIndex": 300, // End index of the query video frame
              "startFrameIndex": 150, // Start index of the matched video frame
              "endFrameIndex": 300, // End index of the matched video frame
              "sim": 0.8 // Overall similarity
           }]
        }
      ],
      "totalCount":1,
      "totalTime":2.943
    }

Pengambilan citra-ke-video

Format citra yang didukung: PNG, JPEG, dan JPG.

  • Body permintaan:

    {
      "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}"
    }

    Kirimkan data citra yang diencode Base64 ke parameter image dalam format data:image/{format};base64,{base64_image}, di mana:

    • image/{format}: Format citra. Misalnya, jika citra dalam format JPG, tentukan image/jpeg.

    • base64_image: Data citra yang diencode Base64.

  • Respons:

    {
      "result":[
        {
          "videoId": 1,
          "videoUri": "oss://...",
          "fields" : {
            "tag" : "demo"
          },      
          "clips": [{
              "queryStartTime": 5, // Timestamp of the query video frame (in seconds)
              "startTime": 5, // Timestamp of the matched video frame (in seconds)
              "duration": 5, // Matching duration (in seconds)
              "queryStartFrameIndex": 150, // Start index of the query video frame
              "queryEndFrameIndex": 300, // End index of the query video frame
              "startFrameIndex": 150, // Start index of the matched video frame
              "endFrameIndex": 300, // End index of the matched video frame
              "sim": 0.8 // Overall similarity
           }]
        }
      ],
      "totalCount":3,
      "totalTime":2.943
    }