Deskripsi
Anda dapat mengimpor data vektor ke instance OpenSearch Vector Search Edition dan menggunakan instance tersebut untuk menjalankan query berbasis vektor.
Catatan: Jika Anda tidak memiliki model vektor untuk mengonversi data menjadi vektor, Anda dapat menggunakan fitur vektorisasi gambar dan vektorisasi teks dari OpenSearch Vector Search Edition. Dengan menggunakan model vektor bawaan, Anda dapat mengonversi data menjadi vektor dan menjalankan query berbasis prediksi.
URL
/vector-service/query
Contoh URL menghilangkan informasi seperti header permintaan dan metode pengkodean.
Contoh URL juga menghilangkan titik akhir yang digunakan untuk terhubung ke aplikasi OpenSearch.
Untuk informasi lebih lanjut tentang definisi, penggunaan, dan nilai contoh 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
Gunakan bidang dalam tabel berikut untuk menghitung tanda tangan permintaan. Tanda tangan permintaan disimpan di 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==Tambahkan awalan Basic saat Anda menentukan header authorization dalam permintaan HTTP.
Contoh:
authorization: Basic cm9vdDp******mdhbA==Parameter permintaan
Parameter | Deskripsi | Nilai default | Tipe | Diperlukan |
tableName | Nama tabel yang akan di-query. | N/A | STRING | Ya |
vector | Data vektor yang akan di-query. | N/A | LIST[FLOAT] | 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 | BOOLEAN | Tidak |
outputFields | Bidang yang akan dikembalikan. | [] | LIST[STRING] | Tidak |
order | Secara default, urutkan secara menaik. | 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 dokumen. Jika skor adalah jarak Euclidean kuadrat, hanya dokumen yang memiliki jarak Euclidean kuadrat lebih kecil dari nilai parameter scoreThreshold yang dikembalikan. Jika skor adalah produk dalam, hanya dokumen yang memiliki produk dalam lebih besar dari nilai parameter scoreThreshold yang dikembalikan. | Secara default, hasil tidak difilter. | FLOAT | Tidak |
sort | Ekspresi untuk pengurutan. Jika Anda perlu menggabungkan kesamaan vektor dan pengambilan lainnya, gunakan _vs_vector_score. Misalnya, "-create_gmt;+_vs_vector_score_" untuk menggabungkan dengan create_gmt. | "" | string | |
sorts | Pengurutan multi-dimensi. Setelah mengonfigurasi sort, skor dalam hasil akan berubah sesuai dengan dimensi. order: naik (ASC), turun (DESC) | [] | List<sort> |
Sort:
Parameter | Deskripsi | Default | Tipe | Wajib |
order | naik (ASC), turun (DESC) | "" | string | Tidak |
expression | Ekspresi untuk pengurutan. | "" | string | Tidak |
Query menggunakan satu vektor
{
"tableName": "gist",
"vector": [
0.1,
0.2,
0.3
],
"topK": 3,
"searchParams":"{\"qc.searcher.scan_ratio\":0.01}",
"includeVector": true
}Query berbasis namespace
OpenSearch Vector Search Edition memungkinkan Anda mempartisi indeks menggunakan namespace. Setelah mengonfigurasi namespace untuk indeks vektor, Anda dapat menentukan namespace untuk meng-query data. Dengan cara ini, Anda dapat meng-query subset indeks yang berbeda dengan mengirimkan permintaan query yang berbeda.
Catatan: Jika Anda mengonfigurasi namespace untuk indeks vektor, Anda harus menentukan namespace saat meng-query data.
{
"tableName": "gist",
"namespace": "space_b",
"vector": [
0.1,
0.2
],
"topK": 3,
"searchParams":"{\"qc.searcher.scan_ratio\":0.01}",
"includeVector": true
}Query menggunakan beberapa namespace
Jika Anda mengonfigurasi namespace untuk indeks vektor, Anda dapat meng-query data dalam beberapa namespace.
{
"tableName": "gist",
"queries": [
{
"vector": [
0.1,
0.2,
0.3
],
"namespace": "space_a"
},
{
"vector": [
0.4,
0.5,
0.6
],
"namespace": "space_b"
}
],
"topK": 3,
"searchParams":"{\"qc.searcher.scan_ratio\":0.01}",
"includeVector": true
}Query menggunakan kondisi filter
Anda dapat menggunakan ekspresi filter untuk menentukan kondisi filter untuk query data.
{
"tableName": "gist",
"vector": [
0.1,
0.2
],
"topK": 3,
"searchParams":"{\"qc.searcher.scan_ratio\":0.01}",
"filter": "a > 10",
"includeVector": true,
"outputFields": [
"a",
"b"
]
}Query menggunakan beberapa vektor
Anda dapat meng-query beberapa vektor sekaligus. OpenSearch menggabungkan dan mengurutkan hasil dari semua vektor, lalu mengembalikan K hasil teratas. Contoh kode berikut menunjukkan cara meng-query dua vektor dua dimensi sekaligus:
{
"tableName": "gist",
"vector": [
0.1,
0.2,
0.3,
0.4
],
"vectorCount": 2,
"topK": 3,
"searchParams":"{\"qc.searcher.scan_ratio\":0.01}",
"includeVector": true,
"outputFields": [
"a",
"b"
]
}Parameter respons
Parameter | Deskripsi | Tipe |
result | Hasil yang dikembalikan. | LIST[ITEM] |
totalCount | Jumlah hasil. | INT |
totalTime | Waktu respons. Satuan: 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 dari vektor. | FLOAT |
fields | Bidang dan nilai-nilai yang sesuai. | MAP<STRING, FieldType> |
vector | Nilai vektor. | LIST[FLOAT] |
id | Nilai kunci utama. Nilainya adalah tipe data yang ditentukan. | FieldType |
namespace | Namespace dari vektor. Parameter ini dikembalikan jika namespace dikonfigurasikan untuk vektor. | STRING |
Contoh:
{
"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
}