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

Configuración de búsqueda web

La configuración webSearch le permite personalizar la funcionalidad de búsqueda web dentro de LibreChat, incluyendo proveedores de búsqueda, scrapers de contenido y rerankers de resultados.

Descripción general

La función de búsqueda web consta de tres componentes principales:

  1. Proveedores de búsqueda: Servicios que realizan la búsqueda web inicial
  2. Scrapers: Servicios que extraen contenido de páginas web
  3. Rerankers: Servicios que reordenan los resultados de búsqueda para una mejor relevancia

Ejemplo

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)

Proveedores de búsqueda

searchProvider

KeyTypeDescriptionExample
searchProviderStringEspecifica qué proveedor de búsqueda utilizar.Options: "serper", "searxng", "tavily"

serperApiKey

KeyTypeDescriptionExample
serperApiKeyStringNombre de la variable de entorno para la clave de API de Serper. Si no se establece en .env, se solicitará a los usuarios que la proporcionen a través de la interfaz de usuario.${SERPER_API_KEY}

Nota: Obtén tu clave de API en Serper.dev

searxngInstanceUrl

KeyTypeDescriptionExample
searxngInstanceUrlStringNombre de la variable de entorno para la URL de la instancia de SearXNG. Si no se establece en .env, se solicitará a los usuarios que la proporcionen a través de la interfaz de usuario.${SEARXNG_INSTANCE_URL}

searxngApiKey

KeyTypeDescriptionExample
searxngApiKeyStringNombre de la variable de entorno para la clave de API de SearXNG. Si no se configura en .env, se solicitará a los usuarios que la proporcionen a través de la interfaz de usuario.${SEARXNG_API_KEY}

Nota: Esto es opcional y solo es necesario si tu instancia de SearXNG requiere autenticación.

tavilyApiKey

KeyTypeDescriptionExample
tavilyApiKeyStringNombre de la variable de entorno para la clave de API de Tavily. Se utiliza tanto para la búsqueda como para el scraper. Si no se establece en .env, se solicitará a los usuarios que la proporcionen a través de la interfaz de usuario.${TAVILY_API_KEY}

Nota: Obtén tu clave de API desde Tavily

tavilySearchUrl

KeyTypeDescriptionExample
tavilySearchUrlStringNombre de la variable de entorno para una URL personalizada de la API de Tavily Search. Opcional; el valor predeterminado es la búsqueda alojada en Tavily si no se establece.${TAVILY_SEARCH_URL}

tavilyExtractUrl

KeyTypeDescriptionExample
tavilyExtractUrlStringNombre de la variable de entorno para una URL personalizada de la API de Tavily Extract. Opcional; si no se establece, se utiliza el servicio de extracción alojado por Tavily de forma predeterminada.${TAVILY_EXTRACT_URL}

tavilySearchOptions

KeyTypeDescriptionExample
tavilySearchOptionsObjectOpciones de configuración para la búsqueda de Tavily.

Subclaves:

KeyTypeDescriptionExample
searchDepthStringControla la relación entre relevancia y latencia. "basic" devuelve un resumen de PNL por URL. "advanced" devuelve múltiples fragmentos semánticamente relevantes por URL (2 créditos de API). "fast" equilibra velocidad y relevancia con fragmentos. "ultra-fast" minimiza la latencia con un resumen de PNL.Options: "basic", "advanced", "fast", "ultra-fast". Default: "basic"
maxResultsNumberEl número máximo de resultados de búsqueda a devolver.Range: 1-20. Default: 5
topicStringLa categoría de la búsqueda. "news" es útil para actualizaciones en tiempo real. "finance" para datos financieros.Options: "general", "news", "finance". Default: "general"
includeImagesBooleanIncluir imágenes en la respuesta. Devuelve tanto las imágenes de la consulta de nivel superior como las imágenes por resultado.Default: false
includeAnswerBoolean or StringIncluye una respuesta generada por LLM. "basic" o true para una respuesta rápida, "advanced" para una respuesta detallada.Default: false
includeRawContentBoolean or StringIncluir contenido HTML limpio y analizado. "markdown" o true para formato markdown, "text" para texto plano.Default: false
includeDomainsArray of StringsRestringir la búsqueda a dominios específicos. Máximo 300 dominios.
excludeDomainsArray of StringsExcluir dominios específicos de los resultados. Máximo 150 dominios.
timeRangeStringFiltro de rango de tiempo basado en la fecha de publicación o última actualización.Options: "day", "week", "month", "year"
includeImageDescriptionsBooleanCuando includeImages sea true, añade también un texto descriptivo para cada imagen.Default: false
includeFaviconBooleanIncluir la URL del favicon para cada resultado de búsqueda.Default: false
chunksPerSourceNumberNúmero máximo de fragmentos de contenido relevantes por fuente. Solo disponible cuando searchDepth es "advanced".Range: 1-3. Default: 3
safeSearchBooleanAnulación opcional de safe_search de Tavily para solicitudes de Tavily Search. Omitido por defecto; true puede requerir Tavily Enterprise.Default: omitted
timeoutNumberTiempo de espera de la solicitud HTTP del lado del cliente en milisegundos. Controla cuánto tiempo esperar a que la API de Tavily responda antes de desistir.Default: 15000

