Pencarian hibrid menggunakan vektor dan pencarian teks lengkap di Pencarian Azure AI

Note

Pencarian Azure AI tersedia melalui portal Azure, REST API, dan Azure SDK. Ini juga mendukung Foundry IQ, lapisan pengetahuan terkelola yang mengubah konten perusahaan menjadi pangkalan pengetahuan yang dapat digunakan kembali dan sadar izin untuk agen di portal Microsoft Foundry.

Pencarian hibrid adalah permintaan kueri tunggal yang dikonfigurasi untuk kueri teks lengkap dan vektor. Ini berfungsi dengan indeks pencarian yang berisi konten teks biasa yang dapat dicari dan embedding yang dihasilkan. Untuk keperluan kueri, pencarian hibrid:

  • Adalah permintaan kueri tunggal yang menyertakan parameter kueri search dan vectorQueries.
  • Menjalankan pencarian teks lengkap dan pencarian vektor secara paralel.
  • Menggabungkan hasil dari setiap kueri dengan menggunakan Reciprocal Rank Fusion (RRF).

Artikel ini menjelaskan konsep, manfaat, dan batasan pencarian hibrid. Tautan di akhir memberikan instruksi penggunaan dan langkah berikutnya. Anda juga dapat menonton video yang disematkan untuk penjelasan tentang bagaimana pengambilan hibrid berkontribusi pada aplikasi pencarian generatif berkualitas tinggi.

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 opsional yang meningkatkan kualitas hasil awal. Beberapa skenario, seperti mengkueri kode produk, jargon, tanggal, dan nama orang yang sangat khusus, berkinerja lebih baik dengan pencarian kata kunci karena dapat mengidentifikasi kecocokan yang tepat.

Pengujian benchmark pada himpunan data dunia nyata dan tolok ukur menunjukkan bahwa pemulihan data hibrida dengan pemeringkatan semantik menawarkan manfaat signifikan terhadap relevansi pencarian.

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

Bagaimana cara kerja pencarian hibrid?

Dalam indeks pencarian, bidang vektor yang berisi penyematan berdampingan dengan bidang tekstual dan numerik. Anda dapat merumuskan kueri hibrid yang dijalankan secara bersamaan. Kueri hibrid memanfaatkan fungsionalitas berbasis teks yang ada seperti pemfilteran, faset, pengurutan, profil penilaian, dan peringkat semantik pada bidang teks Anda, sambil menjalankan pencarian kesamaan terhadap vektor dalam satu permintaan pencarian.

Pencarian hibrid menggabungkan hasil dari kueri teks lengkap dan vektor, yang menggunakan fungsi peringkat yang berbeda seperti BM25 untuk teks, dan Hierarkis Navigable Small World (HNSW) dan K Nearest Neighbors (eKNN) lengkap untuk vektor. Algoritma RRF menggabungkan hasil. Respons kueri hanya menyediakan satu kumpulan hasil, menggunakan RRF untuk memberi peringkat hasil terpadu.

Struktur kueri hibrid

Pencarian hibrid bergantung pada indeks pencarian yang berisi bidang dari berbagai jenis data, termasuk teks dan angka biasa, koordinat geografis jika Anda ingin pencarian geospasial, dan vektor secara matematis mewakili potongan teks. Anda dapat menggunakan hampir semua kemampuan kueri di Pencarian Azure AI dengan kueri vektor, kecuali untuk interaksi sisi klien teks murni, seperti lengkapi otomatis dan saran.

Kueri hibrid perwakilan mungkin terlihat seperti berikut ini. Untuk keringkasan, kueri vektor memiliki nilai placeholder.

POST https://{{searchServiceName}}.search.windows.net/indexes/hotels-vector-quickstart/docs/search?api-version=2026-04-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",
    "vectorFilterMode": "postFilter",
    "facets": [ "Address/StateProvince"], 
    "vectorQueries": [
        {
            "kind": "vector",
            "vector": [ <array of embeddings> ],
            "k": 50,
            "fields": "DescriptionVector",
            "exhaustive": true,
            "oversampling": 20
        },
        {
            "kind": "vector",
            "vector": [ <array of embeddings> ],
            "k": 50,
            "fields": "Description_frVector",
            "exhaustive": false,
            "oversampling": 10
        }
    ],
    "skip": 0,
    "top": 10,
    "queryType": "semantic",
    "queryLanguage": "en-us",
    "semanticConfiguration": "my-semantic-config"
}

Poin-poin penting:

  • search menentukan satu kueri pencarian teks lengkap.
  • vectorQueries menentukan kueri vektor, yang dapat terdiri dari beberapa kueri, dengan tujuan menargetkan berbagai bidang vektor. Jika ruang penyematan menyertakan konten multibahasa, kueri vektor dapat menemukan kecocokan tanpa penganalisis bahasa atau terjemahan yang diperlukan. Jika Anda menggunakan ranker semantik, atur k ke 50 untuk memaksimalkan inputnya.
  • select menentukan bidang mana yang akan dikembalikan dalam hasil, yang harus berupa bidang teks yang dapat dibaca manusia jika Anda menunjukkannya kepada pengguna atau mengirimkannya ke model bahasa besar (LLM).
  • filter dapat menentukan pencarian geospasial atau kriteria penyertaan dan pengecualian lainnya, seperti apakah parkir disertakan. Kueri geospasial dalam contoh ini menemukan hotel dalam radius 300 kilometer dari Washington, D.C. Anda bisa menerapkan filter di awal atau akhir pemrosesan kueri. Jika Anda menggunakan peringkat semantik, Anda mungkin ingin pasca-pemfilteran sebagai langkah terakhir, tetapi Anda harus menguji untuk mengonfirmasi perilaku mana yang terbaik untuk kueri Anda.
  • facets dapat digunakan untuk menghitung kelompok faset terhadap hasil yang dihasilkan dari kueri hibrid.
  • queryType=semantic memanggil pemeringkat semantik, menerapkan pemahaman pembacaan mesin untuk menampilkan hasil pencarian yang lebih relevan. Peringkat semantik bersifat opsional. Jika Anda tidak menggunakan fitur ini, hapus tiga baris terakhir kueri hibrid.

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 bersegi dijalankan, mesin pencari dapat menerapkan hasil operasional ke hasil pencarian hibrid pada respons.

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

Respons dari kueri mungkin terlihat seperti JSON berikut.

{
    "@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": "Swirling Currents 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 Valley 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
            }
        }
    ]
}