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

웹 검색 설정

webSearch 구성을 통해 LibreChat 내의 웹 검색 기능을 사용자 정의할 수 있으며, 여기에는 검색 제공자, 콘텐츠 스크레이퍼, 결과 리랭커가 포함됩니다.

개요

웹 검색 기능은 세 가지 주요 구성 요소로 이루어져 있습니다:

  1. Search Providers: 초기 웹 검색을 수행하는 서비스
  2. Scrapers: 웹 페이지에서 콘텐츠를 추출하는 서비스
  3. Rerankers: 검색 결과를 더 높은 관련성으로 재정렬하는 서비스

예시

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)

검색 제공자 (Search Providers)

searchProvider

KeyTypeDescriptionExample
searchProviderString사용할 검색 공급자를 지정합니다.Options: "serper", "searxng", "tavily"

serperApiKey

KeyTypeDescriptionExample
serperApiKeyStringSerper API 키를 위한 환경 변수 이름입니다. .env에 설정되지 않은 경우, 사용자가 UI를 통해 입력하도록 요청받게 됩니다.${SERPER_API_KEY}

참고: Serper.dev에서 API 키를 받으세요.

searxngInstanceUrl

KeyTypeDescriptionExample
searxngInstanceUrlStringSearXNG 인스턴스 URL을 위한 환경 변수 이름입니다. .env에 설정되지 않은 경우, 사용자가 UI를 통해 입력하도록 요청받게 됩니다.${SEARXNG_INSTANCE_URL}

searxngApiKey

KeyTypeDescriptionExample
searxngApiKeyStringSearXNG API 키를 위한 환경 변수 이름입니다. .env에 설정되지 않은 경우, 사용자에게 UI를 통해 입력하라는 메시지가 표시됩니다.${SEARXNG_API_KEY}

참고: 이는 선택 사항이며, 사용 중인 SearXNG 인스턴스에 인증이 필요한 경우에만 필요합니다.

tavilyApiKey

KeyTypeDescriptionExample
tavilyApiKeyStringTavily API 키를 위한 환경 변수 이름입니다. 검색 및 스크레이퍼 모두에 사용됩니다. .env에 설정되지 않은 경우, 사용자에게 UI를 통해 입력하라는 메시지가 표시됩니다.${TAVILY_API_KEY}

참고: Tavily에서 API 키를 받으세요.

tavilySearchUrl

KeyTypeDescriptionExample
tavilySearchUrlString사용자 지정 Tavily Search API URL을 위한 환경 변수 이름입니다. 선택 사항이며, 설정하지 않으면 Tavily 호스팅 검색이 기본값으로 사용됩니다.${TAVILY_SEARCH_URL}

tavilyExtractUrl

KeyTypeDescriptionExample
tavilyExtractUrlString사용자 지정 Tavily Extract API URL을 위한 환경 변수 이름입니다. 선택 사항이며, 설정하지 않으면 Tavily 호스팅 extract가 기본값으로 사용됩니다.${TAVILY_EXTRACT_URL}

tavilySearchOptions

KeyTypeDescriptionExample
tavilySearchOptionsObjectTavily 검색을 위한 구성 옵션.

하위 키(Subkeys):

KeyTypeDescriptionExample
searchDepthString관련성과 지연 시간 간의 균형을 제어합니다. "basic"은 URL당 하나의 NLP 요약을 반환합니다. "advanced"는 URL당 여러 개의 의미론적으로 관련 있는 스니펫을 반환합니다(API 크레딧 2개 소모). "fast"는 스니펫을 통해 속도와 관련성의 균형을 맞춥니다. "ultra-fast"는 하나의 NLP 요약으로 지연 시간을 최소화합니다.Options: "basic", "advanced", "fast", "ultra-fast". Default: "basic"
maxResultsNumber반환할 최대 검색 결과 수입니다.Range: 1-20. Default: 5
topicString검색 카테고리입니다. "news"는 실시간 업데이트에 유용하며, "finance"는 금융 데이터에 유용합니다.Options: "general", "news", "finance". Default: "general"
includeImagesBoolean응답에 이미지를 포함합니다. 최상위 쿼리 이미지와 결과별 이미지를 모두 반환합니다.Default: false
includeAnswerBoolean or StringLLM 생성 답변을 포함합니다. 빠른 답변을 원하면 "basic" 또는 true를, 자세한 답변을 원하면 "advanced"를 사용하세요.Default: false
includeRawContentBoolean or String정제 및 파싱된 HTML 콘텐츠를 포함합니다. 마크다운 형식의 경우 "markdown" 또는 true, 일반 텍스트의 경우 "text"를 사용하세요.Default: false
includeDomainsArray of Strings특정 도메인으로 검색을 제한합니다. 최대 300개의 도메인까지 가능합니다.
excludeDomainsArray of Strings결과에서 특정 도메인을 제외합니다. 최대 150개의 도메인까지 가능합니다.
timeRangeString게시일 또는 마지막 업데이트 날짜를 기준으로 하는 시간 범위 필터입니다.Options: "day", "week", "month", "year"
includeImageDescriptionsBooleanincludeImages가 true일 때, 각 이미지에 대한 설명 텍스트도 추가하세요.Default: false
includeFaviconBoolean각 검색 결과에 대한 favicon URL을 포함합니다.Default: false
chunksPerSourceNumber소스당 최대 관련 콘텐츠 청크 수입니다. searchDepth가 "advanced"일 때만 사용할 수 있습니다.Range: 1-3. Default: 3
safeSearchBooleanTavily Search 요청에 대한 선택적 Tavily safe_search 재정의입니다. 기본적으로 생략되며, true로 설정할 경우 Tavily Enterprise가 필요할 수 있습니다.Default: omitted
timeoutNumber밀리초 단위의 클라이언트 측 HTTP 요청 시간 제한입니다. Tavily API가 응답할 때까지 기다릴 시간을 제어하며, 이 시간이 지나면 요청을 중단합니다.Default: 15000

