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:
| 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":truemenentukan 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, tentukanvideo/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
imagedalam formatdata:image/{format};base64,{base64_image}, di mana:image/{format}: Format citra. Misalnya, jika citra dalam format JPG, tentukanimage/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 }