全部产品
Search
文档中心

OpenSearch:Praktik terbaik untuk pencarian mendalam

更新时间:Jul 25, 2025

Fitur pencarian mendalam menyediakan sistem Q&A pengetahuan profesional berdasarkan arsitektur multi-agen. Fitur ini dirancang untuk memberikan jawaban mendalam yang akurat, fokus, dan komprehensif dengan mengambil data secara efisien, memahami maksud pengguna, mengintegrasikan informasi dari berbagai sumber, serta menghasilkan jawaban terstruktur. Dibandingkan dengan mesin pencari tradisional, fitur ini unggul dalam memecah pertanyaan kompleks, mengintegrasikan data multisumber, dan mengaitkan pengetahuan lintas domain.

Perbandingan

Tabel berikut menunjukkan perbandingan antara pencarian mendalam dan pencarian AI tradisional.

Dimensi

Pencarian Mendalam

Pencarian AI Tradisional

Kemampuan pemahaman

Inferensi kontekstual dan pengenalan maksud.

Pengambilan semantik dan pengambilan kata kunci.

Mode respons

Secara proaktif meminta detail kontekstual (seperti rentang waktu, batasan wilayah).

Secara pasif menerima pertanyaan asli.

Sumber data

Mendukung agregasi lintas platform (seperti domain pribadi, Internet, database).

Bergantung pada satu sumber data.

Kepadatan pengetahuan

Mengeluarkan beberapa referensi teranotasi dalam satu respons hingga pertanyaan dijawab dengan akurat.

Hanya menyediakan 3-5 segmen data terkait.

Kedalaman interaksi

Mendukung percakapan profesional multi-putaran berkelanjutan.

Bergantung pada jumlah putaran dalam penalaran.

Pertanyaan yang sesuai

Pertanyaan kompleks, terbuka (seperti analisis, perbandingan).

Pertanyaan sederhana, faktual.

Arsitektur

Pencarian mendalam didasarkan pada arsitektur multi-agen, yang mencakup agen tunggal berikut:

  • Agen pemahaman query: Memahami dan menulis ulang query asli.

  • Agen perencanaan otonom: Mengidentifikasi maksud query, merencanakan jalur eksekusi, serta memperbaiki jawaban.

  • Agen pencarian: Melakukan pengambilan pengetahuan dan ringkasan dalam putaran saat ini.

  • Agen percakapan santai: Menanggapi percakapan santai, seperti "Halo".

  • Agen klarifikasi: Menghasilkan pertanyaan tindak lanjut untuk menjelaskan pertanyaan ambigu.

  • Agen ringkasan: Memberikan jawaban akhir atas pertanyaan.

Contoh

Konsol

1. Masuk ke Konsol OpenSearch, pilih Edisi Pencarian Percakapan Berbasis LLM OpenSearch. Klik Instance Management di panel navigasi sebelah kiri, lalu klik Manage.

image

2. Di halaman detail instans, klik Uji Q&A, aktifkan Pencarian Mendalam. Masukkan pertanyaan Anda di kotak dialog, lalu klik Kirim.

2

3. Lihat respons Q&A.

3

Panggilan dari API

Parameter

Parameter

Tipe

Diperlukan

Nilai default

Deskripsi

options.chat.enable_deep_search

Boolean

Tidak

true

Menentukan apakah akan mengaktifkan fitur pencarian mendalam.

  • true: mengaktifkan fitur pencarian mendalam. Ini akan mengaktifkan beberapa putaran inferensi. Satu percakapan mengonsumsi waktu dan sumber daya komputasi yang relatif besar.

  • false: menonaktifkan fitur pencarian mendalam.

options.chat.agent.think_process

Boolean

Tidak

true

Menentukan apakah akan menampilkan proses berpikir.

options.chat.agent.max_think_round

Integer

Tidak

10

Jumlah putaran berpikir (maksimum 20).

options.chat.agent.language

String

Tidak

AUTO

Bahasa untuk proses berpikir dan jawaban.

AUTO: pilih Cina atau Inggris berdasarkan query.

CN: Cina.

EN: Inggris.

Catatan