Scrapers

firecrawlApiKey

KeyTypeDescriptionExample
firecrawlApiKeyStringFirecrawl API 키를 위한 환경 변수 이름입니다. .env에 설정되지 않은 경우, 사용자는 UI를 통해 이를 입력하라는 메시지를 받게 됩니다.${FIRECRAWL_API_KEY}

참고: Firecrawl.dev에서 API 키를 받으세요.

firecrawlApiUrl

KeyTypeDescriptionExample
firecrawlApiUrlStringFirecrawl API URL을 위한 환경 변수 이름입니다. .env에 설정되지 않은 경우, 사용자가 UI를 통해 입력하도록 요청받게 됩니다.${FIRECRAWL_API_URL}

참고: 이는 선택 사항이며, 사용자 지정 Firecrawl 인스턴스를 사용하는 경우에만 필요합니다.

firecrawlVersion

KeyTypeDescriptionExample
firecrawlVersionStringFirecrawl API 버전(v0 또는 v1)을 위한 환경 변수 이름입니다.${FIRECRAWL_VERSION}

scraperProvider

KeyTypeDescriptionExample
scraperProviderString사용할 스크레이퍼 서비스를 지정합니다.Options: "firecrawl", "serper", "tavily"

firecrawlOptions

KeyTypeDescriptionExample
firecrawlOptionsObjectFirecrawl 스크레이퍼를 위한 고급 구성 옵션.

하위 키(Subkeys):

formats

KeyTypeDescriptionExample
formatsArray of Strings출력에 포함할 형식.

includeTags

KeyTypeDescriptionExample
includeTagsArray of Strings출력에 포함할 태그.

excludeTags

KeyTypeDescriptionExample
excludeTagsArray of Strings출력에서 제외할 태그.

headers

KeyTypeDescriptionExample
headersObject요청과 함께 보낼 헤더입니다. 쿠키, user-agent 등을 보내는 데 사용할 수 있습니다.

waitFor

KeyTypeDescriptionExample
waitForNumber콘텐츠를 가져오기 전에 밀리초 단위의 지연 시간을 지정하여 페이지가 로드될 충분한 시간을 확보하세요.

timeout

KeyTypeDescriptionExample
timeoutInteger스크래핑 요청에 대한 밀리초 단위의 타임아웃입니다. 음수가 아닌 정수여야 합니다.Default: 7500

maxAge

KeyTypeDescriptionExample
maxAgeNumber페이지가 이 시간(밀리초)보다 최신인 경우 캐시된 버전을 반환합니다. 캐시된 페이지가 이 값보다 오래된 경우 페이지를 다시 스크랩합니다.

참고: 매우 최신 데이터가 필요하지 않은 경우, 이 기능을 활성화하면 스크래핑 속도를 500%까지 높일 수 있습니다.

mobile

KeyTypeDescriptionExample
mobileBoolean모바일 기기에서의 스크래핑을 에뮬레이트합니다.

skipTlsVerification

KeyTypeDescriptionExample
skipTlsVerificationBoolean요청 시 TLS 인증서 확인을 건너뜁니다.

blockAds

KeyTypeDescriptionExample
blockAdsBoolean광고 차단 및 쿠키 팝업 차단 기능을 활성화합니다.

removeBase64Images

KeyTypeDescriptionExample
removeBase64ImagesBoolean출력에서 모든 base 64 이미지를 제거합니다. 이 이미지는 매우 길 수 있습니다. 이미지의 alt 텍스트는 출력에 유지되지만 URL은 자리 표시자로 대체됩니다.

