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

Konfiguracja wyszukiwania w sieci

Konfiguracja webSearch pozwala na dostosowanie funkcjonalności wyszukiwania w sieci w ramach LibreChat, w tym dostawców wyszukiwania, skraperów treści oraz mechanizmów zmiany rangi wyników (rerankers).

Przegląd

Funkcja wyszukiwania w sieci składa się z trzech głównych komponentów:

  1. Dostawcy wyszukiwania: Usługi, które wykonują wstępne wyszukiwanie w sieci
  2. Scrapers: Usługi, które wyodrębniają zawartość ze stron internetowych
  3. Rerankers: Usługi, które zmieniają kolejność wyników wyszukiwania w celu uzyskania lepszej trafności

Przykład

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)

Dostawcy wyszukiwania

searchProvider

KeyTypeDescriptionExample
searchProviderStringOkreśla, którego dostawcę wyszukiwania użyć.Options: "serper", "searxng", "tavily"

serperApiKey

KeyTypeDescriptionExample
serperApiKeyStringNazwa zmiennej środowiskowej dla klucza API Serper. Jeśli nie zostanie ustawiona w .env, użytkownicy zostaną poproszeni o jej podanie przez interfejs użytkownika.${SERPER_API_KEY}

Uwaga: Pobierz swój klucz API z Serper.dev

searxngInstanceUrl

KeyTypeDescriptionExample
searxngInstanceUrlStringNazwa zmiennej środowiskowej dla adresu URL instancji SearXNG. Jeśli nie zostanie ustawiona w .env, użytkownicy zostaną poproszeni o jej podanie za pośrednictwem interfejsu użytkownika.${SEARXNG_INSTANCE_URL}

searxngApiKey

KeyTypeDescriptionExample
searxngApiKeyStringNazwa zmiennej środowiskowej dla klucza API SearXNG. Jeśli nie zostanie ustawiona w .env, użytkownicy zostaną poproszeni o podanie jej przez interfejs użytkownika.${SEARXNG_API_KEY}

Uwaga: Jest to opcjonalne i wymagane tylko wtedy, gdy Twoja instancja SearXNG wymaga uwierzytelnienia.

tavilyApiKey

KeyTypeDescriptionExample
tavilyApiKeyStringNazwa zmiennej środowiskowej dla klucza API Tavily. Używana zarówno do wyszukiwania, jak i scrapowania. Jeśli nie zostanie ustawiona w .env, użytkownicy zostaną poproszeni o jej podanie przez interfejs użytkownika.${TAVILY_API_KEY}

Uwaga: Pobierz swój klucz API z Tavily

tavilySearchUrl

KeyTypeDescriptionExample
tavilySearchUrlStringNazwa zmiennej środowiskowej dla niestandardowego adresu URL Tavily Search API. Opcjonalna; jeśli nie zostanie ustawiona, domyślnie używane jest wyszukiwanie hostowane przez Tavily.${TAVILY_SEARCH_URL}

tavilyExtractUrl

KeyTypeDescriptionExample
tavilyExtractUrlStringNazwa zmiennej środowiskowej dla niestandardowego adresu URL API Tavily Extract. Opcjonalne; jeśli nie zostanie ustawione, domyślnie używany jest hostowany ekstraktor Tavily.${TAVILY_EXTRACT_URL}

tavilySearchOptions

KeyTypeDescriptionExample
tavilySearchOptionsObjectOpcje konfiguracji wyszukiwania Tavily.

Podklucze:

KeyTypeDescriptionExample
searchDepthStringKontroluje kompromis między trafnością a opóźnieniem. "basic" zwraca jedno podsumowanie NLP na adres URL. "advanced" zwraca wiele semantycznie istotnych fragmentów na adres URL (2 kredyty API). "fast" równoważy szybkość i trafność za pomocą fragmentów. "ultra-fast" minimalizuje opóźnienia za pomocą jednego podsumowania NLP.Options: "basic", "advanced", "fast", "ultra-fast". Default: "basic"
maxResultsNumberMaksymalna liczba zwracanych wyników wyszukiwania.Range: 1-20. Default: 5
topicStringKategoria wyszukiwania. "news" jest przydatne do aktualizacji w czasie rzeczywistym. "finance" do danych finansowych.Options: "general", "news", "finance". Default: "general"
includeImagesBooleanDołącz obrazy w odpowiedzi. Zwraca zarówno obrazy z zapytania najwyższego poziomu, jak i obrazy dla poszczególnych wyników.Default: false
includeAnswerBoolean or StringDołącz odpowiedź wygenerowaną przez LLM. "basic" lub true dla szybkiej odpowiedzi, "advanced" dla szczegółowej odpowiedzi.Default: false
includeRawContentBoolean or StringDołącz oczyszczoną i przetworzoną zawartość HTML. "markdown" lub true dla formatu markdown, "text" dla zwykłego tekstu.Default: false
includeDomainsArray of StringsOgranicz wyszukiwanie do określonych domen. Maksymalnie 300 domen.
excludeDomainsArray of StringsWyklucz określone domeny z wyników. Maksymalnie 150 domen.
timeRangeStringFiltr zakresu czasu oparty na dacie publikacji lub ostatniej aktualizacji.Options: "day", "week", "month", "year"
includeImageDescriptionsBooleanGdy includeImages jest ustawione na true, dodaj również opisowy tekst dla każdego obrazu.Default: false
includeFaviconBooleanDołącz adres URL favicon dla każdego wyniku wyszukiwania.Default: false
chunksPerSourceNumberMaksymalna liczba fragmentów istotnej treści na źródło. Dostępne tylko, gdy searchDepth jest ustawione na "advanced".Range: 1-3. Default: 3
safeSearchBooleanOpcjonalne zastąpienie safe_search dla żądań Tavily Search. Domyślnie pominięte; wartość true może wymagać planu Tavily Enterprise.Default: omitted
timeoutNumberLimit czasu żądania HTTP po stronie klienta w milisekundach. Określa, jak długo czekać na odpowiedź API Tavily przed przerwaniem operacji.Default: 15000

