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

Pesquisa na Web

O recurso de pesquisa na web do LibreChat permite que você pesquise na internet e recupere informações relevantes para aprimorar suas conversas. O recurso consiste em três componentes principais que trabalham juntos para fornecer resultados de pesquisa abrangentes.

Início Rápido

Para começar com a pesquisa na web, você precisará configurar chaves de API para um provedor de pesquisa e um scraper. O reranking pode usar Jina ou Cohere, ou ser desativado com rerankerType: "none". Você pode fazer isso de duas maneiras:

  1. Variáveis de Ambiente (Recomendado para administradores):

    # Search Provider (Required - choose one)
    SERPER_API_KEY=your_serper_api_key
    # or
    SEARXNG_INSTANCE_URL=your_searxng_instance_url
    SEARXNG_API_KEY=your_searxng_api_key  # Optional
    # or
    TAVILY_API_KEY=your_tavily_api_key
    
    # Scraper (Required - choose one)
    FIRECRAWL_API_KEY=your_firecrawl_api_key
    # Optional: Custom Firecrawl API URL
    FIRECRAWL_API_URL=your_firecrawl_api_url
    # Optional: Firecrawl API version (v0 or v1)
    # FIRECRAWL_VERSION=v1
    # or
    TAVILY_API_KEY=your_tavily_api_key
    
    # Reranker (Optional - choose one, or set rerankerType: "none")
    JINA_API_KEY=your_jina_api_key
    # Optional: Custom Jina API URL
    JINA_API_URL=your_jina_api_url
    # or
    COHERE_API_KEY=your_cohere_api_key
  2. Interface do Usuário (Se as variáveis de ambiente não estiverem definidas):

    • Os usuários serão solicitados a inserir as chaves de API necessárias quando utilizarem o recurso de pesquisa na web pela primeira vez.
    • Eles podem escolher qual provedor de pesquisa (Serper, SearXNG ou Tavily) e qual serviço de reranker usar (Jina, Cohere ou nenhum)

Obtendo Chaves de API

Cada serviço externo habilitado requer sua própria chave de API. Veja como obtê-las:

Provedores de Pesquisa

Serper

  1. Visite o Serper.dev
  2. Crie uma conta
  3. Navegue até a seção API Key
  4. Copie sua chave de API
  5. Defina-o em suas variáveis de ambiente ou forneça-o através da UI

SearXNG

  1. Siga as instruções de configuração na documentação de Configuração de Pesquisa na Web
  2. Defina SEARXNG_INSTANCE_URL para a URL da sua instância
  3. Opcionalmente, defina SEARXNG_API_KEY se sua instância exigir autenticação

Tavily

  1. Visite o Tavily
  2. Crie uma conta
  3. Copie sua chave de API
  4. Defina TAVILY_API_KEY em suas variáveis de ambiente ou forneça-a através da UI
  5. O Tavily pode ser usado tanto como um provedor de pesquisa quanto como um provedor de scraper.

Scraper: Firecrawl

  1. Visite Firecrawl.dev
  2. Crie uma conta
  3. Navegue até a seção API Key
  4. Copie sua chave de API
  5. Defina-o em suas variáveis de ambiente ou forneça-o através da UI
  6. (Opcional) Se você estiver usando uma instância personalizada do Firecrawl, você também precisará definir a API URL

Rerankers

Jina

  1. Visite a Jina.ai
  2. Crie uma conta
  3. Navegue até o API Dashboard
  4. Copie sua chave de API
  5. Defina-o em suas variáveis de ambiente ou forneça-o através da UI

Cohere

  1. Visite o Cohere Dashboard
  2. Crie uma conta
  3. Navegue até a seção API Keys
  4. Copie sua chave de API
  5. Defina-o em suas variáveis de ambiente ou forneça-o através da UI

Componentes

1. Provedores de Pesquisa

Os provedores de pesquisa são responsáveis por realizar a pesquisa inicial na web e retornar resultados relevantes.

Provedores Disponíveis:

  • Serper: Uma API de pesquisa do Google que fornece resultados de busca de alta qualidade
  • SearXNG: Mecanismo de meta-pesquisa de código aberto e auto-hospedado
    • Auto-hospede sua própria instância
    • Resultados de pesquisa com foco em privacidade
  • Tavily: API de busca otimizada para IA
    • Obtenha sua chave de API no Tavily
    • Suporta profundidade de pesquisa configurável, filtragem de tópicos, filtragem de domínios e muito mais
    • Também pode servir como um provedor de scraper

2. Scrapers

Scrapers extraem o conteúdo real de páginas da web retornadas pelo provedor de pesquisa.

Scrapers Disponíveis:

  • Firecrawl: Um serviço de web scraping poderoso que extrai conteúdo de páginas da web

    • Obtenha sua chave de API em Firecrawl.dev
    • A API URL é opcional (o padrão é o serviço hospedado do Firecrawl)
  • Tavily: Extração em lote de URLs via Tavily Extract API

    • Usa a mesma TAVILY_API_KEY que o provedor de busca
    • Suporta profundidade de extração configurável, extração de imagens e extração de favicon

Scrapers planejados:

  • Local Firecrawl: Versão auto-hospedada do Firecrawl
  • Serviços adicionais de scraping de terceiros

3. Rerankers

Rerankers analisam o conteúdo extraído para determinar as partes mais relevantes e reordená-las para obter melhores resultados.

Rerankers Disponíveis:

  • Jina: Serviço de reranking baseado em IA
    • Obtenha sua chave de API em Jina.ai
    • A API URL é opcional (o padrão é o serviço hospedado da Jina)
  • Cohere: Serviço avançado de reranking
  • None: Pula o reranking quando rerankerType está definido como "none"