Untuk informasi tentang parameter Q&A lengkap, lihat parameter Q&A.

Contoh body permintaan

{
    "question" : {
        "text" : "Rekomendasikan 3 album Jay Chou",
        "type" : "TEXT"
    },
    "options": {
      "retrieve": {
      "web_search": {
        "enable": true
        }
      },
      "chat": {
        "enable_deep_search": true,
        "model": "qwen3-235b-a22b"
      },
      "agent": {
        "think_process": true,
        "max_think_round": 10,
        "language": "AUTO"
      }
    }
  }

Parameter respons

Parameter

Tipe

Deskripsi

request_id

String

ID permintaan.

status

String

Status pemrosesan permintaan.

  • OK: menunjukkan bahwa permintaan berhasil.

  • FAIL: menunjukkan bahwa permintaan gagal.

latency

Float

Waktu permintaan sukses, dikonsumsi oleh server. Unit: milidetik.

id

Integer

ID kunci utama.

title

String

Judul dokumen.

category

String

Nama kategori.

url

String

Tautan dokumen.

answer

String

Hasil Q&A.

type

String

Tipe hasil yang dikembalikan.

scores

Array

Skor konten dokumen.

event

String

Acara berpikir.

THINK+ACTION+ANSWER adalah satu putaran (THINK tidak dijamin ditampilkan). THINK menunjukkan berpikir, ACTION menunjukkan tindakan yang dilakukan, dan ANSWER menunjukkan kesimpulan dari putaran berpikir ini. SUMMARY adalah hasil akhir, hanya satu untuk tipe teks.

event_status

String

Menunjukkan apakah hasilnya lengkap.

PROCESSING: menjawab sedang berlangsung.

FINISHED: menjawab selesai.

code

String

Kode kesalahan (tidak dikembalikan jika tidak ada kesalahan).

message

String

Pesan kesalahan (tidak dikembalikan jika tidak ada kesalahan).

Contoh body respons