Scrapers

firecrawlApiKey

KeyTypeDescriptionExample
firecrawlApiKeyStringNazwa zmiennej środowiskowej dla klucza API Firecrawl. Jeśli nie zostanie ustawiona w .env, użytkownicy będą proszeni o podanie jej przez UI.${FIRECRAWL_API_KEY}

Uwaga: Pobierz swój klucz API z Firecrawl.dev

firecrawlApiUrl

KeyTypeDescriptionExample
firecrawlApiUrlStringNazwa zmiennej środowiskowej dla adresu URL API Firecrawl. Jeśli nie zostanie ustawiona w .env, użytkownicy zostaną poproszeni o podanie jej przez interfejs użytkownika.${FIRECRAWL_API_URL}

Uwaga: Jest to opcjonalne i wymagane tylko w przypadku korzystania z własnej instancji Firecrawl.

firecrawlVersion

KeyTypeDescriptionExample
firecrawlVersionStringNazwa zmiennej środowiskowej dla wersji API Firecrawl (v0 lub v1).${FIRECRAWL_VERSION}

scraperProvider

KeyTypeDescriptionExample
scraperProviderStringOkreśla, której usługi scrapera użyć.Options: "firecrawl", "serper", "tavily"

firecrawlOptions

KeyTypeDescriptionExample
firecrawlOptionsObjectZaawansowane opcje konfiguracji dla scrapera Firecrawl.

Podklucze:

formats

KeyTypeDescriptionExample
formatsArray of StringsFormaty do uwzględnienia w danych wyjściowych.

includeTags

KeyTypeDescriptionExample
includeTagsArray of StringsTagi do uwzględnienia w danych wyjściowych.

excludeTags

KeyTypeDescriptionExample
excludeTagsArray of StringsTagi do wykluczenia z danych wyjściowych.

headers

KeyTypeDescriptionExample
headersObjectNagłówki do wysłania wraz z żądaniem. Mogą być używane do wysyłania plików cookie, user-agent itp.

waitFor

KeyTypeDescriptionExample
waitForNumberOkreśl opóźnienie w milisekundach przed pobraniem zawartości, aby zapewnić stronie wystarczająco dużo czasu na załadowanie.

timeout

KeyTypeDescriptionExample
timeoutIntegerLimit czasu w milisekundach dla żądania scrapowania. Musi być nieujemną liczbą całkowitą.Default: 7500

maxAge

KeyTypeDescriptionExample
maxAgeNumberZwraca zbuforowaną wersję strony, jeśli jest ona młodsza niż ten czas w milisekundach. Jeśli zbuforowana wersja strony jest starsza niż ta wartość, strona zostanie pobrana ponownie.

Uwaga: Jeśli nie potrzebujesz bardzo świeżych danych, włączenie tej opcji może przyspieszyć pobieranie danych (scrapes) o 500%.

mobile

KeyTypeDescriptionExample
mobileBooleanEmuluj scrapowanie z urządzenia mobilnego.

skipTlsVerification

KeyTypeDescriptionExample
skipTlsVerificationBooleanPomiń weryfikację certyfikatu TLS podczas wykonywania żądań.

blockAds

KeyTypeDescriptionExample
blockAdsBooleanWłącza blokowanie reklam oraz wyskakujących okienek z plikami cookie.

removeBase64Images

KeyTypeDescriptionExample
removeBase64ImagesBooleanUsuwa wszystkie obrazy base 64 z danych wyjściowych, które mogą być nadmiernie długie. Tekst alternatywny obrazu pozostaje w danych wyjściowych, ale adres URL zostaje zastąpiony symbolem zastępczym.

