Skip to main content
LibreChat is joining ClickHouse to power the open-source Agentic Data Stack 🎉 Learn more
LibreChat

Cấu hình Tìm kiếm Web

Cấu hình webSearch cho phép bạn tùy chỉnh chức năng tìm kiếm web trong LibreChat, bao gồm các nhà cung cấp dịch vụ tìm kiếm, công cụ thu thập nội dung và công cụ xếp hạng lại kết quả.

Tổng quan

Tính năng tìm kiếm web bao gồm ba thành phần chính:

  1. Search Providers: Các dịch vụ thực hiện tìm kiếm web ban đầu
  2. Scrapers: Các dịch vụ trích xuất nội dung từ các trang web
  3. Rerankers: Các dịch vụ sắp xếp lại kết quả tìm kiếm để có độ liên quan tốt hơn

Ví dụ

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)

Các nhà cung cấp tìm kiếm

searchProvider

KeyTypeDescriptionExample
searchProviderStringChỉ định nhà cung cấp tìm kiếm sẽ sử dụng.Options: "serper", "searxng", "tavily"

serperApiKey

KeyTypeDescriptionExample
serperApiKeyStringTên biến môi trường cho khóa API Serper. Nếu không được thiết lập trong .env, người dùng sẽ được yêu cầu cung cấp thông qua giao diện người dùng (UI).${SERPER_API_KEY}

Lưu ý: Lấy khóa API của bạn từ Serper.dev

searxngInstanceUrl

KeyTypeDescriptionExample
searxngInstanceUrlStringTên biến môi trường cho URL của instance SearXNG. Nếu không được thiết lập trong .env, người dùng sẽ được nhắc cung cấp thông qua giao diện người dùng.${SEARXNG_INSTANCE_URL}

searxngApiKey

KeyTypeDescriptionExample
searxngApiKeyStringTên biến môi trường cho khóa API SearXNG. Nếu không được thiết lập trong .env, người dùng sẽ được yêu cầu cung cấp thông qua giao diện người dùng (UI).${SEARXNG_API_KEY}

Lưu ý: Đây là tùy chọn và chỉ cần thiết nếu instance SearXNG của bạn yêu cầu xác thực.

tavilyApiKey

KeyTypeDescriptionExample
tavilyApiKeyStringTên biến môi trường cho khóa API Tavily. Được sử dụng cho cả tìm kiếm và trình thu thập dữ liệu. Nếu không được thiết lập trong .env, người dùng sẽ được nhắc cung cấp thông qua giao diện người dùng.${TAVILY_API_KEY}

Lưu ý: Lấy API key của bạn từ Tavily

tavilySearchUrl

KeyTypeDescriptionExample
tavilySearchUrlStringTên biến môi trường cho URL API Tìm kiếm Tavily tùy chỉnh. Tùy chọn; mặc định là tìm kiếm được lưu trữ trên Tavily khi không được thiết lập.${TAVILY_SEARCH_URL}

tavilyExtractUrl

KeyTypeDescriptionExample
tavilyExtractUrlStringTên biến môi trường cho URL API Tavily Extract tùy chỉnh. Tùy chọn; mặc định sử dụng dịch vụ extract được lưu trữ bởi Tavily khi không được thiết lập.${TAVILY_EXTRACT_URL}

tavilySearchOptions

KeyTypeDescriptionExample
tavilySearchOptionsObjectCác tùy chọn cấu hình cho tìm kiếm Tavily.

Các khóa con:

KeyTypeDescriptionExample
searchDepthStringKiểm soát sự cân bằng giữa mức độ liên quan và độ trễ. "basic" trả về một bản tóm tắt NLP cho mỗi URL. "advanced" trả về nhiều đoạn trích liên quan về mặt ngữ nghĩa cho mỗi URL (tốn 2 tín dụng API). "fast" cân bằng giữa tốc độ và mức độ liên quan với các đoạn trích. "ultra-fast" giảm thiểu độ trễ với một bản tóm tắt NLP.Options: "basic", "advanced", "fast", "ultra-fast". Default: "basic"
maxResultsNumberSố lượng kết quả tìm kiếm tối đa được trả về.Range: 1-20. Default: 5
topicStringDanh mục của tìm kiếm. "news" hữu ích cho các cập nhật theo thời gian thực. "finance" cho dữ liệu tài chính.Options: "general", "news", "finance". Default: "general"
includeImagesBooleanBao gồm hình ảnh trong phản hồi. Trả về cả hình ảnh truy vấn cấp cao nhất và hình ảnh theo từng kết quả.Default: false
includeAnswerBoolean or StringBao gồm câu trả lời do LLM tạo. "basic" hoặc true cho câu trả lời nhanh, "advanced" cho câu trả lời chi tiết.Default: false
includeRawContentBoolean or StringBao gồm nội dung HTML đã được làm sạch và phân tích cú pháp. "markdown" hoặc true cho định dạng markdown, "text" cho văn bản thuần túy.Default: false
includeDomainsArray of StringsGiới hạn tìm kiếm trong các tên miền cụ thể. Tối đa 300 tên miền.
excludeDomainsArray of StringsLoại trừ các tên miền cụ thể khỏi kết quả. Tối đa 150 tên miền.
timeRangeStringBộ lọc phạm vi thời gian dựa trên ngày xuất bản hoặc ngày cập nhật gần nhất.Options: "day", "week", "month", "year"
includeImageDescriptionsBooleanKhi includeImages là true, hãy thêm cả văn bản mô tả cho mỗi hình ảnh.Default: false
includeFaviconBooleanBao gồm URL favicon cho mỗi kết quả tìm kiếm.Default: false
chunksPerSourceNumberSố lượng đoạn nội dung liên quan tối đa trên mỗi nguồn. Chỉ khả dụng khi searchDepth là "advanced".Range: 1-3. Default: 3
safeSearchBooleanGhi đè safe_search tùy chọn của Tavily cho các yêu cầu Tìm kiếm Tavily. Mặc định bị bỏ qua; true có thể yêu cầu Tavily Enterprise.Default: omitted
timeoutNumberThời gian chờ yêu cầu HTTP phía máy khách tính bằng mili giây. Kiểm soát thời gian chờ phản hồi từ Tavily API trước khi hủy bỏ.Default: 15000

Scrapers

firecrawlApiKey

KeyTypeDescriptionExample
firecrawlApiKeyStringTên biến môi trường cho khóa API Firecrawl. Nếu không được thiết lập trong .env, người dùng sẽ được nhắc cung cấp khóa này thông qua giao diện người dùng.${FIRECRAWL_API_KEY}

Lưu ý: Lấy khóa API của bạn từ Firecrawl.dev

firecrawlApiUrl

KeyTypeDescriptionExample
firecrawlApiUrlStringTên biến môi trường cho URL API Firecrawl. Nếu không được thiết lập trong .env, người dùng sẽ được nhắc cung cấp thông qua giao diện người dùng.${FIRECRAWL_API_URL}

Lưu ý: Đây là tùy chọn và chỉ cần thiết nếu bạn đang sử dụng một instance Firecrawl tùy chỉnh.

firecrawlVersion

KeyTypeDescriptionExample
firecrawlVersionStringTên biến môi trường cho phiên bản Firecrawl API (v0 hoặc v1).${FIRECRAWL_VERSION}

scraperProvider

KeyTypeDescriptionExample
scraperProviderStringChỉ định dịch vụ scraper nào sẽ được sử dụng.Options: "firecrawl", "serper", "tavily"

firecrawlOptions

KeyTypeDescriptionExample
firecrawlOptionsObjectCác tùy chọn cấu hình nâng cao cho trình thu thập dữ liệu Firecrawl.

Các khóa con:

formats

KeyTypeDescriptionExample
formatsArray of StringsCác định dạng cần bao gồm trong đầu ra.

includeTags

KeyTypeDescriptionExample
includeTagsArray of StringsCác thẻ cần bao gồm trong đầu ra.