{
    "request_id": "f1b9*****************2853a",
    "status": "OK",
    "latency": 33967.562031,
    "result": {
        "data": [
            {
                "answer": "Pengguna meminta rekomendasi untuk 3 album Jay Chou. Saya perlu memahami dulu apa saja album Jay Chou, lalu memilih 3 yang representatif untuk direkomendasikan.",
                "type": "TEXT_MARKDOWN",
                "reference": [],
                "rich_text_ref": [],
                "event": "THINK",
                "event_status": "FINISHED"
            },
            {
                "answer": "Daftar semua album Jay Chou",
                "type": "TEXT_MARKDOWN",
                "reference": [],
                "rich_text_ref": [],
                "event": "ACTION",
                "event_status": "FINISHED"
            },
            {
                "answer": "Daftar album Jay Chou (diurutkan berdasarkan tahun rilis):  \n\n1. **《JAY》** (2000)  \n2. **《Fantasy》** (2001)  \n3. **《The Eight Dimensions》** (2002)  \n4. **《Ye Hui Mei》** (2003)  \n5. **《Common Jasmine Orange》** (2004)  \n6. **《November's Chopin》** (2005)  \n7. **《Still Fantasy》** (2006)  \n8. **《On the Run》** (2007)  \n9. **《Capricorn》** (2008)  \n10. **《The Era》** (2010)  \n11. **《Exclamation Mark》** (2011)  \n12. **《Opus 12》** (2012)  \n13. **《Aiyo, Not Bad》** (2014)  \n14. **《Jay Chou's Bedtime Stories》** (2016)  \n15. **《Greatest Works of Art》** (2022)  \n\nCatatan: Beberapa hasil pencarian menyebutkan lagu-lagu yang sebenarnya adalah trek dalam album. Saya telah mengorganisasikannya menjadi daftar album lengkap.",
                "type": "TEXT_MARKDOWN",
                "reference": [],
                "rich_text_ref": [],
                "event": "ANSWER",
                "event_status": "FINISHED"
            },
            {
                "answer": "\nPertama, pertanyaan pengguna adalah: \"Rekomendasikan 3 album Jay Chou\". Saya perlu menjawab berdasarkan informasi yang diketahui. Informasi yang diketahui mencakup banyak dokumen yang menggambarkan album-album Jay Chou.\n\nMereview informasi yang diketahui:\n- [Dokumen 01] mencantumkan album dan lagu Jay Chou, tetapi tampaknya hanya menyebutkan album \"JAY\" dan mencantumkan beberapa lagu. Dokumen dimulai dengan mengatakan \"Karya musik Jay Chou mencakup enam album pribadi resmi dan empat album EP\", tetapi tidak sepenuhnya mencantumkan nama-nama album spesifik. Itu mencantumkan lagu-lagu, tetapi hanya \"JAY\" yang disebutkan secara eksplisit sebagai nama album.\n- [Dokumen 02] menyebutkan album seperti \"The Eight Dimensions\", \"Jay Chou's Bedtime Stories\", \"Fantasy\", \"Jay\" dan memberikan tahun-tahunnya.\n- [Dokumen 03] mirip dengan [Dokumen 02], menyebutkan album seperti \"Greatest Works of Art\", \"Jay Chou's Bedtime Stories\", \"Aiyo, Not Bad\", \"Opus 12\", \"Exclamation Mark\".\n- [Dokumen 04] menyebutkan \"JAY\" dan \"Fantasy\" dan menggambarkannya.\n- [Dokumen 05] mirip dengan [Dokumen 02] dan [Dokumen 03], menyebutkan album yang sama.\n\nDari dokumen-dokumen ini, saya dapat mengekstrak daftar album Jay Chou:\n- [Dokumen 02] dan [Dokumen 03] jelas mencantumkan nama-nama album dan tahun-tahunnya:\n  - \"Greatest Works of Art\" 2022\n  - \"Jay Chou's Bedtime Stories\" 2016\n  - \"Aiyo, Not Bad\" 2014\n  - \"Opus 12\" 2012\n  - \"Exclamation Mark\" 2011\n- Selain itu, [Dokumen 01] menyebutkan \"JAY\" 2000, [Dokumen 04] juga menyebutkan \"JAY\" dan \"Fantasy\".\n- [Dokumen 02] juga menyebutkan \"The Eight Dimensions\" 2002, \"Fantasy\" 2001, \"Jay\" 2000 (mungkin merujuk pada \"JAY\").\n\nMenggabungkan semua dokumen, album Jay Chou mencakup yang berikut:\n- \"JAY\" 2000 [Dokumen 01][Dokumen 04]\n- \"Fantasy\" 2001 [Dokumen 02][Dokumen 04]\n- \"The Eight Dimensions\" 2002 [Dokumen 02]\n- \"Exclamation Mark\" 2011 [Dokumen 02][Dokumen 03]\n- \"Opus 12\" 2012 [Dokumen 02][Dokumen 03]\n- \"Aiyo, Not Bad\" 2014 [Dokumen 02][Dokumen 03]\n- \"Jay Chou's Bedtime Stories\" 2016 [Dokumen 02][Dokumen 03]\n- \"Greatest Works of Art\" 2022 [Dokumen 02][Dokumen 03]\n\nPengguna meminta 3 rekomendasi album. Saya perlu memilih berdasarkan informasi yang diketahui dan memastikan setiap poin memiliki dukungan sumber.\n\nKriteria rekomendasi: Saya harus memilih beberapa album klasik atau representatif. Dari dokumen-dokumen:\n- [Dokumen 02] dan [Dokumen 03] sangat memuji \"Fantasy\", menyebutnya sebagai \"puncak karier musik Jay Chou dan tolok ukur era yang banyak musisi coba tiru tetapi sulit dilewati.\" [Dokumen 02][Dokumen 03]\n- [Dokumen 01] menyebutkan \"JAY\" sebagai album pertama.\n- [Dokumen 02] menyebutkan bahwa \"The Eight Dimensions\" melanjutkan gaya dua album pertama dan memenangkan banyak penghargaan. [Dokumen 02]\n- Album lain seperti \"Jay Chou's Bedtime Stories\" dan \"Greatest Works of Art\" juga disebutkan.\n\nJadi, saya bisa merekomendasikan:\n1. \"Fantasy\" - karena digambarkan sebagai puncak dan tolok ukur.\n2. \"JAY\" - sebagai album pertama, memiliki signifikansi historis.\n3. \"The Eight Dimensions\" - karena melanjutkan kesuksesan dan memenangkan penghargaan.\n\nAtau, saya bisa memilih yang lebih baru, tetapi dokumen-dokumen menekankan pentingnya album awal.\n\nMemastikan kutipan sumber: Setiap fakta harus dikutip dalam format [Dokumen xx].\n\nPersyaratan jawaban:\n- Gunakan bahasa Cina.\n- Jika informasi yang diketahui dapat menjawab pertanyaan, harus menggunakan informasi yang diketahui dan mengutip sumber.\n- Gunakan format markdown kaya: seperti daftar, tabel, dll.\n- Nada alami, tidak kaku.\n- Akurasi, jangan membuat informasi.\n\nStruktur jawaban:\n- Mulailah dengan merekomendasikan langsung 3 album.\n- Berikan alasan untuk setiap album, berdasarkan dokumen.\n- Organisasikan menggunakan daftar atau tabel.\n- Kutip sumber.\n\nRekomendasi akhir:\n1. \"Fantasy\" (2001) - Alasan: Digambarkan sebagai puncak karier musik Jay Chou dan tolok ukur era. [Dokumen 02][Dokumen 03]\n2. \"JAY\" (2000) - Alasan: Album pertama, menetapkan gaya musiknya. [Dokumen 01][Dokumen 04]\n3. \"The Eight Dimensions\" (2002) - Alasan: Melanjutkan gaya karya sebelumnya, memenangkan banyak penghargaan, membawa harapan bagi industri rekaman. [Dokumen 02]\n\nAtau, pertimbangkan \"Jay Chou's Bedtime Stories\" atau \"Greatest Works of Art\", tetapi dokumen-dokumen memiliki deskripsi yang lebih sedikit tentang mereka, sementara album awal memiliki lebih banyak evaluasi.\n\nDi [Dokumen 02][Dokumen 03], ada deskripsi rinci tentang \"Fantasy\", album lain hanya dicantumkan.\n\nJadi, memilih ketiganya masuk akal.\n\nGunakan markdown: Bisa menggunakan daftar berurutan atau tabel.\n\nSebagai contoh:\n- Gunakan ### untuk jud<ul><li><p>Gunakan ### untuk judul</p></li><li><p>Daftar deskripsi</p></li><li><p>Cetak tebal nama album</p></li></ul><p>Pastikan tidak ada informasi tambahan yang ditambahkan: hanya berdasarkan dokumen.</p></section></section><section><h3></h3><section><h4></h4><p>Konfigurasikan variabel lingkungan  dan .</p><note><ul><li><p>AccessKey akun Alibaba Cloud memiliki izin untuk memanggil semua operasi API. Kami menyarankan Anda menggunakan Pengguna RAM untuk memanggil operasi API atau melakukan pemeliharaan rutin. Untuk informasi lebih lanjut, lihat <a baseurl="t2889377_v1_4_0.xdita" data-node="23758" data-root="66095" data-tag="xref" href="t23758.xdita#" id="461125c59ewa9">Buat Pengguna RAM</a>.</p></li><li><p>Untuk informasi tentang cara membuat ID AccessKey dan rahasia AccessKey, lihat <a baseurl="t2889377_v1_4_0.xdita" data-node="162684" data-root="66095" data-tag="xref" href="t162684.xdita#" id="d1ad4f66a30cq">Buat AccessKey</a>.</p></li><li><p>Jika Anda menggunakan AccessKey Pengguna RAM, pastikan Pengguna RAM diberi izin .</p></li><li><p>Jangan menyimpan Pasangan AccessKey Anda di kode proyek Anda. Jika tidak, AccessKey Anda mungkin bocor. Ini mengancam keamanan semua sumber daya di bawah akun Anda.</p></li></ul></note><ul><li><p>Metode konfigurasi untuk  dan :</p><p>Ganti <code data-tag="code" id="9a6307f44fxfh"><access_key_id>

Panggilan dari SDK

Konfigurasikan variabel lingkungan

Konfigurasikan variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_ID dan ALIBABA_CLOUD_ACCESS_KEY_SECRET.

Penting
  • AccessKey dari akun Alibaba Cloud memiliki izin untuk memanggil semua Operasi API. Kami menyarankan Anda menggunakan Pengguna RAM untuk memanggil Operasi API atau melakukan O&M rutin. Untuk informasi lebih lanjut, lihat Buat Pengguna RAM.

  • Untuk informasi tentang cara membuat ID AccessKey dan Rahasia AccessKey, lihat Buat AccessKey.

  • Jika Anda menggunakan AccessKey dari Pengguna RAM, pastikan bahwa Pengguna RAM diberi AliyunOpenSearchFullAccess izin.

  • Jangan menyimpan Pasangan AccessKey Anda di kode proyek Anda. Jika tidak, AccessKey Anda mungkin bocor, yang dapat mengancam keamanan semua sumber daya di bawah akun Anda.

  • Metode konfigurasi untuk Linux dan macOS:

    Ganti <access_key_id> dengan ID AccessKey dari Pengguna RAM Anda dan <access_key_secret> dengan Rahasia AccessKey dari Pengguna RAM Anda.

    export ALIBABA_CLOUD_ACCESS_KEY_ID=<access_key_id> 
    export ALIBABA_CLOUD_ACCESS_KEY_SECRET=<access_key_secret>
  • Metode konfigurasi untuk Windows:

    1. Buat file variabel lingkungan, tambahkan variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_ID dan ALIBABA_CLOUD_ACCESS_KEY_SECRET, serta tulis ID AccessKey dan Rahasia AccessKey yang telah disiapkan.

    2. Mulai ulang Windows.

Tambahkan dependensi

<dependency>
        <groupId>com.aliyun.opensearch</groupId>
        <artifactId>aliyun-sdk-opensearch</artifactId>
        <version>6.0.0</version>
</dependency>

Kode

Referensikan kode contoh berikut untuk menyelesaikan panggilan.

package com.aliyun.opensearch;

import com.aliyun.opensearch.OpenSearchClient;
import com.aliyun.opensearch.sdk.generated.OpenSearch;
import com.aliyun.opensearch.sdk.generated.commons.OpenSearchClientException;
import com.aliyun.opensearch.sdk.generated.commons.OpenSearchException;
import com.aliyun.opensearch.sdk.generated.commons.OpenSearchResult;

import java.util.HashMap;
import java.util.Map;

public class LLMSearch {
    private static String accesskey = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID");
    private static String secret = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
    
    private static String appName = "Nama aplikasi.";
    private static String host = "Titik akhir API dari aplikasi.";
    private static String path = "/apps/%s/actions/multi-search";

    public static void main(String[] args) {

        String appPath = String.format(path, appName);
        //ApiReadTimeOut
        OpenSearch openSearch = new OpenSearch(accesskey, secret, host);
        openSearch.setTimeout(90000);

        OpenSearchClient openSearchClient = new OpenSearchClient(openSearch);

        Map<String, String> params = new HashMap<String, String>() {{
            put("format", "full_json");
            put("_POST_BODY", "{\"question\":{\"text\":\"Rekomendasikan 3 album Jay Chou\",\"type\":\"TEXT\",\"session\":\"\"},\"options\":{\"chat\":{\"stream\":true,\"enable_deep_search\":true,\"model\":\"opensearch-qwen\"}}}");

        }};
        try {
            OpenSearchResult openSearchResult = openSearchClient
                    .callAndDecodeResult(appPath, params, "POST");
            System.out.println("RequestID=" + openSearchResult.getTraceInfo().getRequestId());
            System.out.println(openSearchResult.getResult());
        } catch (
                OpenSearchException e) {
            System.out.println("RequestID=" + e.getRequestId());
            System.out.println("ErrorCode=" + e.getCode());
            System.out.println("ErrorMessage=" + e.getMessage());
        } catch (
                OpenSearchClientException e) {
            System.out.println("ErrorMessage=" + e.getMessage());
        }
    }
}