parsePDF

KeyTypeDescriptionExample
parsePDFBooleanOkreśla sposób przetwarzania plików PDF podczas scrapowania.

storeInCache

KeyTypeDescriptionExample
storeInCacheBooleanJeśli ustawiono na true, strona zostanie zapisana w indeksie i pamięci podręcznej Firecrawl. Ustawienie tej wartości na false jest przydatne, jeśli działania związane ze scrapowaniem mogą budzić obawy dotyczące ochrony danych. Użycie niektórych parametrów związanych z wrażliwym scrapowaniem (nagłówki) wymusi ustawienie tego parametru na false.

zeroDataRetention

KeyTypeDescriptionExample
zeroDataRetentionBooleanJeśli ustawiono na true, włączy to zerową retencję danych dla tego scrapowania (wymaga wcześniejszej konfiguracji w Firecrawl).

location

KeyTypeDescriptionExample
locationObjectLokalizacja geograficzna i ustawienia języka dla scrapingu.

onlyMainContent

KeyTypeDescriptionExample
onlyMainContentBooleanZwracaj tylko główną zawartość strony, z wyłączeniem nagłówków, nawigacji, stopek itp.

changeTrackingOptions

KeyTypeDescriptionExample
changeTrackingOptionsObjectKonfiguracja śledzenia zmian w pobranych treściach.

Przykład:

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

Uwaga: Szczegółowe informacje na temat opcji i ustawień domyślnych narzędzia Firecrawl scraper można znaleźć w dokumentacji API Firecrawl.

tavilyScraperOptions

KeyTypeDescriptionExample
tavilyScraperOptionsObjectOpcje konfiguracji dla Tavily Extract (scraper).

Podklucze:

KeyTypeDescriptionExample
extractDepthStringGłębokość procesu ekstrakcji. "advanced" pobiera więcej danych, w tym tabele i osadzone treści z wyższą skutecznością, ale może zwiększyć opóźnienia. "basic" kosztuje 1 kredyt za każde 5 pomyślnych adresów URL, "advanced" kosztuje 2 kredyty za każde 5 pomyślnych adresów URL.Options: "basic", "advanced". Default: "basic"
includeImagesBooleanDołącz listę obrazów wyodrębnionych z adresów URL w odpowiedzi.Default: false
includeFaviconBooleanDołącz adres URL favicon dla każdego wyodrębnionego wyniku.Default: false
formatStringFormat wyodrębnionej zawartości strony internetowej. "markdown" zwraca zawartość w formacie markdown. "text" zwraca zwykły tekst i może zwiększyć opóźnienie.Options: "markdown", "text". Default: "markdown"
timeoutNumberLimit czasu w milisekundach. Kontroluje limit czasu HTTP po stronie klienta. Po ustawieniu wysyła również do Tavily limit czasu ekstrakcji po stronie serwera, przeliczony na sekundy i ograniczony do zakresu 1-60 s.Default: 15000 for basic, 30000 for advanced

Przykład:

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

Uwaga: Szczegółowe informacje na temat opcji Tavily API znajdują się w Tavily API Documentation.

Rerankers

jinaApiKey

KeyTypeDescriptionExample
jinaApiKeyStringNazwa zmiennej środowiskowej dla klucza API Jina. Jeśli nie zostanie ustawiona w .env, użytkownicy zostaną poproszeni o jej podanie przez interfejs użytkownika.${JINA_API_KEY}

Uwaga: Pobierz swój klucz API z Jina.ai

jinaApiUrl

KeyTypeDescriptionExample
jinaApiUrlStringNazwa zmiennej środowiskowej dla adresu URL API Jina. Jeśli nie zostanie ustawiona w .env, użytkownicy zostaną poproszeni o podanie jej przez interfejs użytkownika.${JINA_API_URL}

Uwaga: Jest to opcjonalne i wymagane tylko w przypadku korzystania z własnej instancji Jina.

cohereApiKey

KeyTypeDescriptionExample
cohereApiKeyStringNazwa zmiennej środowiskowej dla klucza API Cohere. Jeśli nie zostanie ustawiona w .env, użytkownicy zostaną poproszeni o podanie jej przez interfejs użytkownika.${COHERE_API_KEY}

Uwaga: Pobierz swój klucz API z Cohere Dashboard

rerankerType

KeyTypeDescriptionExample
rerankerTypeStringOkreśla, której usługi rerankera użyć. Ustaw na "none", aby pominąć reranking.Options: "jina", "cohere", "none"

Ustawienia ogólne

scraperTimeout

KeyTypeDescriptionExample
scraperTimeoutIntegerLimit czasu w milisekundach dla żądań scrapera. Musi być nieujemną liczbą całkowitą.Default: 7500

safeSearch