excludeTags

KeyTypeDescriptionExample
excludeTagsArray of StringsCác thẻ cần loại trừ khỏi đầu ra.

headers

KeyTypeDescriptionExample
headersObjectCác tiêu đề (headers) cần gửi kèm theo yêu cầu. Có thể được sử dụng để gửi cookie, user-agent, v.v.

waitFor

KeyTypeDescriptionExample
waitForNumberChỉ định độ trễ tính bằng mili giây trước khi tìm nạp nội dung, cho phép trang có đủ thời gian để tải.

timeout

KeyTypeDescriptionExample
timeoutIntegerThời gian chờ tính bằng mili giây cho yêu cầu thu thập dữ liệu. Phải là một số nguyên không âm.Default: 7500

maxAge

KeyTypeDescriptionExample
maxAgeNumberTrả về phiên bản được lưu trong bộ nhớ đệm của trang nếu nó mới hơn khoảng thời gian này tính bằng mili giây. Nếu phiên bản được lưu trong bộ nhớ đệm của trang cũ hơn giá trị này, trang đó sẽ được thu thập lại.

Lưu ý: Nếu bạn không cần dữ liệu cực kỳ mới, việc bật tính năng này có thể tăng tốc độ thu thập dữ liệu của bạn lên 500%.

mobile

KeyTypeDescriptionExample
mobileBooleanMô phỏng việc thu thập dữ liệu từ thiết bị di động.

skipTlsVerification

KeyTypeDescriptionExample
skipTlsVerificationBooleanBỏ qua xác minh chứng chỉ TLS khi thực hiện các yêu cầu.

blockAds

KeyTypeDescriptionExample
blockAdsBooleanBật tính năng chặn quảng cáo và chặn cửa sổ bật lên cookie.

removeBase64Images

KeyTypeDescriptionExample
removeBase64ImagesBooleanLoại bỏ tất cả hình ảnh base 64 khỏi đầu ra, vốn có thể rất dài. Văn bản thay thế (alt text) của hình ảnh vẫn được giữ lại trong đầu ra, nhưng URL sẽ được thay thế bằng một trình giữ chỗ.

parsePDF

KeyTypeDescriptionExample
parsePDFBooleanKiểm soát cách các tệp PDF được xử lý trong quá trình thu thập dữ liệu.

storeInCache

KeyTypeDescriptionExample
storeInCacheBooleanNếu được đặt là true, trang sẽ được lưu trữ trong chỉ mục và bộ nhớ đệm của Firecrawl. Việc đặt thành false sẽ hữu ích nếu hoạt động thu thập dữ liệu của bạn có thể liên quan đến các vấn đề bảo vệ dữ liệu. Việc sử dụng một số tham số liên quan đến thu thập dữ liệu nhạy cảm (headers) sẽ buộc tham số này phải là false.

zeroDataRetention

KeyTypeDescriptionExample
zeroDataRetentionBooleanNếu được đặt là true, tùy chọn này sẽ cho phép không lưu giữ dữ liệu cho quá trình thu thập này (yêu cầu thiết lập trước trên Firecrawl).

location

KeyTypeDescriptionExample
locationObjectVị trí địa lý và cài đặt ngôn ngữ cho việc thu thập dữ liệu.

onlyMainContent

KeyTypeDescriptionExample
onlyMainContentBooleanChỉ trả về nội dung chính của trang, không bao gồm tiêu đề, thanh điều hướng, chân trang, v.v.

changeTrackingOptions

KeyTypeDescriptionExample
changeTrackingOptionsObjectCấu hình để theo dõi các thay đổi trong nội dung được thu thập.

Ví dụ:

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"]

Lưu ý: Để biết thông tin chi tiết về các tùy chọn và cài đặt mặc định của trình thu thập dữ liệu Firecrawl, hãy xem Tài liệu API Firecrawl.

tavilyScraperOptions

KeyTypeDescriptionExample
tavilyScraperOptionsObjectCác tùy chọn cấu hình cho Tavily Extract (scraper).

