URL
/vector-service/query
Contoh URL menghilangkan informasi seperti parameter dalam header permintaan dan metode pengkodean.
Contoh URL juga menghilangkan titik akhir yang digunakan untuk terhubung ke instance OpenSearch.
Untuk informasi lebih lanjut tentang definisi, penggunaan, dan nilai contoh dari semua parameter permintaan yang digabungkan dalam URL di atas, lihat bagian "Parameter Permintaan" dari topik ini.
Protokol
HTTP
Metode permintaan
POST
Format yang didukung
JSON
Tanda tangan permintaan
Tanda tangan permintaan dapat dihitung menggunakan parameter yang dijelaskan dalam tabel berikut. Tanda tangan permintaan disimpan dalam header authorization.
Parameter | Tipe | Deskripsi |
accessUserName | string | Nama pengguna. Anda dapat melihat nama pengguna di bagian API Endpoint pada halaman Detail Instance. |
accessPassWord | string | Kata sandi. Anda dapat memodifikasi kata sandi di bagian API Endpoint pada halaman Detail Instance. |
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 valid untuk nilai header authorization:
cm9vdDp******mdhbA==Anda harus menambahkan awalan Basic saat menentukan header authorization dalam permintaan HTTP.
Contoh:
authorization: Basic cm9vdDp******mdhbA==Parameter permintaan
SearchRequest
Parameter | Deskripsi | Nilai default | Tipe | Diperlukan |
tableName | Nama tabel yang akan di-query. | Tidak ada nilai default | string | Ya |
indexName | Nama indeks vektor padat. | Tidak ada nilai default | string | Ya |
vector | Data vektor padat yang akan di-query. | Tidak ada nilai default | list[float] | Ya |
sparseData | Data vektor jarang yang akan di-query. | Tidak ada nilai default | SparseData | Ya |
vectorCount | Jumlah vektor yang ditentukan dalam parameter vector. | 1 | int | Tidak |
namespace | Namespace dari data vektor. | "" | string | Tidak |
topK | Jumlah hasil yang akan dikembalikan. | 100 | int | Tidak |
includeVector | Menentukan apakah akan mengembalikan informasi vektor dalam dokumen. | false | bool | Tidak |
outputFields | Bidang-bidang yang akan dikembalikan. | [] | list[string] | Tidak |
order | Urutan hasil diurutkan. Nilai ASC menunjukkan urutan naik. Nilai DESC menunjukkan urutan turun. | ASC | string | Tidak |
searchParams | Parameter yang digunakan untuk meng-query data. | "" | string | Tidak |
filter | Ekspresi filter. | "" | string | Tidak |
scoreThreshold | Ambang batas skor yang digunakan untuk menyaring hasil. Jika skor adalah jarak Euclidean, hanya dokumen dengan jarak Euclidean kurang dari nilai parameter scoreThreshold yang dikembalikan. Jika skor adalah produk dalam, hanya dokumen dengan produk dalam lebih besar dari nilai parameter scoreThreshold yang dikembalikan. | Secara default, hasil tidak difilter. | float | Tidak |
sort | Ekspresi sortir. | "" | string | Tidak |
SparseData
Parameter | Deskripsi | Nilai default | Tipe | Diperlukan |
count | Jumlah elemen dalam setiap vektor jarang. | Jika hanya satu vektor jarang yang ditentukan, nilai parameter ini adalah jumlah indeks secara default. | list[int] | Tidak |
indices | Indeks elemen dalam urutan menaik. | Tidak ada nilai default | list[int] | Ya |
values | Nilai elemen dalam urutan yang sama dengan indeks. | Tidak ada nilai default | list[float] | Ya |
Dalam Edisi OpenSearch Vector Search, dua bidang multi-nilai independen digunakan untuk merepresentasikan subskrip dan nilai vektor jarang. Jumlah nilai harus sama di kedua bidang. Posisi nilai dalam kedua bidang memiliki korespondensi satu-satu.
Sebagai contoh, vektor jarang (0, 0.5), (100, 0.9), (40, 0.3), (50, 0.7), (20, 0.6) ada. Kode berikut menunjukkan bidang multi-nilai dari vektor jarang:
{
"indices": [0, 100, 40, 50, 20],
"values": [0.5, 0.9, 0.3, 0.7, 0.6]
}Saat Anda menulis atau meng-query data, subskrip harus diatur dalam urutan menaik, dan nilai perlu disesuaikan berdasarkan subskrip. Kode berikut menunjukkan bidang multi-nilai yang telah disesuaikan:
{
"indices": [0, 20, 40, 50, 100],
"values": [0.5, 0.6, 0.3, 0.7, 0.9]
}Bobot kueri
Dalam kueri hibrida, skor akhir dari dokumen yang sama adalah jumlah dari jarak vektor padat dan jarak vektor jarang. Jika Anda ingin mengonfigurasi bobot berbeda untuk vektor jarang dan vektor padat, Anda dapat melakukan konfigurasi berdasarkan kode berikut:
{
"vector": [v * weight for v in dense_vector],
"sparseData": {
"indices": sparse_data["indices"],
"values": [v * (1 - weight) for v in sparse_data["values"]]
}
}
Permintaan contoh
{
"tableName": "in0",
"indexName": "vector",
"vector": [
0.1,
0.2,
0.3,
0.4,
0.5
],
"sparseData": {
"indices": [
0,
2
],
"values": [
1.2,
2.4
]
},
"topK": 2,
"order": "DESC"
}Parameter respons
Parameter | Deskripsi | Tipe |
result | Hasil yang dikembalikan. | list[Item] |
totalCount | Jumlah hasil. | int |
totalTime | Waktu respons. Unit: milidetik. | float |
errorCode | Kode kesalahan yang dikembalikan jika permintaan gagal. | int |
errorMsg | Pesan kesalahan yang dikembalikan jika permintaan gagal. | string |
Item
Parameter | Deskripsi | Tipe |
score | Skor vektor. | float |
fields | Bidang dan nilai yang sesuai. | map<string, FieldType> |
vector | Nilai vektor. | list[float] |
id | Nilai kunci utama. Nilainya adalah tipe data yang didefinisikan. | FieldType |
namespace | Namespace dari vektor. Parameter ini dikembalikan jika namespace dikonfigurasikan untuk vektor. | string |
Contoh
{
"totalCount": 50,
"result": [
{
"id": 99,
"score": 0.18588095903396607,
"__source__": 1,
"fields": {
"content": "Zhonghao Cat 6 Network Cable RJ45 Cat 6 Gigabit 8-Core Twisted Pair Jumper Broadband Monitoring Home Network Cable Finished Cable"
}
}
],
"totalTime": 4.057
}