KeyTypeDescriptionExample
safeSearchNumberPoziom filtrowania bezpiecznego wyszukiwania. 0 = WYŁĄCZONE (brak filtrowania), 1 = UMIARKOWANY (domyślnie), 2 = ŚCISŁY (maksymalne filtrowanie).Default: 1 (MODERATE)

Uwaga: Poziomy bezpiecznego wyszukiwania są zgodne ze standardowymi konwencjami API wyszukiwania. Filtrowanie MODERATE jest domyślnie włączone, aby zapewnić rozsądne filtrowanie treści przy jednoczesnym zachowaniu skuteczności wyszukiwania. Tavily domyślnie nie dziedziczy tego globalnego ustawienia; użyj tavilySearchOptions.safeSearch tylko wtedy, gdy Twoje konto Tavily obsługuje safe_search.

Uwagi

  • Klucze API można skonfigurować na dwa sposoby:
    1. Ustaw zmienne środowiskowe określone w konfiguracji YAML
    2. Jeśli zmienne środowiskowe nie są ustawione, użytkownicy zostaną poproszeni o podanie kluczy API za pośrednictwem interfejsu użytkownika.
  • Konfiguracja obsługuje wiele usług dla każdego komponentu (dostawców, scraperów, rerankerów)
  • Jeśli określony typ usługi nie zostanie wskazany, system spróbuje użyć wszystkich dostępnych usług w tej kategorii
  • Safe search zapewnia trzy poziomy filtrowania treści: OFF (0), MODERATE (1) oraz STRICT (2)
  • Tavily domyślnie nie dziedziczy globalnego ustawienia bezpiecznego wyszukiwania; ustaw tavilySearchOptions.safeSearch jawnie tylko wtedy, gdy Twoje konto Tavily obsługuje safe_search.
  • Nigdy nie umieszczaj rzeczywistych kluczy API w konfiguracji YAML - używaj wyłącznie nazw zmiennych środowiskowych

Konfiguracja SearXNG

SearXNG to zorientowana na prywatność metawyszukiwarka, którą możesz hostować samodzielnie. Więcej informacji znajdziesz w oficjalnej dokumentacji SearXNG.

Oto kroki, które należy wykonać, aby skonfigurować własną instancję SearXNG do użytku z LibreChat:

Używanie Docker Desktop

  1. Wyszukaj oficjalny obraz SearXNG

    • Otwórz Docker Desktop
    • Wyszukaj searxng/searxng w zakładce Images.
    • Kliknij Run przy oficjalnym obrazie, aby automatycznie pobrać i uruchomić kontener z tym obrazem
  2. Uruchamianie kontenera

    • Rozwiń listę rozwijaną Optional Settings w panelu, który pojawi się po zakończeniu pobierania.
    • Ustaw żądane szczegóły konfiguracji (numer portu, nazwę kontenera itp.)
    • Kliknij Run, aby uruchomić kontener
  3. Konfiguracja SearXNG dla LibreChat

    • Przejdź do karty Files w Docker Desktop
    • Przejdź do /etc/searxng/settings.yaml
    • Otwórz edytor plików
    • Przejdź do sekcji formats
    • Dodaj json jako akceptowalny format, aby LibreChat mógł komunikować się z Twoją instancją
    • Zapisz plik
  4. Zrestartuj kontener

    • Zrestartuj kontener, aby zmiany weszły w życie

Przewodnik wideo:

Oto film, który przeprowadzi Cię przez cały proces od początku do końca w około minutę:

Przewodnik konfiguracji SearXNG w Dockerze

Uwaga: W tym przykładzie URL instancji to http://localhost:55011 (numer portu znajduje się pod nazwą kontenera w lewym górnym rogu pod koniec filmu)

Konfiguracja LibreChat do używania SearXNG

Możesz skonfigurować SearXNG w LibreChat z poziomu interfejsu użytkownika lub poprzez librechat.yaml.

Konfiguracja UI

  1. Otwórz menu rozwijane narzędzi na pasku wprowadzania czatu Przycisk konfiguracji narzędzi

  2. Kliknij ikonę koła zębatego obok Web Search Tools configuration section

  3. Wybierz SearXNG z rozwijanej listy Dostawcy wyszukiwania (Search Provider) SearXNG dropdown selection

  4. Wprowadź szczegóły konfiguracji (np. adres URL instancji, typ scrapera itp.) i kliknij zapisz Zapisz konfigurację wyszukiwania w sieci

  5. Kliknij opcję Web Search w menu rozwijanym narzędzi Odznaka Web search w interfejsie czatu

  6. Odznaka wyszukiwania w sieci (Web Search) powinna być teraz włączona, co oznacza, że Twoje zapytania mogą teraz korzystać z funkcji wyszukiwania w sieci Potwierdzenie odznaki wyszukiwania w sieci

Jaka jest ta instrukcja?