Configuração de Pesquisa na Web
A configuração webSearch permite que você personalize a funcionalidade de pesquisa na web dentro do LibreChat, incluindo provedores de pesquisa, scrapers de conteúdo e rerankers de resultados.
Visão geral
O recurso de pesquisa na web consiste em três componentes principais:
- Provedores de pesquisa: Serviços que realizam a pesquisa inicial na web
- Scrapers: Serviços que extraem conteúdo de páginas da web
- Rerankers: Serviços que reordenam resultados de pesquisa para melhor relevância
Exemplo
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)Provedores de Busca
searchProvider
| Key | Type | Description | Example |
|---|---|---|---|
| searchProvider | String | Especifica qual provedor de busca utilizar. | Options: "serper", "searxng", "tavily" |
serperApiKey
| Key | Type | Description | Example |
|---|---|---|---|
| serperApiKey | String | Nome da variável de ambiente para a chave de API do Serper. Se não for definida no .env, os usuários serão solicitados a fornecê-la via interface. | ${SERPER_API_KEY} |
Nota: Obtenha sua chave de API em Serper.dev
searxngInstanceUrl
| Key | Type | Description | Example |
|---|---|---|---|
| searxngInstanceUrl | String | Nome da variável de ambiente para a URL da instância do SearXNG. Se não for definida no .env, os usuários serão solicitados a fornecê-la via interface. | ${SEARXNG_INSTANCE_URL} |
searxngApiKey
| Key | Type | Description | Example |
|---|---|---|---|
| searxngApiKey | String | Nome da variável de ambiente para a chave de API do SearXNG. Se não for definida no .env, os usuários serão solicitados a fornecê-la via interface. | ${SEARXNG_API_KEY} |
Nota: Isso é opcional e necessário apenas se a sua instância do SearXNG exigir autenticação.
tavilyApiKey
| Key | Type | Description | Example |
|---|---|---|---|
| tavilyApiKey | String | Nome da variável de ambiente para a chave de API do Tavily. Usada tanto para pesquisa quanto para scraper. Se não for definida no .env, os usuários serão solicitados a fornecê-la via interface. | ${TAVILY_API_KEY} |
Nota: Obtenha sua chave de API em Tavily
tavilySearchUrl
| Key | Type | Description | Example |
|---|---|---|---|
| tavilySearchUrl | String | Nome da variável de ambiente para uma URL personalizada da API Tavily Search. Opcional; o padrão é a busca hospedada pelo Tavily quando não definida. | ${TAVILY_SEARCH_URL} |
tavilyExtractUrl
| Key | Type | Description | Example |
|---|---|---|---|
| tavilyExtractUrl | String | Nome da variável de ambiente para uma URL personalizada da API Tavily Extract. Opcional; o padrão é o extract hospedado pela Tavily quando não definido. | ${TAVILY_EXTRACT_URL} |
tavilySearchOptions
| Key | Type | Description | Example |
|---|---|---|---|
| tavilySearchOptions | Object | Opções de configuração para a pesquisa Tavily. |
Subchaves:
| Key | Type | Description | Example |
|---|---|---|---|
| searchDepth | String | Controla o equilíbrio entre relevância e latência. "basic" retorna um resumo de PLN por URL. "advanced" retorna múltiplos trechos semanticamente relevantes por URL (2 créditos de API). "fast" equilibra velocidade e relevância com trechos. "ultra-fast" minimiza a latência com um resumo de PLN. | Options: "basic", "advanced", "fast", "ultra-fast". Default: "basic" |
| maxResults | Number | O número máximo de resultados de pesquisa a serem retornados. | Range: 1-20. Default: 5 |
| topic | String | A categoria da pesquisa. "news" é útil para atualizações em tempo real. "finance" para dados financeiros. | Options: "general", "news", "finance". Default: "general" |
| includeImages | Boolean | Incluir imagens na resposta. Retorna tanto imagens da consulta de nível superior quanto imagens por resultado. | Default: false |
| includeAnswer | Boolean or String | Inclua uma resposta gerada por LLM. "basic" ou true para uma resposta rápida, "advanced" para uma resposta detalhada. | Default: false |
| includeRawContent | Boolean or String | Incluir conteúdo HTML limpo e analisado. "markdown" ou true para formato markdown, "text" para texto simples. | Default: false |
| includeDomains | Array of Strings | Restrinja a pesquisa a domínios específicos. Máximo de 300 domínios. | |
| excludeDomains | Array of Strings | Excluir domínios específicos dos resultados. Máximo de 150 domínios. | |
| timeRange | String | Filtro de intervalo de tempo baseado na data de publicação ou última atualização. | Options: "day", "week", "month", "year" |
| includeImageDescriptions | Boolean | Quando includeImages for true, adicione também um texto descritivo para cada imagem. | Default: false |
| includeFavicon | Boolean | Inclua a URL do favicon para cada resultado de pesquisa. | Default: false |
| chunksPerSource | Number | Número máximo de blocos de conteúdo relevante por fonte. Disponível apenas quando searchDepth for "advanced". | Range: 1-3. Default: 3 |
| safeSearch | Boolean | Substituição opcional safe_search do Tavily para solicitações de pesquisa do Tavily. Omitido por padrão; true pode exigir o Tavily Enterprise. | Default: omitted |
| timeout | Number | Tempo limite da solicitação HTTP do lado do cliente em milissegundos. Controla por quanto tempo aguardar a resposta da API Tavily antes de desistir. | Default: 15000 |
Scrapers
firecrawlApiKey
| Key | Type | Description | Example |
|---|---|---|---|
| firecrawlApiKey | String | Nome da variável de ambiente para a chave de API do Firecrawl. Se não for definida no .env, os usuários serão solicitados a fornecê-la via interface. | ${FIRECRAWL_API_KEY} |
Nota: Obtenha sua chave de API em Firecrawl.dev
firecrawlApiUrl
| Key | Type | Description | Example |
|---|---|---|---|
| firecrawlApiUrl | String | Nome da variável de ambiente para a URL da API do Firecrawl. Se não for definida no .env, os usuários serão solicitados a fornecê-la via interface. | ${FIRECRAWL_API_URL} |
Nota: Isso é opcional e necessário apenas se você estiver usando uma instância personalizada do Firecrawl.
firecrawlVersion
| Key | Type | Description | Example |
|---|---|---|---|
| firecrawlVersion | String | Nome da variável de ambiente para a versão da API do Firecrawl (v0 ou v1). | ${FIRECRAWL_VERSION} |
scraperProvider
| Key | Type | Description | Example |
|---|---|---|---|
| scraperProvider | String | Especifica qual serviço de scraper utilizar. | Options: "firecrawl", "serper", "tavily" |
firecrawlOptions
| Key | Type | Description | Example |
|---|---|---|---|
| firecrawlOptions | Object | Opções de configuração avançadas para o scraper Firecrawl. |
Subchaves:
formats
| Key | Type | Description | Example |
|---|---|---|---|
| formats | Array of Strings | Formatos a incluir na saída. |
includeTags
| Key | Type | Description | Example |
|---|---|---|---|
| includeTags | Array of Strings | Tags para incluir na saída. |
excludeTags
| Key | Type | Description | Example |
|---|---|---|---|
| excludeTags | Array of Strings | Tags a serem excluídas da saída. |
headers
| Key | Type | Description | Example |
|---|---|---|---|
| headers | Object | Cabeçalhos a serem enviados com a requisição. Podem ser usados para enviar cookies, user-agent, etc. |
waitFor
| Key | Type | Description | Example |
|---|---|---|---|
| waitFor | Number | Especifique um atraso em milissegundos antes de buscar o conteúdo, permitindo tempo suficiente para a página carregar. |
timeout
| Key | Type | Description | Example |
|---|---|---|---|
| timeout | Integer | Tempo limite em milissegundos para a solicitação de scraping. Deve ser um número inteiro não negativo. | Default: 7500 |
maxAge
| Key | Type | Description | Example |
|---|---|---|---|
| maxAge | Number | Retorna uma versão em cache da página se ela for mais recente do que esta idade em milissegundos. Se uma versão em cache da página for mais antiga do que este valor, a página será extraída (scraped). |
Nota: Se você não precisa de dados extremamente recentes, habilitar isso pode acelerar suas capturas (scrapes) em 500%.
mobile
| Key | Type | Description | Example |
|---|---|---|---|
| mobile | Boolean | Emular scraping a partir de um dispositivo móvel. |
skipTlsVerification
| Key | Type | Description | Example |
|---|---|---|---|
| skipTlsVerification | Boolean | Ignorar a verificação de certificado TLS ao fazer solicitações. |
blockAds
| Key | Type | Description | Example |
|---|---|---|---|
| blockAds | Boolean | Ativa o bloqueio de anúncios e o bloqueio de pop-ups de cookies. |
removeBase64Images
| Key | Type | Description | Example |
|---|---|---|---|
| removeBase64Images | Boolean | Remove todas as imagens em base 64 da saída, que podem ser excessivamente longas. O texto alternativo da imagem permanece na saída, mas a URL é substituída por um espaço reservado. |
parsePDF
| Key | Type | Description | Example |
|---|---|---|---|
| parsePDF | Boolean | Controla como os arquivos PDF são processados durante a extração. |
storeInCache
| Key | Type | Description | Example |
|---|---|---|---|
| storeInCache | Boolean | Se definido como true, a página será armazenada no índice e no cache do Firecrawl. Definir isso como false é útil se sua atividade de scraping puder envolver preocupações com proteção de dados. O uso de alguns parâmetros associados a scraping sensível (headers) forçará este parâmetro a ser false. |
zeroDataRetention
| Key | Type | Description | Example |
|---|---|---|---|
| zeroDataRetention | Boolean | Se verdadeiro, isso habilitará a retenção zero de dados para esta raspagem (requer configuração prévia no Firecrawl). |
location
| Key | Type | Description | Example |
|---|---|---|---|
| location | Object | Localização geográfica e configurações de idioma para scraping. |
onlyMainContent
| Key | Type | Description | Example |
|---|---|---|---|
| onlyMainContent | Boolean | Retorne apenas o conteúdo principal da página, excluindo cabeçalhos, navegação, rodapés, etc. |
changeTrackingOptions
| Key | Type | Description | Example |
|---|---|---|---|
| changeTrackingOptions | Object | Configuração para rastrear alterações em conteúdo extraído. |
Exemplo:
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"]Nota: Para informações detalhadas sobre as opções e padrões do scraper Firecrawl, consulte a Documentação da API do Firecrawl.
tavilyScraperOptions
| Key | Type | Description | Example |
|---|---|---|---|
| tavilyScraperOptions | Object | Opções de configuração para o Tavily Extract (scraper). |
Subchaves:
| Key | Type | Description | Example |
|---|---|---|---|
| extractDepth | String | A profundidade do processo de extração. "advanced" recupera mais dados, incluindo tabelas e conteúdo incorporado com maior sucesso, mas pode aumentar a latência. "basic" custa 1 crédito por 5 URLs bem-sucedidas, "advanced" custa 2 créditos por 5 URLs bem-sucedidas. | Options: "basic", "advanced". Default: "basic" |
| includeImages | Boolean | Inclua uma lista de imagens extraídas das URLs na resposta. | Default: false |
| includeFavicon | Boolean | Inclua a URL do favicon para cada resultado extraído. | Default: false |
| format | String | O formato do conteúdo da página web extraído. "markdown" retorna o conteúdo em formato markdown. "text" retorna texto simples e pode aumentar a latência. | Options: "markdown", "text". Default: "markdown" |
| timeout | Number | Tempo limite em milissegundos. Controla o tempo limite de HTTP do lado do cliente. Quando definido, também envia ao Tavily um tempo limite de extração do lado do servidor convertido em segundos e limitado a 1-60s. | Default: 15000 for basic, 30000 for advanced |
Exemplo:
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: basicNota: Para informações detalhadas sobre as opções da API Tavily, consulte a Documentação da API Tavily.
Rerankers
jinaApiKey
| Key | Type | Description | Example |
|---|---|---|---|
| jinaApiKey | String | Nome da variável de ambiente para a chave de API da Jina. Se não for definida no .env, os usuários serão solicitados a fornecê-la via interface. | ${JINA_API_KEY} |
Nota: Obtenha sua chave de API em Jina.ai
jinaApiUrl
| Key | Type | Description | Example |
|---|---|---|---|
| jinaApiUrl | String | Nome da variável de ambiente para a URL da API Jina. Se não for definida no .env, os usuários serão solicitados a fornecê-la via interface. | ${JINA_API_URL} |
Nota: Isso é opcional e necessário apenas se você estiver usando uma instância personalizada do Jina.
cohereApiKey
| Key | Type | Description | Example |
|---|---|---|---|
| cohereApiKey | String | Nome da variável de ambiente para a chave de API da Cohere. Se não for definida no .env, os usuários serão solicitados a fornecê-la via interface. | ${COHERE_API_KEY} |
Nota: Obtenha sua chave de API no Cohere Dashboard
rerankerType
| Key | Type | Description | Example |
|---|---|---|---|
| rerankerType | String | Especifica qual serviço de reranker utilizar. Defina como "none" para pular o reranking. | Options: "jina", "cohere", "none" |
Configurações Gerais
scraperTimeout
| Key | Type | Description | Example |
|---|---|---|---|
| scraperTimeout | Integer | Tempo limite em milissegundos para solicitações do scraper. Deve ser um número inteiro não negativo. | Default: 7500 |
safeSearch
| Key | Type | Description | Example |
|---|---|---|---|
| safeSearch | Number | Nível de filtragem de pesquisa segura. 0 = DESLIGADO (sem filtragem), 1 = MODERADO (padrão), 2 = ESTRITO (filtragem máxima). | Default: 1 (MODERATE) |
Nota: Os níveis de pesquisa segura estão alinhados com as convenções padrão da API de pesquisa. A filtragem MODERATE (moderada) é ativada por padrão para fornecer uma filtragem de conteúdo razoável, mantendo a eficácia da pesquisa. O Tavily não herda essa configuração global por padrão; use tavilySearchOptions.safeSearch apenas se sua conta Tavily oferecer suporte a safe_search.
Notas
- As chaves de API podem ser configuradas de duas maneiras:
- Defina as variáveis de ambiente especificadas na configuração YAML
- Se as variáveis de ambiente não estiverem definidas, os usuários serão solicitados a fornecer as chaves de API através da interface.
- A configuração suporta múltiplos serviços para cada componente (providers, scrapers, rerankers)
- Se um tipo de serviço específico não for especificado, o sistema tentará todos os serviços disponíveis nessa categoria
- O Safe search oferece três níveis de filtragem de conteúdo: OFF (0), MODERATE (1) e STRICT (2)
- O Tavily não herda a configuração global de pesquisa segura por padrão; defina
tavilySearchOptions.safeSearchexplicitamente apenas quando sua conta Tavily oferecer suporte asafe_search. - Nunca coloque chaves de API reais na configuração YAML - use apenas nomes de variáveis de ambiente
Configurando o SearXNG
SearXNG é um meta mecanismo de busca focado em privacidade que você pode auto-hospedar. Para mais informações, consulte a documentação oficial do SearXNG.
Aqui estão os passos para configurar sua própria instância do SearXNG para uso com o LibreChat:
Usando o Docker Desktop
-
Procure pela imagem oficial do SearXNG
- Abra o Docker Desktop
- Pesquise por
searxng/searxngna aba Images - Clique em Run na imagem oficial para baixar automaticamente e executar um container da imagem
-
Executando o container
- Expanda o menu suspenso Optional Settings no painel subsequente que aparece assim que o download for concluído
- Defina os detalhes de configuração desejados (número da porta, nome do container, etc.)
- Clique em Run para iniciar o container
-
Configurar o SearXNG para o LibreChat
- Navegue até a aba
Filesno Docker Desktop - Vá para
/etc/searxng/settings.yaml - Abra o editor de arquivos
- Navegue até a seção
formats - Adicione
jsoncomo um formato aceitável para que o LibreChat possa se comunicar com sua instância - Salve o arquivo
- Navegue até a aba
-
Reinicie o container
- Reinicie o container para que as alterações entrem em vigor
Guia em vídeo:
Aqui está um vídeo para guiá-lo pelo processo do início ao fim em cerca de um minuto:
Nota: Neste exemplo, a URL da instância é http://localhost:55011 (o número da porta encontrado abaixo do nome do container no canto superior esquerdo ao final do vídeo)
Configurando o LibreChat para usar o SearXNG
Você pode configurar o SearXNG no LibreChat através da interface do usuário ou pelo librechat.yaml.
Configuração da UI
-
Abra o menu suspenso de ferramentas na barra de entrada do chat

-
Clique no ícone de engrenagem ao lado de Web Search

-
Selecione SearXNG no menu suspenso Search Provider

-
Insira os detalhes da sua configuração (por exemplo, URL da instância, tipo de scraper, etc.) e clique em salvar

-
Clique na opção Web Search no menu suspenso de ferramentas

-
O selo de Web Search agora deve estar ativado, o que significa que suas consultas podem utilizar a funcionalidade de pesquisa na web

Como está este guia?