Pencarian vektor OpenSearch mengambil hasil berdasarkan kesamaan vektor, bukan kata kunci. Dikombinasikan dengan multi-channel recall, pendekatan ini meningkatkan akurasi dalam skenario seperti tanya jawab edukasi dan image search. Topik ini menjelaskan sintaks kueri vektor dan catatan penggunaannya.
Sintaks
query = vector_index:'vector'&vector_search={"vector_index":{"namespaces":[],"threshold":0.5,"top_n":10,"search_params":{}}}
Parameter opsional vector_search mengonfigurasi kueri indeks vektor. Parameter ini menerima kamus yang kuncinya adalah nama indeks vektor dan nilainya adalah konfigurasi kueri. Tabel berikut menjelaskan parameter konfigurasinya.
|
Parameter |
Tipe |
Bawaan |
Deskripsi |
|
namespaces |
list<string> |
Mem-partisi indeks vektor sehingga kueri hanya menargetkan partisi tertentu. Maksimum: 10.000 namespace. Jika namespace dikonfigurasi, Anda harus menentukan salah satunya dalam setiap kueri. |
|
|
threshold |
float |
Ambang batas skor minimum. Hasil dengan skor di bawah nilai ini akan dikecualikan. |
|
|
top_n |
uint32 |
Jumlah hasil teratas yang dikembalikan. |
|
|
search_params.qc_scan_ratio |
float |
0,01 |
Rasio dokumen yang dipindai selama kueri indeks QC. Dokumen yang dipindai = |
|
search_params.hnsw_ef |
uint32 |
500 |
Jumlah dokumen yang dipindai selama kueri indeks HNSW. Nilai yang lebih tinggi meningkatkan recall tetapi menambah latensi. |
Parameter vector_search juga berlaku dalam skenario multi-channel recall.
Contoh: Kueri indeks vektor berdimensi 64
vector: '0.377796,-0.958450,0.409853,-0.238177,-1.293826,0.356797,-0.295727,0.847301,-1.220337,0.148032,-1.128458,0.903187,0.509352,0.293686,-1.005852,-0.488839,0.888227,-0.555556,-0.658025,0.267552,-0.567601,0.003045,0.591734,-0.515983,-1.316453,-1.462450,0.091946,1.554954,0.384802,0.720498,0.144338,1.217826,0.724039,0.044212,0.571332,-1.425430,0.618965,0.481887,-1.617787,1.505416,-0.683652,1.030900,0.562021,0.162437,0.816546,0.112229,-0.739288,-0.342643,-0.199292,0.508368,-1.384887,-1.842170,0.952622,-1.699499,0.199430,-0.232464,-0.273227,-0.383696,-0.511302,0.005458,1.873572,-0.926169,-0.417587,-0.660156'
Contoh
Menetapkan ambang batas skor minimum
Deskripsi: Mengeluarkan hasil dengan skor jarak vektor di bawah ambang batas yang ditentukan.
Format parameter lama: &sf=number
Format parameter baru: vector_search={"vector_index":{"threshold":0.8}}
Contoh:
// Versi lama
query=index_name:'0.1,0.2,0.98,0.6;0.3,0.4,0.98,0.6&sf=0.8'
// Versi baru
query=index_name:'0.1,0.2,0.98,0.6;0.3,0.4,0.98,0.6'&vector_search={"index_name":{"threshold":0.8}}
Menentukan kueri top-N
Deskripsi: Mengembalikan hanya N hasil teratas.
Format parameter lama: &n=number
Format parameter baru: vector_search={"vector_index":{"top_n":10}}
Contoh:
// Versi lama
query=vector_index:'0.1,0.2,0.98,0.6;0.3,0.4,0.98,0.6&n=10'
// Versi baru
query=vector_index:'0.1,0.2,0.98,0.6;0.3,0.4,0.98,0.6'&vector_search={"index_name":{"top_n":10}}
Mengurutkan hasil berdasarkan skor vektor
Deskripsi: Dapatkan skor jarak vektor dengan menggunakan proxima_score(index_name) dalam ekspresi penyortiran halus.
-
index_name: Nama indeks vektor. -
Mengembalikan skor jarak vektor bertipe
float. Dokumen yang tidak dikembalikan oleh pencarian vektor memiliki skor bawaan 10.000. -
Contoh:
proxima_score(your_vector_index).
Prosedur:
Buka Search Algorithm Center > Sort Configuration > Policy Configuration, lalu klik Create. Tetapkan cakupan ke Default fine sort dan tipe ke Expression.
-
Pada halaman Search Test, rujuk kebijakan pengurutan presisi yang telah Anda buat dan jalankan pengujian.
Pada halaman Search Test, atur second_rank_name ke kebijakan pengurutan presisi yang telah Anda buat, lalu jalankan kueri pencarian vektor. Bandingkan hasil antara kebijakan bawaan dan kustom. Jika hasil menampilkan SecondRank: expression[proxima_score(vec)], result[100.000000], maka skor jarak vektor sedang diterapkan.
-
Metrik jarak bawaan adalah Jarak Euclidean (l2).
-
Untuk jarak inner product (ip), skor yang lebih tinggi menunjukkan relevansi yang lebih tinggi.
-
Untuk Jarak Euclidean (l2), skor yang lebih rendah menunjukkan relevansi yang lebih tinggi.
Batasan
-
Metrik jarak bawaan adalah Jarak Euclidean (l2). Untuk menggunakan jarak inner product (ip), normalisasi vektor Anda sebelum ingestion.
-
Bidang indeks vektor harus bertipe
DOUBLE_ARRAY. -
Dimensi yang didukung: 64, 128, 256, dan 512. Jumlah elemen dalam bidang
DOUBLE_ARRAYharus tepat sesuai dengan dimensi yang ditentukan. -
Panjang maksimum string vektor kueri: 4 KB sebelum encoding. Satu kueri biasanya mendukung hingga dua indeks vektor.