parsePDF

KeyTypeDescriptionExample
parsePDFBoolean스크래핑 중 PDF 파일이 처리되는 방식을 제어합니다.

storeInCache

KeyTypeDescriptionExample
storeInCacheBooleantrue로 설정하면 페이지가 Firecrawl 인덱스 및 캐시에 저장됩니다. 스크래핑 활동에 데이터 보호 관련 우려가 있는 경우 이 값을 false로 설정하는 것이 유용합니다. 민감한 스크래핑과 관련된 일부 매개변수(headers)를 사용하면 이 매개변수는 강제로 false가 됩니다.

zeroDataRetention

KeyTypeDescriptionExample
zeroDataRetentionBooleantrue로 설정하면 이 스크랩에 대해 데이터 보존을 하지 않습니다(Firecrawl에서 사전 설정이 필요함).

location

KeyTypeDescriptionExample
locationObject스크래핑을 위한 지리적 위치 및 언어 설정.

onlyMainContent

KeyTypeDescriptionExample
onlyMainContentBoolean헤더, 내비게이션, 푸터 등을 제외한 페이지의 본문 내용만 반환합니다.

changeTrackingOptions

KeyTypeDescriptionExample
changeTrackingOptionsObject스크랩된 콘텐츠의 변경 사항을 추적하기 위한 구성입니다.

예시:

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

참고: Firecrawl 스크레이퍼 옵션 및 기본값에 대한 자세한 정보는 Firecrawl API Documentation을 참조하세요.

tavilyScraperOptions

KeyTypeDescriptionExample
tavilyScraperOptionsObjectTavily Extract(스크레이퍼) 구성 옵션.

하위 키(Subkeys):

KeyTypeDescriptionExample
extractDepthString추출 프로세스의 깊이입니다. "advanced"는 표와 포함된 콘텐츠를 포함하여 더 많은 데이터를 성공적으로 검색하지만 지연 시간이 증가할 수 있습니다. "basic"은 성공한 URL 5개당 1 크레딧이 소모되며, "advanced"는 성공한 URL 5개당 2 크레딧이 소모됩니다.Options: "basic", "advanced". Default: "basic"
includeImagesBoolean응답에 URL에서 추출한 이미지 목록을 포함합니다.Default: false
includeFaviconBoolean추출된 각 결과에 대한 favicon URL을 포함합니다.Default: false
formatString추출된 웹 페이지 콘텐츠의 형식입니다. "markdown"은 마크다운 형식으로 콘텐츠를 반환하며, "text"는 일반 텍스트로 반환하므로 지연 시간이 증가할 수 있습니다.Options: "markdown", "text". Default: "markdown"
timeoutNumber밀리초 단위의 타임아웃입니다. 클라이언트 측 HTTP 타임아웃을 제어합니다. 설정 시, 초 단위로 변환되어 1-60초 사이로 제한된 서버 측 추출 타임아웃을 Tavily에 전송합니다.Default: 15000 for basic, 30000 for advanced

예시:

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

참고: Tavily API 옵션에 대한 자세한 내용은 Tavily API Documentation을 참조하세요.

Rerankers

jinaApiKey

KeyTypeDescriptionExample
jinaApiKeyStringJina API 키를 위한 환경 변수 이름입니다. .env에 설정되지 않은 경우, 사용자가 UI를 통해 입력하도록 요청받게 됩니다.${JINA_API_KEY}

참고: Jina.ai에서 API 키를 받으세요.

jinaApiUrl

KeyTypeDescriptionExample
jinaApiUrlStringJina API URL을 위한 환경 변수 이름입니다. .env에 설정되지 않은 경우, 사용자에게 UI를 통해 입력하라는 메시지가 표시됩니다.${JINA_API_URL}

참고: 이는 선택 사항이며 사용자 지정 Jina 인스턴스를 사용하는 경우에만 필요합니다.

cohereApiKey

KeyTypeDescriptionExample
cohereApiKeyStringCohere API 키를 위한 환경 변수 이름입니다. .env에 설정되지 않은 경우, 사용자에게 UI를 통해 입력하라는 메시지가 표시됩니다.${COHERE_API_KEY}

참고: Cohere Dashboard에서 API 키를 받으세요.

rerankerType

KeyTypeDescriptionExample
rerankerTypeString사용할 리랭커(reranker) 서비스를 지정합니다. 리랭킹을 건너뛰려면 "none"으로 설정하세요.Options: "jina", "cohere", "none"

일반 설정

scraperTimeout

KeyTypeDescriptionExample
scraperTimeoutInteger스크레이퍼 요청에 대한 밀리초 단위의 타임아웃입니다. 음수가 아닌 정수여야 합니다.Default: 7500