Các khóa con:

KeyTypeDescriptionExample
extractDepthStringĐộ sâu của quá trình trích xuất. "advanced" truy xuất nhiều dữ liệu hơn bao gồm bảng và nội dung nhúng với tỷ lệ thành công cao hơn nhưng có thể làm tăng độ trễ. "basic" tốn 1 credit cho mỗi 5 URL thành công, "advanced" tốn 2 credit cho mỗi 5 URL thành công.Options: "basic", "advanced". Default: "basic"
includeImagesBooleanBao gồm một danh sách các hình ảnh được trích xuất từ các URL trong phản hồi.Default: false
includeFaviconBooleanBao gồm URL favicon cho mỗi kết quả được trích xuất.Default: false
formatStringĐịnh dạng của nội dung trang web được trích xuất. "markdown" trả về nội dung ở định dạng markdown. "text" trả về văn bản thuần túy và có thể làm tăng độ trễ.Options: "markdown", "text". Default: "markdown"
timeoutNumberThời gian chờ tính bằng mili giây. Kiểm soát thời gian chờ HTTP phía máy khách. Khi được thiết lập, nó cũng gửi đến Tavily một thời gian chờ trích xuất phía máy chủ đã được chuyển đổi sang giây và giới hạn trong khoảng 1-60 giây.Default: 15000 for basic, 30000 for advanced

Ví dụ:

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: basic

Lưu ý: Để biết thông tin chi tiết về các tùy chọn Tavily API, hãy xem Tavily API Documentation.

Rerankers

jinaApiKey

KeyTypeDescriptionExample
jinaApiKeyStringTên biến môi trường cho khóa API Jina. Nếu không được thiết lập trong .env, người dùng sẽ được yêu cầu cung cấp khóa này thông qua giao diện người dùng.${JINA_API_KEY}

Lưu ý: Lấy API key của bạn từ Jina.ai

jinaApiUrl

KeyTypeDescriptionExample
jinaApiUrlStringTên biến môi trường cho URL API Jina. Nếu không được thiết lập trong .env, người dùng sẽ được nhắc cung cấp thông qua giao diện người dùng.${JINA_API_URL}

Lưu ý: Đây là tùy chọn và chỉ cần thiết nếu bạn đang sử dụng một instance Jina tùy chỉnh.

cohereApiKey

KeyTypeDescriptionExample
cohereApiKeyStringTên biến môi trường cho khóa API Cohere. Nếu không được thiết lập trong .env, người dùng sẽ được yêu cầu cung cấp thông qua giao diện người dùng.${COHERE_API_KEY}

Lưu ý: Lấy API key của bạn từ Cohere Dashboard

rerankerType

KeyTypeDescriptionExample
rerankerTypeStringChỉ định dịch vụ reranker nào sẽ được sử dụng. Đặt thành "none" để bỏ qua việc reranking.Options: "jina", "cohere", "none"

Cài đặt chung

scraperTimeout

KeyTypeDescriptionExample
scraperTimeoutIntegerThời gian chờ tính bằng mili giây cho các yêu cầu trình thu thập dữ liệu. Phải là một số nguyên không âm.Default: 7500

safeSearch

KeyTypeDescriptionExample
safeSearchNumberMức lọc tìm kiếm an toàn. 0 = TẮT (không lọc), 1 = TRUNG BÌNH (mặc định), 2 = NGHIÊM NGẶT (lọc tối đa).Default: 1 (MODERATE)

Lưu ý: Các cấp độ tìm kiếm an toàn tuân theo các quy ước API tìm kiếm tiêu chuẩn. Bộ lọc MODERATE được bật theo mặc định để cung cấp khả năng lọc nội dung hợp lý trong khi vẫn duy trì hiệu quả tìm kiếm. Tavily không kế thừa cài đặt toàn cục này theo mặc định; chỉ sử dụng tavilySearchOptions.safeSearch nếu tài khoản Tavily của bạn hỗ trợ safe_search.

