Relevansi dalam pencarian vektor

Selama eksekusi kueri vektor, mesin pencari mencari vektor serupa untuk menemukan kandidat terbaik untuk dikembalikan dalam hasil pencarian. Tergantung pada cara Anda mengindeks konten vektor, pencarian kecocokan yang relevan lengkap, atau dibatasi ke tetangga dekat untuk pemrosesan yang lebih cepat. Setelah kandidat ditemukan, metrik kesamaan digunakan untuk mencetak setiap hasil berdasarkan kekuatan kecocokan.

Artikel ini menjelaskan algoritma yang digunakan untuk menemukan kecocokan yang relevan dan metrik kesamaan yang digunakan untuk penilaian. Ini juga menawarkan tips untuk meningkatkan relevansi jika hasil pencarian tidak memenuhi harapan.

Algoritma pencarian vektor termasuk tetangga terdekat k yang lengkap (KNN) dan Hierarkis Navigable Small World (HNSW).

Hanya bidang vektor yang ditandai sebagai searchable dalam indeks, atau seperti searchFields dalam kueri, yang digunakan untuk pencarian dan penilaian.

Kapan menggunakan KNN lengkap

KNN lengkap menghitung jarak antara semua pasangan titik data dan menemukan tetangga terdekat yang tepat k untuk titik kueri. Ini ditujukan untuk skenario di mana pengenalan tinggi sangat penting, dan pengguna bersedia menerima trade-off dalam latensi kueri. Karena secara komputasi intensif, gunakan KNN lengkap untuk himpunan data kecil hingga menengah, atau ketika persyaratan presisi melebihi pertimbangan performa kueri.

Kasus penggunaan sekonaris adalah membangun himpunan data untuk mengevaluasi perkiraan pengenalan algoritma tetangga terdekat. KNN lengkap dapat digunakan untuk membangun set kebenaran dasar tetangga terdekat.

Dukungan KNN lengkap tersedia melalui REST API 2023-11-01, REST API 2023-10-01-Preview, dan di pustaka klien Azure SDK yang menargetkan versi REST API.

Kapan menggunakan HNSW

Selama pengindeksan, HNSW membuat struktur data tambahan untuk pencarian yang lebih cepat, mengatur titik data ke dalam struktur grafik hierarkis. HNSW memiliki beberapa parameter konfigurasi yang dapat disetel untuk mencapai tujuan throughput, latensi, dan pengenalan untuk aplikasi pencarian Anda. Misalnya, pada waktu kueri, Anda dapat menentukan opsi untuk pencarian lengkap, bahkan jika bidang vektor diindeks untuk HNSW.

Selama eksekusi kueri, HNSW memungkinkan kueri tetangga yang cepat dengan menavigasi melalui grafik. Pendekatan ini mencapai keseimbangan antara akurasi pencarian dan efisiensi komputasi. HNSW direkomendasikan untuk sebagian besar skenario karena efisiensinya saat mencari set data yang lebih besar.

Cara kerja pencarian tetangga terdekat

Kueri vektor dijalankan terhadap ruang penyematan yang terdiri dari vektor yang dihasilkan dari model penyematan yang sama. Umumnya, nilai input dalam permintaan kueri dimasukkan ke dalam model pembelajaran mesin yang sama yang menghasilkan penyematan dalam indeks vektor. Outputnya adalah vektor dalam ruang penyematan yang sama. Karena vektor serupa diklusterkan bersama-sama, menemukan kecocokan setara dengan menemukan vektor yang paling dekat dengan vektor kueri, dan mengembalikan dokumen terkait sebagai hasil pencarian.

Misalnya, jika permintaan kueri adalah tentang hotel, model memetakan kueri ke vektor yang ada di suatu tempat di kluster vektor yang mewakili dokumen tentang hotel. Mengidentifikasi vektor mana yang paling mirip dengan kueri, berdasarkan metrik kesamaan, menentukan dokumen mana yang paling relevan.