Rerankers Planejados:

  • RAG API: Reranking de código aberto usando RAG (Retrieval-Augmented Generation)
  • Serviços adicionais de reranking de terceiros

Configuração

Configuração de Administrador

Admins podem configurar o recurso de pesquisa na web usando variáveis de ambiente. A configuração YAML permite que você especifique nomes personalizados de variáveis de ambiente para cada componente.

⚠️ Importante: Nunca coloque chaves de API ou valores reais no arquivo YAML (eles não funcionarão) - use apenas nomes de variáveis de ambiente.

webSearch:
  # Search Provider Configuration
  serperApiKey: "${CUSTOM_SERPER_API_KEY}"  # ✅ Correct: Using environment variable name
  # serperApiKey: "sk-123..."               # ❌ Wrong: Never put actual API keys here
  # or
  searxngInstanceUrl: "${CUSTOM_SEARXNG_INSTANCE_URL}"  # ✅ Correct: Using environment variable name
  searxngApiKey: "${CUSTOM_SEARXNG_API_KEY}"            # ✅ Correct: Using environment variable name
  # searxngInstanceUrl: "http://..."        # ❌ Wrong: Never put actual URLs here
  # searxngApiKey: "sk-123..."              # ❌ Wrong: Never put actual API keys here

  # Tavily Configuration (search and/or scraper)
  tavilyApiKey: "${CUSTOM_TAVILY_API_KEY}"
  tavilySearchUrl: "${CUSTOM_TAVILY_SEARCH_URL}"
  tavilyExtractUrl: "${CUSTOM_TAVILY_EXTRACT_URL}"

  # Scraper Configuration
  firecrawlApiKey: "${CUSTOM_FIRECRAWL_API_KEY}"
  firecrawlApiUrl: "${CUSTOM_FIRECRAWL_API_URL}"
  # firecrawlApiKey: "fc-123..."            # ❌ Wrong: Never put actual API keys here
  # firecrawlApiUrl: "https://..."          # ❌ Wrong: Never put actual URLs here

  # Reranker Configuration
  jinaApiKey: "${CUSTOM_JINA_API_KEY}"
  jinaApiUrl: "${CUSTOM_JINA_API_URL}"
  cohereApiKey: "${CUSTOM_COHERE_API_KEY}"
  # jinaApiKey: "jn-123..."                 # ❌ Wrong: Never put actual API keys here
  # jinaApiUrl: "https://..."               # ❌ Wrong: Never put actual URLs here
  # cohereApiKey: "ch-123..."               # ❌ Wrong: Never put actual API keys here

  # General Settings
  safeSearch: 1 # Options: 0 (OFF), 1 (MODERATE - default), 2 (STRICT)

Nota: A configuração YAML deve conter apenas nomes de variáveis de ambiente (no formato ${VARIABLE_NAME}). Essa flexibilidade permite:

  • Usando nomes de variáveis diferentes em ambientes diferentes
  • Suporte a múltiplas configurações para diferentes grupos de usuários
  • Integração futura com configurações baseadas em funções

Se você deseja restringir o sistema para usar apenas serviços específicos, você pode especificar os tipos de serviço:

webSearch:
  # ... variable configurations ...
  searchProvider: "serper"    # Only use Serper for search
  # searchProvider: "searxng" # Only use SearXNG for search
  # searchProvider: "tavily"  # Only use Tavily for search
  scraperProvider: "firecrawl"    # Only use Firecrawl for scraping
  # scraperProvider: "tavily" # Only use Tavily for scraping
  rerankerType: "jina"        # Options: "jina", "cohere", "none"

Configuração do Usuário

Se o administrador não tiver configurado todas as chaves de API necessárias, os usuários serão solicitados a fornecê-las através da interface. A interface permite que os usuários:

  1. Escolha o reranker preferido deles (Jina, Cohere ou nenhum)
  2. Insira as chaves de API para os serviços necessários
  3. Configure a URL da API do Firecrawl se necessário (opcional)
  4. Configure a URL da API Jina, se necessário (opcional)
  5. Configure as URLs da Tavily Search ou Extract API, se necessário (opcional)

Uso

Uma vez configurado, você pode usar a pesquisa na web de duas maneiras:

  1. Interface de Chat: Clique no botão de pesquisa na web na interface de chat para habilitar a pesquisa na web para sua conversa
  2. Agents: Use a capacidade web_search em agentes para permitir que eles pesquisem na web

Notas

  • A configuração do provedor de busca e do scraper é necessária; o reranking pode ser desativado com rerankerType: "none"
  • A URL da API do Firecrawl é opcional e utiliza o serviço hospedado deles por padrão.
  • A URL da API Jina é opcional e utiliza o serviço hospedado deles por padrão.
  • As URLs da API Tavily Search and Extract são opcionais e usam como padrão os serviços hospedados da Tavily
  • O Safe search oferece três níveis de filtragem de conteúdo: OFF (0), MODERATE (1 - padrão) e STRICT (2)
  • O Tavily não herda a configuração global safeSearch por padrão; use tavilySearchOptions.safeSearch apenas se a sua conta Tavily oferecer suporte a safe_search
  • O tempo limite do scraper é definido como 7,5 segundos (7500ms) por padrão
  • As chaves de API podem ser revogadas a qualquer momento através da UI
  • Atualizações futuras incluirão mais opções de código aberto e auto-hospedadas para todos os componentes
  • Opções adicionais de personalização estão planejadas, incluindo:
    • Controle sobre o número de links a serem extraídos
    • Lista de permissões/lista de bloqueio de domínios para scraping
    • Regras e filtros de scraping personalizados
    • Opções avançadas de filtragem e classificação de resultados
    • Controles de limitação de taxa (rate limiting) e estrangulamento de requisições (request throttling)

Como está este guia?