Bagikan melalui


Pencarian hibrid menggunakan vektor dan teks lengkap di Azure AI Search

Pencarian hibrid adalah kombinasi dari kueri teks lengkap dan vektor yang dijalankan terhadap indeks pencarian yang berisi konten teks biasa yang dapat dicari dan penyematan yang dihasilkan. Untuk tujuan kueri, pencarian hibrid adalah:

  • Satu permintaan kueri yang menyertakan search parameter kueri dan vectors
  • Menjalankan secara paralel
  • Dengan hasil gabungan dalam respons kueri, dinilai menggunakan Reciprocal Rank Fusion (RRF)

Artikel ini menjelaskan konsep, manfaat, dan batasan pencarian hibrid. Tonton video yang disematkan ini untuk penjelasan dan demo singkat tentang bagaimana pengambilan hibrid berkontribusi pada aplikasi gaya obrolan dan salinan berkualitas tinggi.

Bagaimana cara kerja pencarian hibrid?

Di Azure AI Search, bidang vektor yang berisi penyematan dapat hidup bersama bidang tekstual dan numerik, memungkinkan Anda merumuskan kueri hibrid yang dijalankan secara paralel. Kueri hibrid dapat memanfaatkan fungsionalitas yang ada seperti pemfilteran, faset, pengurutan, profil penilaian, dan peringkat semantik dalam satu permintaan pencarian.

Pencarian hibrid menggabungkan hasil dari kueri teks lengkap dan vektor, yang menggunakan fungsi peringkat yang berbeda seperti BM25 dan HNSW. Algoritma Reciprocal Rank Fusion (RRF) menggabungkan hasil. Respons kueri hanya menyediakan satu kumpulan hasil, menggunakan RRF untuk memilih kecocokan yang paling relevan dari setiap kueri.

Struktur kueri hibrid

Pencarian hibrid diprediksikan memiliki indeks pencarian yang berisi bidang dari berbagai jenis data, termasuk teks dan angka biasa, koordinat geografis untuk pencarian geospasial, dan vektor untuk representasi matematika dari potongan teks. Anda dapat menggunakan hampir semua kemampuan kueri di Azure AI Search dengan kueri vektor, kecuali untuk interaksi sisi klien seperti lengkapi otomatis dan saran.

Kueri hibrid representatif mungkin sebagai berikut (perhatikan vektor dipangkas untuk brevity):

POST https://{{searchServiceName}}.search.windows.net/indexes/hotels-vector-quickstart/docs/search?api-version=2023-11-01
  content-type: application/JSON
{
    "count": true,
    "search": "historic hotel walk to restaurants and shopping",
    "select": "HotelId, HotelName, Category, Description, Address/City, Address/StateProvince",
    "filter": "geo.distance(Location, geography'POINT(-77.03241 38.90166)') le 300",
    "facets": [ "Address/StateProvince"], 
    "vectors": [
        {
            "value": [ <array of embeddings> ]
            "k": 7,
            "fields": "DescriptionVector"
        },
        {
            "value": [ <array of embeddings> ]
            "k": 7,
            "fields": "Description_frVector"
        }
    ],
    "queryType": "semantic",
    "queryLanguage": "en-us",
    "semanticConfiguration": "my-semantic-config"
}

Poin-poin penting meliputi:

  • search menentukan kueri pencarian teks lengkap.
  • vectors untuk kueri vektor, yang bisa beberapa, menargetkan beberapa bidang vektor. Jika ruang penyematan menyertakan konten multibahasa, kueri vektor dapat menemukan kecocokan tanpa penganalisis bahasa atau terjemahan yang diperlukan.
  • select menentukan bidang mana yang akan dikembalikan dalam hasil, yang bisa menjadi bidang teks yang dapat dibaca manusia.
  • filters dapat menentukan pencarian geospasial atau kriteria yang disertakan dan dikecualikan lainnya, seperti apakah parkir disertakan. Kueri geospasial dalam contoh ini menemukan hotel dalam radius 300 kilometer dari Washington D.C.
  • facets dapat digunakan untuk menghitung wadah faset atas hasil yang dikembalikan dari kueri hibrid.
  • queryType=semantic memanggil peringkat semantik, menerapkan pemahaman pembacaan mesin untuk memunculkan hasil pencarian yang lebih relevan.

Filter dan faset menargetkan struktur data dalam indeks yang berbeda dari indeks terbalik yang digunakan untuk pencarian teks lengkap dan indeks vektor yang digunakan untuk pencarian vektor. Dengan demikian, ketika filter dan operasi tersaring dijalankan, mesin pencari dapat menerapkan hasil operasional ke hasil pencarian hibrid dalam respons.

Perhatikan bagaimana tidak orderby ada dalam kueri. Urutan pengurutan eksplisit mengambil alih hasil berpangkat relevansi, jadi jika Anda menginginkan kesamaan dan relevansi BM25, hilangkan pengurutan dalam kueri Anda.

Respons dari kueri di atas mungkin terlihat seperti ini:

{
    "@odata.count": 3,
    "@search.facets": {
        "Address/StateProvince": [
            {
                "count": 1,
                "value": "NY"
            },
            {
                "count": 1,
                "value": "VA"
            }
        ]
    },
    "value": [
        {
            "@search.score": 0.03333333507180214,
            "@search.rerankerScore": 2.5229012966156006,
            "HotelId": "49",
            "HotelName": "Old Carrabelle Hotel",
            "Description": "Spacious rooms, glamorous suites and residences, rooftop pool, walking access to shopping, dining, entertainment and the city center.",
            "Category": "Luxury",
            "Address": {
                "City": "Arlington",
                "StateProvince": "VA"
            }
        },
        {
            "@search.score": 0.032522473484277725,
            "@search.rerankerScore": 2.111117362976074,
            "HotelId": "48",
            "HotelName": "Nordick's Motel",
            "Description": "Only 90 miles (about 2 hours) from the nation's capital and nearby most everything the historic valley has to offer.  Hiking? Wine Tasting? Exploring the caverns?  It's all nearby and we have specially priced packages to help make our B&B your home base for fun while visiting the valley.",
            "Category": "Boutique",
            "Address": {
                "City": "Washington D.C.",
                "StateProvince": null
            }
        }
    ]
}

Pencarian hibrid menggabungkan kekuatan pencarian vektor dan pencarian kata kunci. Keuntungan dari pencarian vektor adalah menemukan informasi yang secara konseptual mirip dengan kueri pencarian Anda, bahkan jika tidak ada kecocokan kata kunci dalam indeks terbalik. Keuntungan dari kata kunci atau pencarian teks lengkap adalah presisi, dengan kemampuan untuk menerapkan peringkat semantik yang meningkatkan kualitas hasil awal. Beberapa skenario - seperti mengkueri kode produk, jargon, tanggal, dan nama orang yang sangat khusus - dapat berkinerja lebih baik dengan pencarian kata kunci karena dapat mengidentifikasi kecocokan yang tepat.

Pengujian tolok ukur pada himpunan data dunia nyata dan tolok ukur menunjukkan bahwa pengambilan hibrid dengan peringkat semantik menawarkan manfaat signifikan dalam relevansi pencarian.

Video berikut menjelaskan bagaimana pengambilan hibrid memberi Anda data grounding yang optimal untuk menghasilkan respons AI yang berguna.

Baca juga

Pencarian vektor outperform dengan pengambilan dan peringkat hibrid (Blog teknologi)