Ketika bidang vektor diindeks untuk KNN lengkap, kueri dijalankan terhadap "semua tetangga". Untuk bidang yang diindeks untuk HNSW, mesin pencari menggunakan grafik HNSW untuk mencari subset simpul dalam indeks vektor.

Membuat grafik HNSW

Selama pengindeksan, layanan pencarian membangun grafik HNSW. Tujuan pengindeksan vektor baru ke dalam grafik HNSW adalah untuk menambahkannya ke struktur grafik dengan cara yang memungkinkan pencarian tetangga terdekat yang efisien. Langkah-langkah berikut meringkas prosesnya:

  1. Inisialisasi: Mulailah dengan grafik HNSW kosong, atau grafik HNSW yang ada jika bukan indeks baru.

  2. Titik masuk: Ini adalah tingkat atas grafik hierarkis dan berfungsi sebagai titik awal untuk pengindeksan.

  3. Menambahkan ke grafik: Tingkat hierarkis yang berbeda mewakili granularitas grafik yang berbeda, dengan tingkat yang lebih tinggi menjadi lebih global, dan tingkat yang lebih rendah menjadi lebih terperinci. Setiap simpul dalam grafik mewakili titik vektor.

    • Setiap simpul terhubung ke m tetangga yang berada di dekatnya. Ini adalah parameter .m

    • Jumlah titik data yang dianggap sebagai koneksi kandidat diatur oleh efConstruction parameter . Daftar dinamis ini membentuk kumpulan titik terdekat dalam grafik yang ada untuk dipertimbangkan algoritma. Nilai yang lebih tinggi efConstruction mengakibatkan lebih banyak simpul dipertimbangkan, yang sering menyebabkan lingkungan lokal yang lebih padat untuk setiap vektor.

    • Koneksi ini menggunakan kesamaan metric yang dikonfigurasi untuk menentukan jarak. Beberapa koneksi adalah koneksi "jarak jauh" yang terhubung di berbagai tingkat hierarkis, membuat pintasan dalam grafik yang meningkatkan efisiensi pencarian.

  4. Pemangkasan dan pengoptimalan grafik: Ini dapat terjadi setelah mengindeks semua vektor, dan meningkatkan kemampuan navigasi dan efisiensi grafik HNSW.

Kueri vektor menavigasi struktur grafik hierarkis untuk memindai kecocokan. Berikut ini meringkas langkah-langkah dalam proses:

  1. Inisialisasi: Algoritma memulai pencarian di tingkat atas grafik hierarkis. Titik masuk ini berisi sekumpulan vektor yang berfungsi sebagai titik awal untuk pencarian.

  2. Traversal: Selanjutnya, melintasi tingkat grafik menurut tingkat, menavigasi dari tingkat atas ke tingkat yang lebih rendah, memilih node kandidat yang lebih dekat dengan vektor kueri berdasarkan metrik jarak yang dikonfigurasi, seperti kesamaan kosinus.

  3. Pemangkasan: Untuk meningkatkan efisiensi, algoritma memangkas ruang pencarian hanya dengan mempertimbangkan simpul yang cenderung berisi tetangga terdekat. Hal ini dicapai dengan mempertahankan antrean prioritas kandidat potensial dan memperbaruinya saat pencarian berlangsung. Panjang antrean ini dikonfigurasi oleh parameter efSearch.

  4. Penyempurnaan: Saat algoritma bergerak ke tingkat yang lebih rendah dan lebih terperinci, HNSW mempertimbangkan lebih banyak tetangga di dekat kueri, yang memungkinkan sekumpulan vektor kandidat disempurnakan, meningkatkan akurasi.

  5. Penyelesaian: Pencarian selesai ketika jumlah tetangga terdekat yang diinginkan telah diidentifikasi, atau ketika kriteria penghentian lainnya terpenuhi. Jumlah tetangga terdekat yang diinginkan ini diatur oleh parameter kwaktu kueri .

Metrik kesamaan yang digunakan untuk mengukur kemiripan