safeSearch

KeyTypeDescriptionExample
safeSearchNumber안전 검색 필터링 수준입니다. 0 = OFF(필터링 없음), 1 = MODERATE(기본값), 2 = STRICT(최대 필터링).Default: 1 (MODERATE)

참고: 세이프 서치(Safe search) 수준은 표준 검색 API 규칙을 따릅니다. MODERATE 필터링은 기본적으로 활성화되어 있어 검색 효율성을 유지하면서 적절한 콘텐츠 필터링을 제공합니다. Tavily는 기본적으로 이 전역 설정을 상속하지 않으므로, Tavily 계정이 safe_search를 지원하는 경우에만 tavilySearchOptions.safeSearch를 사용하세요.

참고 사항

  • API 키는 두 가지 방법으로 구성할 수 있습니다:
    1. YAML 구성에 지정된 환경 변수를 설정합니다.
    2. 환경 변수가 설정되어 있지 않으면, 사용자는 UI를 통해 API 키를 입력하라는 메시지를 받게 됩니다.
  • 이 구성은 각 구성 요소(providers, scrapers, rerankers)에 대해 다중 서비스를 지원합니다.
  • 특정 서비스 유형이 지정되지 않은 경우, 시스템은 해당 카테고리에 있는 모든 사용 가능한 서비스를 시도합니다.
  • Safe search는 세 가지 수준의 콘텐츠 필터링을 제공합니다: OFF (0), MODERATE (1), STRICT (2)
  • Tavily는 기본적으로 전역 세이프 서치 설정을 상속하지 않습니다. Tavily 계정이 safe_search를 지원하는 경우에만 tavilySearchOptions.safeSearch를 명시적으로 설정하십시오.
  • 실제 API 키를 YAML 구성에 절대 넣지 마십시오. 환경 변수 이름만 사용해야 합니다.

SearXNG 설정하기

SearXNG는 직접 호스팅할 수 있는 개인정보 보호 중심의 메타 검색 엔진입니다. 더 자세한 정보는 공식 SearXNG 문서를 참조하세요.

LibreChat에서 사용할 나만의 SearXNG 인스턴스를 설정하는 단계는 다음과 같습니다:

Docker Desktop 사용하기

  1. 공식 SearXNG 이미지 검색

    • Docker Desktop 열기
    • Images 탭에서 searxng/searxng를 검색하세요.
    • 공식 이미지에서 Run을 클릭하여 해당 이미지의 컨테이너를 자동으로 가져오고 실행하세요.
  2. 컨테이너 실행하기

    • 다운로드가 완료된 후 나타나는 진행 패널에서 Optional Settings 드롭다운을 확장하세요.
    • 원하는 구성 세부 정보(포트 번호, 컨테이너 이름 등)를 설정하세요.
    • Run을 클릭하여 컨테이너를 시작하세요
  3. LibreChat용 SearXNG 구성

    • Docker Desktop의 Files 탭으로 이동합니다.
    • /etc/searxng/settings.yaml로 이동하세요.
    • 파일 편집기 열기
    • formats 섹션으로 이동하세요
    • json을 허용되는 형식으로 추가하여 LibreChat이 귀하의 인스턴스와 통신할 수 있도록 하십시오.
    • 파일을 저장하세요
  4. 컨테이너 재시작

    • 변경 사항을 적용하려면 컨테이너를 다시 시작하세요.

동영상 가이드:

약 1분 만에 처음부터 끝까지 과정을 안내하는 영상입니다:

SearXNG Docker 설정 가이드

참고: 이 예시에서 인스턴스 URL은 http://localhost:55011 입니다(포트 번호는 영상 왼쪽 상단 컨테이너 이름 끝에서 확인할 수 있습니다).

LibreChat에서 SearXNG를 사용하도록 구성하기

LibreChat 내의 UI 또는 librechat.yaml을 통해 SearXNG를 구성할 수 있습니다.

UI 구성

  1. 채팅 입력 바에서 도구 드롭다운을 엽니다 Tools configuration button

  2. Web Search 옆의 톱니바퀴 아이콘을 클릭하세요 Tools configuration section

  3. 검색 제공자(Search Provider) 드롭다운에서 SearXNG를 선택하세요 SearXNG 드롭다운 선택

  4. 구성 세부 정보(예: 인스턴스 URL, 스크레이퍼 유형 등)를 입력하고 저장을 클릭하세요. 웹 검색 구성 저장

  5. 도구 드롭다운에서 Web Search 옵션을 클릭하세요 채팅 인터페이스의 Web search 배지

  6. 이제 웹 검색 배지가 활성화되어 쿼리에서 웹 검색 기능을 사용할 수 있게 되었습니다. Web search badge confirmation

이 가이드는 어떤가요?