全部产品
Search
文档中心

OpenSearch:Query berbasis vektor

更新时间:Jul 27, 2025

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
}