Scrapers

firecrawlApiKey

KeyTypeDescriptionExample
firecrawlApiKeyStringNombre de la variable de entorno para la clave de API de Firecrawl. Si no se establece en .env, se solicitará a los usuarios que la proporcionen a través de la interfaz de usuario.${FIRECRAWL_API_KEY}

Nota: Obtén tu clave API en Firecrawl.dev

firecrawlApiUrl

KeyTypeDescriptionExample
firecrawlApiUrlStringNombre de la variable de entorno para la URL de la API de Firecrawl. Si no se configura en .env, se solicitará a los usuarios que la proporcionen a través de la interfaz de usuario.${FIRECRAWL_API_URL}

Nota: Esto es opcional y solo es necesario si estás utilizando una instancia personalizada de Firecrawl.

firecrawlVersion

KeyTypeDescriptionExample
firecrawlVersionStringNombre de la variable de entorno para la versión de la API de Firecrawl (v0 o v1).${FIRECRAWL_VERSION}

scraperProvider

KeyTypeDescriptionExample
scraperProviderStringEspecifica qué servicio de scraper utilizar.Options: "firecrawl", "serper", "tavily"

firecrawlOptions

KeyTypeDescriptionExample
firecrawlOptionsObjectOpciones de configuración avanzada para el scraper Firecrawl.

Subclaves:

formats

KeyTypeDescriptionExample
formatsArray of StringsFormatos a incluir en la salida.

includeTags

KeyTypeDescriptionExample
includeTagsArray of StringsEtiquetas a incluir en la salida.

excludeTags

KeyTypeDescriptionExample
excludeTagsArray of StringsEtiquetas a excluir de la salida.

headers

KeyTypeDescriptionExample
headersObjectCabeceras a enviar con la solicitud. Se pueden utilizar para enviar cookies, user-agent, etc.

waitFor

KeyTypeDescriptionExample
waitForNumberEspecifique un retraso en milisegundos antes de obtener el contenido, permitiendo que la página tenga tiempo suficiente para cargarse.

timeout

KeyTypeDescriptionExample
timeoutIntegerTiempo de espera en milisegundos para la solicitud de scraping. Debe ser un número entero no negativo.Default: 7500

maxAge

KeyTypeDescriptionExample
maxAgeNumberDevuelve una versión en caché de la página si es más reciente que esta antigüedad en milisegundos. Si una versión en caché de la página es más antigua que este valor, la página será analizada (scraped).

Nota: Si no necesitas datos extremadamente recientes, habilitar esto puede acelerar tus extracciones en un 500%.

mobile

KeyTypeDescriptionExample
mobileBooleanEmular el scraping desde un dispositivo móvil.

skipTlsVerification

KeyTypeDescriptionExample
skipTlsVerificationBooleanOmitir la verificación del certificado TLS al realizar solicitudes.

blockAds

KeyTypeDescriptionExample
blockAdsBooleanHabilita el bloqueo de anuncios y el bloqueo de ventanas emergentes de cookies.

removeBase64Images

KeyTypeDescriptionExample
removeBase64ImagesBooleanElimina todas las imágenes en base 64 de la salida, las cuales pueden ser excesivamente largas. El texto alternativo (alt text) de la imagen permanece en la salida, pero la URL se reemplaza por un marcador de posición.