Ghi chú

  • Các API keys có thể được cấu hình theo hai cách:
    1. Thiết lập các biến môi trường được chỉ định trong cấu hình YAML
    2. Nếu các biến môi trường không được thiết lập, người dùng sẽ được nhắc cung cấp các khóa API thông qua giao diện người dùng (UI).
  • Cấu hình hỗ trợ nhiều dịch vụ cho mỗi thành phần (providers, scrapers, rerankers)
  • Nếu một loại dịch vụ cụ thể không được chỉ định, hệ thống sẽ thử tất cả các dịch vụ khả dụng trong danh mục đó
  • Safe search cung cấp ba cấp độ lọc nội dung: OFF (0), MODERATE (1) và STRICT (2)
  • Tavily không kế thừa cài đặt tìm kiếm an toàn (safe search) toàn cục theo mặc định; hãy đặt tavilySearchOptions.safeSearch một cách rõ ràng chỉ khi tài khoản Tavily của bạn hỗ trợ safe_search
  • Không bao giờ đặt các API key thực tế vào cấu hình YAML - chỉ sử dụng tên biến môi trường

Thiết lập SearXNG

SearXNG là một công cụ tìm kiếm meta tập trung vào quyền riêng tư mà bạn có thể tự lưu trữ (self-host). Để biết thêm thông tin, hãy xem tài liệu chính thức của SearXNG.

Dưới đây là các bước để thiết lập instance SearXNG của riêng bạn để sử dụng với LibreChat:

Sử dụng Docker Desktop

  1. Tìm kiếm image SearXNG chính thức

    • Mở Docker Desktop
    • Tìm kiếm searxng/searxng trong tab Images
    • Nhấp vào Run trên image chính thức để tự động tải xuống và chạy một container của image đó
  2. Chạy container

    • Mở rộng menu thả xuống Optional Settings trong bảng điều khiển xuất hiện sau khi quá trình tải xuống hoàn tất.
    • Thiết lập các chi tiết cấu hình mong muốn của bạn (số cổng, tên container, v.v.)
    • Nhấp vào Run để khởi chạy container
  3. Cấu hình SearXNG cho LibreChat

    • Điều hướng đến tab Files trong Docker Desktop
    • Đi đến /etc/searxng/settings.yaml
    • Mở trình chỉnh sửa tệp
    • Điều hướng đến phần formats
    • Thêm json làm định dạng chấp nhận được để LibreChat có thể giao tiếp với instance của bạn
    • Lưu tệp
  4. Khởi động lại container

    • Khởi động lại container để các thay đổi có hiệu lực

Hướng dẫn bằng video:

Dưới đây là video hướng dẫn bạn thực hiện quy trình từ đầu đến cuối trong khoảng một phút:

Hướng dẫn thiết lập SearXNG bằng Docker

Lưu ý: Trong ví dụ này, URL của instance là http://localhost:55011 (số cổng được tìm thấy bên dưới tên container ở góc trên cùng bên trái vào cuối video)

Cấu hình LibreChat để sử dụng SearXNG

Bạn có thể cấu hình SearXNG trong LibreChat thông qua giao diện người dùng hoặc thông qua librechat.yaml.

Cấu hình giao diện (UI)

  1. Mở menu thả xuống công cụ trong thanh nhập liệu trò chuyện Nút cấu hình công cụ

  2. Nhấp vào biểu tượng bánh răng bên cạnh Web Search Tools configuration section

  3. Chọn SearXNG từ menu thả xuống Search Provider SearXNG dropdown selection

  4. Nhập chi tiết cấu hình của bạn (ví dụ: URL instance, loại scraper, v.v.) và nhấp vào lưu Lưu cấu hình tìm kiếm web

  5. Nhấp vào tùy chọn Web Search trong menu thả xuống công cụ Web search badge in chat interface

  6. Huy hiệu Web Search hiện đã được kích hoạt, nghĩa là các truy vấn của bạn giờ đây có thể sử dụng chức năng tìm kiếm trên web Web search badge confirmation

Hướng dẫn này thế nào?