Konfigurasi Pencarian Web
Konfigurasi webSearch memungkinkan Anda untuk menyesuaikan fungsionalitas pencarian web di dalam LibreChat, termasuk penyedia pencarian, pengikis konten (content scrapers), dan pemeringkat ulang hasil (result rerankers).
Ikhtisar
Fitur pencarian web terdiri dari tiga komponen utama:
- Penyedia Pencarian: Layanan yang melakukan pencarian web awal
- Scrapers: Layanan yang mengekstrak konten dari halaman web
- Rerankers: Layanan yang menyusun ulang hasil pencarian untuk relevansi yang lebih baik
Contoh
webSearch:
# Search Provider Configuration
serperApiKey: "${SERPER_API_KEY}"
searxngInstanceUrl: "${SEARXNG_INSTANCE_URL}"
searxngApiKey: "${SEARXNG_API_KEY}"
searchProvider: "serper" # Options: "serper", "searxng", "tavily"
# Tavily Configuration (search and/or scraper)
tavilyApiKey: "${TAVILY_API_KEY}"
# Optional: custom Tavily-compatible endpoints
tavilySearchUrl: "${TAVILY_SEARCH_URL}"
tavilyExtractUrl: "${TAVILY_EXTRACT_URL}"
# Scraper Configuration
firecrawlApiKey: "${FIRECRAWL_API_KEY}"
firecrawlApiUrl: "${FIRECRAWL_API_URL}"
firecrawlVersion: "${FIRECRAWL_VERSION}"
scraperProvider: "firecrawl" # Options: "firecrawl", "serper", "tavily"
# Reranker Configuration
jinaApiKey: "${JINA_API_KEY}"
jinaApiUrl: "${JINA_API_URL}"
cohereApiKey: "${COHERE_API_KEY}"
rerankerType: "jina" # Options: "jina", "cohere", "none"
# General Settings
scraperTimeout: 7500 # Timeout in milliseconds for scraper requests (default: 7500)
safeSearch: 1 # Options: 0 (OFF), 1 (MODERATE - default), 2 (STRICT)Penyedia Pencarian
searchProvider
| Key | Type | Description | Example |
|---|---|---|---|
| searchProvider | String | Menentukan penyedia pencarian mana yang akan digunakan. | Options: "serper", "searxng", "tavily" |
serperApiKey
| Key | Type | Description | Example |
|---|---|---|---|
| serperApiKey | String | Nama variabel lingkungan untuk kunci API Serper. Jika tidak diatur di .env, pengguna akan diminta untuk menyediakannya melalui UI. | ${SERPER_API_KEY} |
Catatan: Dapatkan kunci API Anda dari Serper.dev
searxngInstanceUrl
| Key | Type | Description | Example |
|---|---|---|---|
| searxngInstanceUrl | String | Nama variabel lingkungan untuk URL instans SearXNG. Jika tidak diatur di .env, pengguna akan diminta untuk menyediakannya melalui UI. | ${SEARXNG_INSTANCE_URL} |
searxngApiKey
| Key | Type | Description | Example |
|---|---|---|---|
| searxngApiKey | String | Nama variabel lingkungan untuk kunci API SearXNG. Jika tidak diatur di .env, pengguna akan diminta untuk menyediakannya melalui UI. | ${SEARXNG_API_KEY} |
Catatan: Ini bersifat opsional dan hanya diperlukan jika instans SearXNG Anda memerlukan autentikasi.
tavilyApiKey
| Key | Type | Description | Example |
|---|---|---|---|
| tavilyApiKey | String | Nama variabel lingkungan untuk kunci API Tavily. Digunakan untuk pencarian dan scraper. Jika tidak diatur di .env, pengguna akan diminta untuk menyediakannya melalui UI. | ${TAVILY_API_KEY} |
Catatan: Dapatkan API key Anda dari Tavily
tavilySearchUrl
| Key | Type | Description | Example |
|---|---|---|---|
| tavilySearchUrl | String | Nama variabel lingkungan untuk URL API Tavily Search kustom. Opsional; secara default menggunakan pencarian yang di-host oleh Tavily jika tidak diatur. | ${TAVILY_SEARCH_URL} |
tavilyExtractUrl
| Key | Type | Description | Example |
|---|---|---|---|
| tavilyExtractUrl | String | Nama variabel lingkungan untuk URL API Tavily Extract kustom. Opsional; secara default menggunakan extract yang dihosting oleh Tavily jika tidak diatur. | ${TAVILY_EXTRACT_URL} |
tavilySearchOptions
| Key | Type | Description | Example |
|---|---|---|---|
| tavilySearchOptions | Object | Opsi konfigurasi untuk pencarian Tavily. |
Subkey:
| Key | Type | Description | Example |
|---|---|---|---|
| searchDepth | String | Mengontrol pertukaran antara relevansi dan latensi. "basic" mengembalikan satu ringkasan NLP per URL. "advanced" mengembalikan beberapa cuplikan yang relevan secara semantik per URL (2 kredit API). "fast" menyeimbangkan kecepatan dan relevansi dengan cuplikan. "ultra-fast" meminimalkan latensi dengan satu ringkasan NLP. | Options: "basic", "advanced", "fast", "ultra-fast". Default: "basic" |
| maxResults | Number | Jumlah maksimum hasil pencarian yang akan dikembalikan. | Range: 1-20. Default: 5 |
| topic | String | Kategori pencarian. "news" berguna untuk pembaruan waktu nyata. "finance" untuk data keuangan. | Options: "general", "news", "finance". Default: "general" |
| includeImages | Boolean | Sertakan gambar dalam respons. Mengembalikan gambar kueri tingkat atas dan gambar per hasil. | Default: false |
| includeAnswer | Boolean or String | Sertakan jawaban yang dihasilkan LLM. "basic" atau true untuk jawaban singkat, "advanced" untuk jawaban mendetail. | Default: false |
| includeRawContent | Boolean or String | Sertakan konten HTML yang telah dibersihkan dan diurai. "markdown" atau true untuk format markdown, "text" untuk teks biasa. | Default: false |
| includeDomains | Array of Strings | Batasi pencarian ke domain tertentu. Maksimum 300 domain. | |
| excludeDomains | Array of Strings | Kecualikan domain tertentu dari hasil. Maksimum 150 domain. | |
| timeRange | String | Filter rentang waktu berdasarkan tanggal publikasi atau pembaruan terakhir. | Options: "day", "week", "month", "year" |
| includeImageDescriptions | Boolean | Saat includeImages bernilai true, tambahkan juga teks deskriptif untuk setiap gambar. | Default: false |
| includeFavicon | Boolean | Sertakan URL favicon untuk setiap hasil pencarian. | Default: false |
| chunksPerSource | Number | Jumlah maksimum potongan konten yang relevan per sumber. Hanya tersedia jika searchDepth diatur ke "advanced". | Range: 1-3. Default: 3 |
| safeSearch | Boolean | Penggantian safe_search Tavily opsional untuk permintaan Pencarian Tavily. Dihilangkan secara default; true mungkin memerlukan Tavily Enterprise. | Default: omitted |
| timeout | Number | Batas waktu permintaan HTTP sisi klien dalam milidetik. Mengontrol berapa lama waktu tunggu untuk respons API Tavily sebelum menyerah. | Default: 15000 |
Scrapers
firecrawlApiKey
| Key | Type | Description | Example |
|---|---|---|---|
| firecrawlApiKey | String | Nama variabel lingkungan untuk kunci API Firecrawl. Jika tidak diatur di .env, pengguna akan diminta untuk menyediakannya melalui UI. | ${FIRECRAWL_API_KEY} |
Catatan: Dapatkan API key Anda dari Firecrawl.dev
firecrawlApiUrl
| Key | Type | Description | Example |
|---|---|---|---|
| firecrawlApiUrl | String | Nama variabel lingkungan untuk URL API Firecrawl. Jika tidak diatur di .env, pengguna akan diminta untuk menyediakannya melalui UI. | ${FIRECRAWL_API_URL} |
Catatan: Ini bersifat opsional dan hanya diperlukan jika Anda menggunakan instance Firecrawl kustom.
firecrawlVersion
| Key | Type | Description | Example |
|---|---|---|---|
| firecrawlVersion | String | Nama variabel lingkungan untuk versi API Firecrawl (v0 atau v1). | ${FIRECRAWL_VERSION} |
scraperProvider
| Key | Type | Description | Example |
|---|---|---|---|
| scraperProvider | String | Menentukan layanan scraper mana yang akan digunakan. | Options: "firecrawl", "serper", "tavily" |
firecrawlOptions
| Key | Type | Description | Example |
|---|---|---|---|
| firecrawlOptions | Object | Opsi konfigurasi tingkat lanjut untuk scraper Firecrawl. |
Subkey:
formats
| Key | Type | Description | Example |
|---|---|---|---|
| formats | Array of Strings | Format yang disertakan dalam output. |
includeTags
| Key | Type | Description | Example |
|---|---|---|---|
| includeTags | Array of Strings | Tag yang disertakan dalam output. |
excludeTags
| Key | Type | Description | Example |
|---|---|---|---|
| excludeTags | Array of Strings | Tag untuk dikecualikan dari output. |
headers
| Key | Type | Description | Example |
|---|---|---|---|
| headers | Object | Header yang akan dikirim bersama permintaan. Dapat digunakan untuk mengirim cookie, user-agent, dll. |
waitFor
| Key | Type | Description | Example |
|---|---|---|---|
| waitFor | Number | Tentukan jeda dalam milidetik sebelum mengambil konten, agar halaman memiliki waktu yang cukup untuk dimuat. |
timeout
| Key | Type | Description | Example |
|---|---|---|---|
| timeout | Integer | Batas waktu dalam milidetik untuk permintaan scraping. Harus berupa bilangan bulat non-negatif. | Default: 7500 |
maxAge
| Key | Type | Description | Example |
|---|---|---|---|
| maxAge | Number | Mengembalikan versi halaman yang di-cache jika usianya lebih muda dari durasi ini dalam milidetik. Jika versi halaman yang di-cache lebih lama dari nilai ini, halaman tersebut akan di-scrape. |
Catatan: Jika Anda tidak memerlukan data yang sangat baru, mengaktifkan fitur ini dapat mempercepat proses scraping Anda hingga 500%.
mobile
| Key | Type | Description | Example |
|---|---|---|---|
| mobile | Boolean | Emulasi scraping dari perangkat seluler. |
skipTlsVerification
| Key | Type | Description | Example |
|---|---|---|---|
| skipTlsVerification | Boolean | Lewati verifikasi sertifikat TLS saat membuat permintaan. |
blockAds
| Key | Type | Description | Example |
|---|---|---|---|
| blockAds | Boolean | Mengaktifkan pemblokiran iklan dan pemblokiran popup cookie. |
removeBase64Images
| Key | Type | Description | Example |
|---|---|---|---|
| removeBase64Images | Boolean | Menghapus semua gambar base 64 dari output, yang mungkin sangat panjang. Teks alt gambar tetap ada di output, tetapi URL diganti dengan placeholder. |
parsePDF
| Key | Type | Description | Example |
|---|---|---|---|
| parsePDF | Boolean | Mengontrol bagaimana file PDF diproses selama scraping. |
storeInCache
| Key | Type | Description | Example |
|---|---|---|---|
| storeInCache | Boolean | Jika true, halaman akan disimpan di indeks dan cache Firecrawl. Mengaturnya ke false berguna jika aktivitas scraping Anda mungkin memiliki masalah perlindungan data. Menggunakan beberapa parameter yang terkait dengan scraping sensitif (headers) akan memaksa parameter ini menjadi false. |
zeroDataRetention
| Key | Type | Description | Example |
|---|---|---|---|
| zeroDataRetention | Boolean | Jika benar, ini akan mengaktifkan retensi data nol untuk scraping ini (memerlukan pengaturan sebelumnya di Firecrawl). |
location
| Key | Type | Description | Example |
|---|---|---|---|
| location | Object | Lokasi geografis dan pengaturan bahasa untuk scraping. |
onlyMainContent
| Key | Type | Description | Example |
|---|---|---|---|
| onlyMainContent | Boolean | Hanya kembalikan konten utama halaman, tidak termasuk header, nav, footer, dll. |
changeTrackingOptions
| Key | Type | Description | Example |
|---|---|---|---|
| changeTrackingOptions | Object | Konfigurasi untuk melacak perubahan pada konten yang di-scrape. |
Contoh:
webSearch:
firecrawlApiKey: "${FIRECRAWL_API_KEY}"
firecrawlOptions:
formats: ["markdown", "rawHtml"]
includeTags: ["main", "article", ".content"]
excludeTags: ["nav", "footer", ".ads"]
waitFor: 2000
timeout: 10000
mobile: false
blockAds: true
onlyMainContent: true
location:
country: "US"
languages: ["en"]Catatan: Untuk informasi mendetail mengenai opsi dan pengaturan default scraper Firecrawl, lihat Dokumentasi API Firecrawl.
tavilyScraperOptions
| Key | Type | Description | Example |
|---|---|---|---|
| tavilyScraperOptions | Object | Opsi konfigurasi untuk Tavily Extract (scraper). |
Subkey:
| Key | Type | Description | Example |
|---|---|---|---|
| extractDepth | String | Kedalaman proses ekstraksi. "advanced" mengambil lebih banyak data termasuk tabel dan konten tersemat dengan tingkat keberhasilan lebih tinggi namun dapat meningkatkan latensi. "basic" memakan 1 kredit per 5 URL yang berhasil, "advanced" memakan 2 kredit per 5 URL yang berhasil. | Options: "basic", "advanced". Default: "basic" |
| includeImages | Boolean | Sertakan daftar gambar yang diekstrak dari URL dalam respons. | Default: false |
| includeFavicon | Boolean | Sertakan URL favicon untuk setiap hasil yang diekstrak. | Default: false |
| format | String | Format konten halaman web yang diekstrak. "markdown" mengembalikan konten dalam format markdown. "text" mengembalikan teks biasa dan dapat meningkatkan latensi. | Options: "markdown", "text". Default: "markdown" |
| timeout | Number | Batas waktu dalam milidetik. Mengontrol batas waktu HTTP sisi klien. Jika diatur, ini juga mengirimkan batas waktu ekstraksi sisi server ke Tavily yang dikonversi ke detik dan dibatasi antara 1-60 detik. | Default: 15000 for basic, 30000 for advanced |
Contoh:
webSearch:
searchProvider: tavily
scraperProvider: tavily
tavilyApiKey: "${TAVILY_API_KEY}"
# Optional: custom Tavily-compatible endpoints
# tavilySearchUrl: "${TAVILY_SEARCH_URL}"
# tavilyExtractUrl: "${TAVILY_EXTRACT_URL}"
tavilySearchOptions:
searchDepth: basic
maxResults: 5
topic: general
tavilyScraperOptions:
extractDepth: basicCatatan: Untuk informasi mendetail mengenai opsi Tavily API, lihat Tavily API Documentation.
Rerankers
jinaApiKey
| Key | Type | Description | Example |
|---|---|---|---|
| jinaApiKey | String | Nama variabel lingkungan untuk kunci API Jina. Jika tidak diatur di .env, pengguna akan diminta untuk menyediakannya melalui UI. | ${JINA_API_KEY} |
Catatan: Dapatkan kunci API Anda dari Jina.ai
jinaApiUrl
| Key | Type | Description | Example |
|---|---|---|---|
| jinaApiUrl | String | Nama variabel lingkungan untuk URL API Jina. Jika tidak diatur di .env, pengguna akan diminta untuk menyediakannya melalui UI. | ${JINA_API_URL} |
Catatan: Ini bersifat opsional dan hanya diperlukan jika Anda menggunakan instans Jina kustom.
cohereApiKey
| Key | Type | Description | Example |
|---|---|---|---|
| cohereApiKey | String | Nama variabel lingkungan untuk kunci API Cohere. Jika tidak diatur di .env, pengguna akan diminta untuk menyediakannya melalui UI. | ${COHERE_API_KEY} |
Catatan: Dapatkan kunci API Anda dari Cohere Dashboard
rerankerType
| Key | Type | Description | Example |
|---|---|---|---|
| rerankerType | String | Menentukan layanan reranker mana yang akan digunakan. Atur ke "none" untuk melewati reranking. | Options: "jina", "cohere", "none" |
Pengaturan Umum
scraperTimeout
| Key | Type | Description | Example |
|---|---|---|---|
| scraperTimeout | Integer | Batas waktu dalam milidetik untuk permintaan scraper. Harus berupa bilangan bulat non-negatif. | Default: 7500 |
safeSearch
| Key | Type | Description | Example |
|---|---|---|---|
| safeSearch | Number | Tingkat penyaringan pencarian aman. 0 = OFF (tanpa penyaringan), 1 = MODERATE (default), 2 = STRICT (penyaringan maksimum). | Default: 1 (MODERATE) |
Catatan: Tingkat pencarian aman (safe search) diselaraskan dengan konvensi API pencarian standar. Pemfilteran MODERATE diaktifkan secara default untuk memberikan pemfilteran konten yang wajar sambil tetap menjaga efektivitas pencarian. Tavily tidak mewarisi pengaturan global ini secara default; gunakan tavilySearchOptions.safeSearch hanya jika akun Tavily Anda mendukung safe_search.
Catatan
- API keys dapat dikonfigurasi dengan dua cara:
- Atur variabel lingkungan yang ditentukan dalam konfigurasi YAML
- Jika variabel lingkungan tidak diatur, pengguna akan diminta untuk memberikan kunci API melalui UI
- Konfigurasi ini mendukung beberapa layanan untuk setiap komponen (providers, scrapers, rerankers)
- Jika jenis layanan tertentu tidak ditentukan, sistem akan mencoba semua layanan yang tersedia dalam kategori tersebut
- Safe search menyediakan tiga tingkat penyaringan konten: OFF (0), MODERATE (1), dan STRICT (2)
- Tavily tidak mewarisi pengaturan pencarian aman (safe search) global secara default; atur
tavilySearchOptions.safeSearchsecara eksplisit hanya jika akun Tavily Anda mendukungsafe_search - Jangan pernah memasukkan API key yang sebenarnya ke dalam konfigurasi YAML - gunakan hanya nama variabel lingkungan
Menyiapkan SearXNG
SearXNG adalah mesin pencari meta yang berfokus pada privasi yang dapat Anda host sendiri. Untuk informasi lebih lanjut, lihat dokumentasi resmi SearXNG.
Berikut adalah langkah-langkah untuk menyiapkan instans SearXNG Anda sendiri untuk digunakan dengan LibreChat:
Menggunakan Docker Desktop
-
Cari image resmi SearXNG
- Buka Docker Desktop
- Cari
searxng/searxngdi tab Images - Klik Run pada image resmi untuk menarik (pull) dan menjalankan container dari image tersebut secara otomatis
-
Menjalankan container
- Perluas menu tarik-turun Optional Settings di panel selanjutnya yang muncul setelah pengunduhan selesai.
- Atur detail konfigurasi yang Anda inginkan (nomor port, nama kontainer, dll.)
- Klik Run untuk memulai container
-
Konfigurasi SearXNG untuk LibreChat
- Buka tab
Filesdi Docker Desktop - Buka
/etc/searxng/settings.yaml - Buka editor file
- Navigasikan ke bagian
formats - Tambahkan
jsonsebagai format yang dapat diterima agar LibreChat dapat berkomunikasi dengan instans Anda - Simpan file tersebut
- Buka tab
-
Mulai ulang container
- Mulai ulang container agar perubahan diterapkan
Panduan Video:
Berikut adalah video untuk memandu Anda melalui proses ini dari awal hingga akhir dalam waktu sekitar satu menit:
Catatan: Dalam contoh ini, URL instance adalah http://localhost:55011 (nomor port ditemukan di bawah nama container di kiri atas pada akhir video)
Mengonfigurasi LibreChat untuk menggunakan SearXNG
Anda dapat mengonfigurasi SearXNG di LibreChat melalui UI atau melalui librechat.yaml.
Konfigurasi UI
-
Buka menu dropdown alat di bilah input obrolan

-
Klik ikon gerigi di sebelah Web Search

-
Pilih SearXNG dari menu dropdown Penyedia Pencarian

-
Masukkan detail konfigurasi Anda (misalnya URL instance, tipe scraper, dll.) dan klik simpan

-
Klik opsi Web Search di menu dropdown alat

-
Lencana Pencarian Web sekarang seharusnya sudah aktif, yang berarti kueri Anda sekarang dapat menggunakan fungsi pencarian web

Bagaimana panduan ini?