parsePDF

KeyTypeDescriptionExample
parsePDFBooleanControla cómo se procesan los archivos PDF durante la extracción.

storeInCache

KeyTypeDescriptionExample
storeInCacheBooleanSi es true, la página se almacenará en el índice y la caché de Firecrawl. Establecer esto en false es útil si su actividad de scraping puede tener problemas de protección de datos. El uso de algunos parámetros asociados con el scraping sensible (headers) forzará a que este parámetro sea false.

zeroDataRetention

KeyTypeDescriptionExample
zeroDataRetentionBooleanSi es true, esto habilitará la retención de datos cero para este scrape (requiere configuración previa en Firecrawl).

location

KeyTypeDescriptionExample
locationObjectUbicación geográfica y configuración de idioma para el scraping.

onlyMainContent

KeyTypeDescriptionExample
onlyMainContentBooleanSolo devuelve el contenido principal de la página excluyendo encabezados, navegaciones, pies de página, etc.

changeTrackingOptions

KeyTypeDescriptionExample
changeTrackingOptionsObjectConfiguración para el seguimiento de cambios en contenido extraído.

Ejemplo:

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 obtener información detallada sobre las opciones y valores predeterminados del scraper de Firecrawl, consulte la Documentación de la API de Firecrawl.

tavilyScraperOptions

KeyTypeDescriptionExample
tavilyScraperOptionsObjectOpciones de configuración para Tavily Extract (scraper).

Subclaves:

KeyTypeDescriptionExample
extractDepthStringLa profundidad del proceso de extracción. "advanced" recupera más datos, incluyendo tablas y contenido incrustado con mayor éxito, pero puede aumentar la latencia. "basic" cuesta 1 crédito por cada 5 URL exitosas, "advanced" cuesta 2 créditos por cada 5 URL exitosas.Options: "basic", "advanced". Default: "basic"
includeImagesBooleanIncluir una lista de imágenes extraídas de las URLs en la respuesta.Default: false
includeFaviconBooleanIncluir la URL del favicon para cada resultado extraído.Default: false
formatStringEl formato del contenido de la página web extraído. "markdown" devuelve el contenido en formato markdown. "text" devuelve texto plano y puede aumentar la latencia.Options: "markdown", "text". Default: "markdown"
timeoutNumberTiempo de espera en milisegundos. Controla el tiempo de espera HTTP del lado del cliente. Cuando se establece, también envía a Tavily un tiempo de espera de extracción del lado del servidor convertido a segundos y limitado a 1-60s.Default: 15000 for basic, 30000 for advanced

Ejemplo:

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

Nota: Para obtener información detallada sobre las opciones de la API de Tavily, consulte la Documentación de la API de Tavily.

Rerankers

jinaApiKey

KeyTypeDescriptionExample
jinaApiKeyStringNombre de la variable de entorno para la clave de API de Jina. Si no se establece en .env, se solicitará a los usuarios que la proporcionen a través de la interfaz de usuario.${JINA_API_KEY}

Nota: Obtén tu clave de API en Jina.ai

jinaApiUrl

KeyTypeDescriptionExample
jinaApiUrlStringNombre de la variable de entorno para la URL de la API de Jina. Si no se establece en .env, se solicitará a los usuarios que la proporcionen a través de la interfaz de usuario.${JINA_API_URL}

Nota: Esto es opcional y solo es necesario si estás utilizando una instancia personalizada de Jina.

cohereApiKey

KeyTypeDescriptionExample
cohereApiKeyStringNombre de la variable de entorno para la clave de API de Cohere. Si no se establece en .env, se solicitará a los usuarios que la proporcionen a través de la interfaz de usuario.${COHERE_API_KEY}

Nota: Obtén tu clave API desde el Cohere Dashboard

rerankerType

KeyTypeDescriptionExample
rerankerTypeStringEspecifica qué servicio de reranker utilizar. Establézcalo en "none" para omitir el reranking.Options: "jina", "cohere", "none"

Configuración general

scraperTimeout

KeyTypeDescriptionExample
scraperTimeoutIntegerTiempo de espera en milisegundos para las solicitudes del scraper. Debe ser un número entero no negativo.Default: 7500

