全部产品
Search
文档中心

DashVector:Pencarian semantik berbasis kata kunci

更新时间:Jun 29, 2025

Latar Belakang

Pencarian kata kunci dan keterbatasannya

Secara tradisional, pencarian informasi diimplementasikan berdasarkan kata kunci melalui proses berikut:

  1. Ekstraksi kata kunci dari korpus, seperti halaman web.

  2. Pembuatan pemetaan antara kata kunci tersebut dengan korpus menggunakan indeks terbalik serta penerapan algoritma seperti Term Frequency - Inverse Document Frequency (TF-IDF) dan Best Match 25 (BM25). Dalam TF-IDF dan BM25, vektor jarang biasanya digunakan untuk merepresentasikan frekuensi istilah.

  3. Selama pencarian, kata kunci diekstraksi dari istilah pencarian dan digunakan untuk memanggil K korpus teratas berdasarkan kesamaan sesuai dengan pemetaan yang dibuat pada langkah sebelumnya.

image.png

Namun, pencarian kata kunci memiliki keterbatasan dalam menentukan makna kontekstual dari istilah pencarian. Sebagai contoh, pencarian frasa "rain cats and dogs," yang merupakan idiom untuk "hujan lebat," mungkin menghasilkan dokumen tentang kata kunci "rain," "cats," dan "dogs," tetapi tidak mencerminkan makna idiomatiknya.

Pencarian vektor semantik

Model penyematan semantik semakin kuat berkat kemajuan teknologi AI. Pencarian vektor semantik secara bertahap menjadi metode utama untuk pemanggilan informasi. Proses implementasinya adalah sebagai berikut:

  1. Vektor, khususnya vektor padat, dihasilkan dari korpus (seperti halaman web) menggunakan model penyematan.

  2. Vektor disimpan dalam sistem pencarian vektor.

  3. Selama pencarian, sebuah vektor dihasilkan dari istilah pencarian menggunakan model penyematan dan digunakan untuk memanggil K korpus teratas dengan jarak terpendek dari sistem pencarian vektor.

image.png

Meskipun demikian, pencarian vektor semantik memiliki keterbatasan. Metode ini bergantung pada pengoptimalan berkelanjutan dari model penyematan dalam hal pemahaman semantik untuk mendapatkan hasil yang lebih baik. Sebagai contoh, jika model tidak dapat membedakan bahwa "rice irrigating" dan "irrigating rice" memiliki makna serupa, korpus tentang "irrigating rice" tidak akan dipanggil untuk istilah pencarian "rice irrigating." Dalam kasus ini, pencarian kata kunci lebih unggul karena dapat secara efektif memanggil korpus berdasarkan kata kunci "rice" dan "irrigating."

Pencarian kata kunci + Pencarian vektor semantik

Untuk mengatasi kekurangan tersebut, beberapa layanan dan sistem dikembangkan untuk menggabungkan pencarian kata kunci dan pencarian vektor semantik, serta menentukan peringkat catatan yang dipanggil menggunakan kedua metode tersebut secara bersamaan, seperti ditunjukkan pada gambar berikut. Pendekatan ini menghasilkan performa pencarian yang lebih baik dibandingkan dengan penerapan salah satu metode secara terpisah.

image.png

Namun, metode pencarian gabungan ini membawa kelemahan berikut:

  1. Kompleksitas sistem meningkat.

  2. Lebih banyak sumber daya perangkat keras (memori, CPU, dan disk) digunakan.

  3. Kemudahan pemeliharaan berkurang.

  4. ......

Pencarian semantik berbasis kata kunci

DashVector mendukung vektor padat dan vektor jarang. Vektor padat digunakan untuk merepresentasikan fitur data berdimensi tinggi melalui penyematan, sedangkan vektor jarang digunakan untuk merepresentasikan kata kunci dan frekuensi istilah. Ketika DashVector menggunakan kedua jenis vektor dalam mekanisme pencariannya, ia melakukan pencarian semantik berbasis kata kunci.

image.png

Metode pencarian ini memanfaatkan keunggulan ketiga metode pencarian di atas sekaligus meminimalkan keterbatasan mereka, seperti peningkatan kompleksitas sistem dan overhead sumber daya. Keseimbangan antara efektivitas dan efisiensi menjadikan DashVector sebagai alat serbaguna yang cocok untuk sebagian besar skenario bisnis.

Catatan

Vektor jarang terdiri dari banyak nilai nol dan sangat sedikit nilai bukan nol. Di DashVector, vektor jarang dapat digunakan untuk merepresentasikan informasi seperti frekuensi istilah. Sebagai contoh, dalam vektor jarang {1:0.4, 10000:0.6, 222222:0.8}, hanya elemen 1, 10000, dan 222222, yang mewakili tiga kata kunci berbeda, yang memiliki nilai bukan nol. Nilai-nilai ini mewakili bobot dari kata kunci tersebut.

Contoh

Prasyarat

  • Sebuah kluster telah dibuat. Untuk informasi lebih lanjut, lihat Buat Kluster.

  • Kunci API diperoleh. Untuk informasi lebih lanjut, lihat Kelola Kunci API.

  • SDK versi terbaru telah diinstal. Untuk informasi lebih lanjut, lihat Instal DashVector SDK.

Langkah 1. Buat koleksi yang mendukung vektor jarang

Catatan
  1. Ganti YOUR_API_KEY dengan kunci API Anda dan YOUR_CLUSTER_ENDPOINT dengan titik akhir kluster Anda dalam kode contoh agar kode dapat berjalan dengan benar.

  2. Contoh ini menunjukkan pencarian menggunakan vektor jarang. Untuk kesederhanaan, jumlah dimensi vektor padat diatur menjadi 4.

import dashvector

client = dashvector.Client(
    api_key='YOUR_API_KEY',
    endpoint='YOUR_CLUSTER_ENDPOINT'
)

ret = client.create('hybrid_collection', dimension=4, metric='dotproduct')

collection = client.get('hybrid_collection')
assert collection
Penting

Hanya koleksi yang menggunakan metrik produk titik (metric='dotproduct') yang mendukung vektor jarang.

Langkah 2. Sisipkan dokumen yang berisi vektor jarang

from dashvector import Doc

collection.insert(Doc(
    id='A',
    vector=[0.1, 0.2, 0.3, 0.4],
    sparse_vector={1: 0.3, 10:0.4, 100:0.3}
))

Langkah 3. Mulai pencarian vektor yang berisi vektor jarang

docs = collection.query(
    vector=[0.1, 0.1, 0.1, 0.1],
    sparse_vector={1: 0.3, 20:0.7}
)

Penyandi vektor jarang

  • DashText adalah penyandi vektor jarang yang direkomendasikan untuk DashVector. Untuk informasi lebih lanjut, lihat Memulai Cepat.