Algoritma menemukan vektor kandidat untuk mengevaluasi kesamaan. Untuk melakukan tugas ini, perhitungan metrik kesamaan membandingkan vektor kandidat dengan vektor kueri dan mengukur kesamaan. Algoritma melacak kumpulan vektor yang diurutkan dari sebagian besar vektor serupa yang ditemukan, yang membentuk hasil berperingkat yang ditetapkan ketika algoritma telah mencapai penyelesaian.

Metrik Deskripsi
cosine Metrik ini mengukur sudut antara dua vektor, dan tidak terpengaruh oleh panjang vektor yang berbeda. Secara matematis, ia menghitung sudut antara dua vektor. Cosine adalah metrik kesamaan yang digunakan oleh model penyematan Azure OpenAI, jadi jika Anda menggunakan Azure OpenAI, tentukan cosine dalam konfigurasi vektor.
dotProduct Metrik ini mengukur panjang setiap pasangan dua vektor, dan sudut di antara keduanya. Secara matematis, ia menghitung produk besar vektor dan sudut di antara mereka. Untuk vektor yang dinormalisasi, ini identik dengan kesamaan cosine , tetapi sedikit lebih berkinerja.
euclidean (juga dikenal sebagai l2 norm) Metrik ini mengukur panjang perbedaan vektor antara dua vektor. Secara matematis, ini menghitung jarak Euclidean antara dua vektor, yang merupakan norma l2 dari perbedaan kedua vektor.

Skor dalam hasil pencarian vektor

Skor dihitung dan ditetapkan untuk setiap kecocokan, dengan kecocokan tertinggi dikembalikan sebagai k hasil. Properti @search.score berisi skor. Tabel berikut menunjukkan rentang di mana skor akan jatuh.

Metode pencarian Parameter Metrik penilaian Rentang
pencarian vektor @search.score Kosinus 0.333 - 1.00

Untukcosine metrik, penting untuk dicatat bahwa yang dihitung @search.score bukan nilai kosinus antara vektor kueri dan vektor dokumen. Sebaliknya, Azure AI Search menerapkan transformasi sehingga fungsi skor menurun secara monoton, yang berarti nilai skor akan selalu berkurang nilainya saat kesamaan menjadi lebih buruk. Transformasi ini memastikan bahwa skor pencarian dapat digunakan untuk tujuan peringkat.

Ada beberapa nuansa dengan skor kesamaan:

  • Kesamaan kosinus didefinisikan sebagai kosinus sudut antara dua vektor.
  • Jarak kosinus didefinisikan sebagai 1 - cosine_similarity.

Untuk membuat fungsi yang menurun secara monoton, didefinisikan @search.score sebagai 1 / (1 + cosine_distance).

Pengembang yang membutuhkan nilai kosinus alih-alih nilai sintetis dapat menggunakan rumus untuk mengonversi skor pencarian kembali ke jarak kosinus:

double ScoreToSimilarity(double score)
{
    double cosineDistance = (1 - score) / score;
    return  -cosineDistance + 1;
}

Memiliki nilai kosinus asli dapat berguna dalam solusi kustom yang menyiapkan ambang batas untuk memangkas hasil hasil berkualitas rendah.

Tips untuk penyetelan relevansi

Jika Anda tidak mendapatkan hasil yang relevan, bereksperimenlah dengan perubahan pada konfigurasi kueri. Tidak ada fitur penyetelan tertentu, seperti profil penilaian atau peningkatan bidang atau istilah, untuk kueri vektor:

  • Bereksperimen dengan ukuran potongan dan tumpang tindih. Coba tingkatkan ukuran gugus dan memastikan ada tumpang tindih yang cukup untuk mempertahankan konteks atau kelangsungan antar gugus.

  • Untuk HNSW, cobalah berbagai tingkat efConstruction untuk mengubah komposisi internal grafik kedekatan. Defaultnya adalah 400. Rentangnya adalah 100 hingga 1.000.

  • Tingkatkan k hasil untuk memberi lebih banyak hasil pencarian ke dalam model obrolan, jika Anda menggunakannya.

  • Coba kueri hibrid dengan peringkat semantik. Dalam pengujian tolok ukur, kombinasi ini secara konsisten menghasilkan hasil yang paling relevan.

Langkah berikutnya