safeSearch

KeyTypeDescriptionExample
safeSearchNumberNivel de filtrado de búsqueda segura. 0 = OFF (sin filtrado), 1 = MODERATE (predeterminado), 2 = STRICT (filtrado máximo).Default: 1 (MODERATE)

Nota: Los niveles de búsqueda segura se ajustan a las convenciones estándar de la API de búsqueda. El filtrado MODERATE está habilitado de forma predeterminada para proporcionar un filtrado de contenido razonable mientras se mantiene la eficacia de la búsqueda. Tavily no hereda esta configuración global de forma predeterminada; utilice tavilySearchOptions.safeSearch solo si su cuenta de Tavily admite safe_search.

Notas

  • Las API keys se pueden configurar de dos maneras:
    1. Establezca las variables de entorno especificadas en la configuración YAML
    2. Si las variables de entorno no están configuradas, se solicitará a los usuarios que proporcionen las claves de API a través de la interfaz de usuario.
  • La configuración admite múltiples servicios para cada componente (providers, scrapers, rerankers)
  • Si no se especifica un tipo de servicio concreto, el sistema probará todos los servicios disponibles en esa categoría.
  • La búsqueda segura ofrece tres niveles de filtrado de contenido: OFF (0), MODERATE (1) y STRICT (2)
  • Tavily no hereda la configuración global de búsqueda segura de forma predeterminada; establezca tavilySearchOptions.safeSearch explícitamente solo cuando su cuenta de Tavily sea compatible con safe_search
  • Nunca coloque claves de API reales en la configuración YAML; utilice únicamente nombres de variables de entorno.

Configuración de SearXNG

SearXNG es un metabuscador centrado en la privacidad que puedes alojar por tu cuenta. Para más información, consulta la documentación oficial de SearXNG.

Aquí tienes los pasos para configurar tu propia instancia de SearXNG para usarla con LibreChat:

Uso de Docker Desktop

  1. Busca la imagen oficial de SearXNG

    • Abra Docker Desktop
    • Busque searxng/searxng en la pestaña Images
    • Haz clic en Run en la imagen oficial para descargar y ejecutar automáticamente un contenedor de la imagen.
  2. Ejecutando el contenedor

    • Expanda el menú desplegable Optional Settings en el panel siguiente que aparece una vez que se completa la descarga.
    • Establezca los detalles de configuración deseados (número de puerto, nombre del contenedor, etc.)
    • Haz clic en Run para iniciar el contenedor
  3. Configurar SearXNG para LibreChat

    • Navegue a la pestaña Files en Docker Desktop
    • Ve a /etc/searxng/settings.yaml
    • Abrir el editor de archivos
    • Navegue a la sección formats
    • Agregue json como formato aceptable para que LibreChat pueda comunicarse con su instancia
    • Guarda el archivo
  4. Reiniciar el contenedor

    • Reinicie el contenedor para que los cambios surtan efecto

Guía en video:

Aquí tienes un video para guiarte a través del proceso de principio a fin en aproximadamente un minuto:

Guía de configuración de SearXNG en Docker

Nota: En este ejemplo, la URL de la instancia es http://localhost:55011 (el número de puerto se encuentra debajo del nombre del contenedor en la parte superior izquierda al final del video)

Configuración de LibreChat para usar SearXNG

Puedes configurar SearXNG en LibreChat dentro de la interfaz de usuario o a través de librechat.yaml.

Configuración de la UI

  1. Abre el menú desplegable de herramientas en la barra de entrada del chat Botón de configuración de herramientas

  2. Haz clic en el icono de engranaje junto a Web Search Tools configuration section

  3. Seleccione SearXNG en el menú desplegable de Search Provider SearXNG dropdown selection

  4. Ingrese los detalles de su configuración (p. ej., URL de la instancia, tipo de scraper, etc.) y haga clic en guardar Guardar configuración de búsqueda web

  5. Haz clic en la opción Web Search en el menú desplegable de herramientas Web search badge in chat interface

  6. El distintivo de Web Search debería estar ahora habilitado, lo que significa que sus consultas pueden utilizar la funcionalidad de búsqueda web Confirmación del distintivo de búsqueda web

¿Qué te parece esta guía?