웹 검색 설정
webSearch 구성을 통해 LibreChat 내의 웹 검색 기능을 사용자 정의할 수 있으며, 여기에는 검색 제공자, 콘텐츠 스크레이퍼, 결과 리랭커가 포함됩니다.
개요
웹 검색 기능은 세 가지 주요 구성 요소로 이루어져 있습니다:
- Search Providers: 초기 웹 검색을 수행하는 서비스
- Scrapers: 웹 페이지에서 콘텐츠를 추출하는 서비스
- 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
| Key | Type | Description | Example |
|---|---|---|---|
| searchProvider | String | 사용할 검색 공급자를 지정합니다. | Options: "serper", "searxng", "tavily" |
serperApiKey
| Key | Type | Description | Example |
|---|---|---|---|
| serperApiKey | String | Serper API 키를 위한 환경 변수 이름입니다. .env에 설정되지 않은 경우, 사용자가 UI를 통해 입력하도록 요청받게 됩니다. | ${SERPER_API_KEY} |
참고: Serper.dev에서 API 키를 받으세요.
searxngInstanceUrl
| Key | Type | Description | Example |
|---|---|---|---|
| searxngInstanceUrl | String | SearXNG 인스턴스 URL을 위한 환경 변수 이름입니다. .env에 설정되지 않은 경우, 사용자가 UI를 통해 입력하도록 요청받게 됩니다. | ${SEARXNG_INSTANCE_URL} |
searxngApiKey
| Key | Type | Description | Example |
|---|---|---|---|
| searxngApiKey | String | SearXNG API 키를 위한 환경 변수 이름입니다. .env에 설정되지 않은 경우, 사용자에게 UI를 통해 입력하라는 메시지가 표시됩니다. | ${SEARXNG_API_KEY} |
참고: 이는 선택 사항이며, 사용 중인 SearXNG 인스턴스에 인증이 필요한 경우에만 필요합니다.
tavilyApiKey
| Key | Type | Description | Example |
|---|---|---|---|
| tavilyApiKey | String | Tavily API 키를 위한 환경 변수 이름입니다. 검색 및 스크레이퍼 모두에 사용됩니다. .env에 설정되지 않은 경우, 사용자에게 UI를 통해 입력하라는 메시지가 표시됩니다. | ${TAVILY_API_KEY} |
참고: Tavily에서 API 키를 받으세요.
tavilySearchUrl
| Key | Type | Description | Example |
|---|---|---|---|
| tavilySearchUrl | String | 사용자 지정 Tavily Search API URL을 위한 환경 변수 이름입니다. 선택 사항이며, 설정하지 않으면 Tavily 호스팅 검색이 기본값으로 사용됩니다. | ${TAVILY_SEARCH_URL} |
tavilyExtractUrl
| Key | Type | Description | Example |
|---|---|---|---|
| tavilyExtractUrl | String | 사용자 지정 Tavily Extract API URL을 위한 환경 변수 이름입니다. 선택 사항이며, 설정하지 않으면 Tavily 호스팅 extract가 기본값으로 사용됩니다. | ${TAVILY_EXTRACT_URL} |
tavilySearchOptions
| Key | Type | Description | Example |
|---|---|---|---|
| tavilySearchOptions | Object | Tavily 검색을 위한 구성 옵션. |
하위 키(Subkeys):
| Key | Type | Description | Example |
|---|---|---|---|
| searchDepth | String | 관련성과 지연 시간 간의 균형을 제어합니다. "basic"은 URL당 하나의 NLP 요약을 반환합니다. "advanced"는 URL당 여러 개의 의미론적으로 관련 있는 스니펫을 반환합니다(API 크레딧 2개 소모). "fast"는 스니펫을 통해 속도와 관련성의 균형을 맞춥니다. "ultra-fast"는 하나의 NLP 요약으로 지연 시간을 최소화합니다. | Options: "basic", "advanced", "fast", "ultra-fast". Default: "basic" |
| maxResults | Number | 반환할 최대 검색 결과 수입니다. | Range: 1-20. Default: 5 |
| topic | String | 검색 카테고리입니다. "news"는 실시간 업데이트에 유용하며, "finance"는 금융 데이터에 유용합니다. | Options: "general", "news", "finance". Default: "general" |
| includeImages | Boolean | 응답에 이미지를 포함합니다. 최상위 쿼리 이미지와 결과별 이미지를 모두 반환합니다. | Default: false |
| includeAnswer | Boolean or String | LLM 생성 답변을 포함합니다. 빠른 답변을 원하면 "basic" 또는 true를, 자세한 답변을 원하면 "advanced"를 사용하세요. | Default: false |
| includeRawContent | Boolean or String | 정제 및 파싱된 HTML 콘텐츠를 포함합니다. 마크다운 형식의 경우 "markdown" 또는 true, 일반 텍스트의 경우 "text"를 사용하세요. | Default: false |
| includeDomains | Array of Strings | 특정 도메인으로 검색을 제한합니다. 최대 300개의 도메인까지 가능합니다. | |
| excludeDomains | Array of Strings | 결과에서 특정 도메인을 제외합니다. 최대 150개의 도메인까지 가능합니다. | |
| timeRange | String | 게시일 또는 마지막 업데이트 날짜를 기준으로 하는 시간 범위 필터입니다. | Options: "day", "week", "month", "year" |
| includeImageDescriptions | Boolean | includeImages가 true일 때, 각 이미지에 대한 설명 텍스트도 추가하세요. | Default: false |
| includeFavicon | Boolean | 각 검색 결과에 대한 favicon URL을 포함합니다. | Default: false |
| chunksPerSource | Number | 소스당 최대 관련 콘텐츠 청크 수입니다. searchDepth가 "advanced"일 때만 사용할 수 있습니다. | Range: 1-3. Default: 3 |
| safeSearch | Boolean | Tavily Search 요청에 대한 선택적 Tavily safe_search 재정의입니다. 기본적으로 생략되며, true로 설정할 경우 Tavily Enterprise가 필요할 수 있습니다. | Default: omitted |
| timeout | Number | 밀리초 단위의 클라이언트 측 HTTP 요청 시간 제한입니다. Tavily API가 응답할 때까지 기다릴 시간을 제어하며, 이 시간이 지나면 요청을 중단합니다. | Default: 15000 |
Scrapers
firecrawlApiKey
| Key | Type | Description | Example |
|---|---|---|---|
| firecrawlApiKey | String | Firecrawl API 키를 위한 환경 변수 이름입니다. .env에 설정되지 않은 경우, 사용자는 UI를 통해 이를 입력하라는 메시지를 받게 됩니다. | ${FIRECRAWL_API_KEY} |
참고: Firecrawl.dev에서 API 키를 받으세요.
firecrawlApiUrl
| Key | Type | Description | Example |
|---|---|---|---|
| firecrawlApiUrl | String | Firecrawl API URL을 위한 환경 변수 이름입니다. .env에 설정되지 않은 경우, 사용자가 UI를 통해 입력하도록 요청받게 됩니다. | ${FIRECRAWL_API_URL} |
참고: 이는 선택 사항이며, 사용자 지정 Firecrawl 인스턴스를 사용하는 경우에만 필요합니다.
firecrawlVersion
| Key | Type | Description | Example |
|---|---|---|---|
| firecrawlVersion | String | Firecrawl API 버전(v0 또는 v1)을 위한 환경 변수 이름입니다. | ${FIRECRAWL_VERSION} |
scraperProvider
| Key | Type | Description | Example |
|---|---|---|---|
| scraperProvider | String | 사용할 스크레이퍼 서비스를 지정합니다. | Options: "firecrawl", "serper", "tavily" |
firecrawlOptions
| Key | Type | Description | Example |
|---|---|---|---|
| firecrawlOptions | Object | Firecrawl 스크레이퍼를 위한 고급 구성 옵션. |
하위 키(Subkeys):
formats
| Key | Type | Description | Example |
|---|---|---|---|
| formats | Array of Strings | 출력에 포함할 형식. |
includeTags
| Key | Type | Description | Example |
|---|---|---|---|
| includeTags | Array of Strings | 출력에 포함할 태그. |
excludeTags
| Key | Type | Description | Example |
|---|---|---|---|
| excludeTags | Array of Strings | 출력에서 제외할 태그. |
headers
| Key | Type | Description | Example |
|---|---|---|---|
| headers | Object | 요청과 함께 보낼 헤더입니다. 쿠키, user-agent 등을 보내는 데 사용할 수 있습니다. |
waitFor
| Key | Type | Description | Example |
|---|---|---|---|
| waitFor | Number | 콘텐츠를 가져오기 전에 밀리초 단위의 지연 시간을 지정하여 페이지가 로드될 충분한 시간을 확보하세요. |
timeout
| Key | Type | Description | Example |
|---|---|---|---|
| timeout | Integer | 스크래핑 요청에 대한 밀리초 단위의 타임아웃입니다. 음수가 아닌 정수여야 합니다. | Default: 7500 |
maxAge
| Key | Type | Description | Example |
|---|---|---|---|
| maxAge | Number | 페이지가 이 시간(밀리초)보다 최신인 경우 캐시된 버전을 반환합니다. 캐시된 페이지가 이 값보다 오래된 경우 페이지를 다시 스크랩합니다. |
참고: 매우 최신 데이터가 필요하지 않은 경우, 이 기능을 활성화하면 스크래핑 속도를 500%까지 높일 수 있습니다.
mobile
| Key | Type | Description | Example |
|---|---|---|---|
| mobile | Boolean | 모바일 기기에서의 스크래핑을 에뮬레이트합니다. |
skipTlsVerification
| Key | Type | Description | Example |
|---|---|---|---|
| skipTlsVerification | Boolean | 요청 시 TLS 인증서 확인을 건너뜁니다. |
blockAds
| Key | Type | Description | Example |
|---|---|---|---|
| blockAds | Boolean | 광고 차단 및 쿠키 팝업 차단 기능을 활성화합니다. |
removeBase64Images
| Key | Type | Description | Example |
|---|---|---|---|
| removeBase64Images | Boolean | 출력에서 모든 base 64 이미지를 제거합니다. 이 이미지는 매우 길 수 있습니다. 이미지의 alt 텍스트는 출력에 유지되지만 URL은 자리 표시자로 대체됩니다. |
parsePDF
| Key | Type | Description | Example |
|---|---|---|---|
| parsePDF | Boolean | 스크래핑 중 PDF 파일이 처리되는 방식을 제어합니다. |
storeInCache
| Key | Type | Description | Example |
|---|---|---|---|
| storeInCache | Boolean | true로 설정하면 페이지가 Firecrawl 인덱스 및 캐시에 저장됩니다. 스크래핑 활동에 데이터 보호 관련 우려가 있는 경우 이 값을 false로 설정하는 것이 유용합니다. 민감한 스크래핑과 관련된 일부 매개변수(headers)를 사용하면 이 매개변수는 강제로 false가 됩니다. |
zeroDataRetention
| Key | Type | Description | Example |
|---|---|---|---|
| zeroDataRetention | Boolean | true로 설정하면 이 스크랩에 대해 데이터 보존을 하지 않습니다(Firecrawl에서 사전 설정이 필요함). |
location
| Key | Type | Description | Example |
|---|---|---|---|
| location | Object | 스크래핑을 위한 지리적 위치 및 언어 설정. |
onlyMainContent
| Key | Type | Description | Example |
|---|---|---|---|
| onlyMainContent | Boolean | 헤더, 내비게이션, 푸터 등을 제외한 페이지의 본문 내용만 반환합니다. |
changeTrackingOptions
| Key | Type | Description | Example |
|---|---|---|---|
| changeTrackingOptions | Object | 스크랩된 콘텐츠의 변경 사항을 추적하기 위한 구성입니다. |
예시:
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
| Key | Type | Description | Example |
|---|---|---|---|
| tavilyScraperOptions | Object | Tavily Extract(스크레이퍼) 구성 옵션. |
하위 키(Subkeys):
| Key | Type | Description | Example |
|---|---|---|---|
| extractDepth | String | 추출 프로세스의 깊이입니다. "advanced"는 표와 포함된 콘텐츠를 포함하여 더 많은 데이터를 성공적으로 검색하지만 지연 시간이 증가할 수 있습니다. "basic"은 성공한 URL 5개당 1 크레딧이 소모되며, "advanced"는 성공한 URL 5개당 2 크레딧이 소모됩니다. | Options: "basic", "advanced". Default: "basic" |
| includeImages | Boolean | 응답에 URL에서 추출한 이미지 목록을 포함합니다. | Default: false |
| includeFavicon | Boolean | 추출된 각 결과에 대한 favicon URL을 포함합니다. | Default: false |
| format | String | 추출된 웹 페이지 콘텐츠의 형식입니다. "markdown"은 마크다운 형식으로 콘텐츠를 반환하며, "text"는 일반 텍스트로 반환하므로 지연 시간이 증가할 수 있습니다. | Options: "markdown", "text". Default: "markdown" |
| timeout | Number | 밀리초 단위의 타임아웃입니다. 클라이언트 측 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
| Key | Type | Description | Example |
|---|---|---|---|
| jinaApiKey | String | Jina API 키를 위한 환경 변수 이름입니다. .env에 설정되지 않은 경우, 사용자가 UI를 통해 입력하도록 요청받게 됩니다. | ${JINA_API_KEY} |
참고: Jina.ai에서 API 키를 받으세요.
jinaApiUrl
| Key | Type | Description | Example |
|---|---|---|---|
| jinaApiUrl | String | Jina API URL을 위한 환경 변수 이름입니다. .env에 설정되지 않은 경우, 사용자에게 UI를 통해 입력하라는 메시지가 표시됩니다. | ${JINA_API_URL} |
참고: 이는 선택 사항이며 사용자 지정 Jina 인스턴스를 사용하는 경우에만 필요합니다.
cohereApiKey
| Key | Type | Description | Example |
|---|---|---|---|
| cohereApiKey | String | Cohere API 키를 위한 환경 변수 이름입니다. .env에 설정되지 않은 경우, 사용자에게 UI를 통해 입력하라는 메시지가 표시됩니다. | ${COHERE_API_KEY} |
참고: Cohere Dashboard에서 API 키를 받으세요.
rerankerType
| Key | Type | Description | Example |
|---|---|---|---|
| rerankerType | String | 사용할 리랭커(reranker) 서비스를 지정합니다. 리랭킹을 건너뛰려면 "none"으로 설정하세요. | Options: "jina", "cohere", "none" |
일반 설정
scraperTimeout
| Key | Type | Description | Example |
|---|---|---|---|
| scraperTimeout | Integer | 스크레이퍼 요청에 대한 밀리초 단위의 타임아웃입니다. 음수가 아닌 정수여야 합니다. | Default: 7500 |
safeSearch
| Key | Type | Description | Example |
|---|---|---|---|
| safeSearch | Number | 안전 검색 필터링 수준입니다. 0 = OFF(필터링 없음), 1 = MODERATE(기본값), 2 = STRICT(최대 필터링). | Default: 1 (MODERATE) |
참고: 세이프 서치(Safe search) 수준은 표준 검색 API 규칙을 따릅니다. MODERATE 필터링은 기본적으로 활성화되어 있어 검색 효율성을 유지하면서 적절한 콘텐츠 필터링을 제공합니다. Tavily는 기본적으로 이 전역 설정을 상속하지 않으므로, Tavily 계정이 safe_search를 지원하는 경우에만 tavilySearchOptions.safeSearch를 사용하세요.
참고 사항
- API 키는 두 가지 방법으로 구성할 수 있습니다:
- YAML 구성에 지정된 환경 변수를 설정합니다.
- 환경 변수가 설정되어 있지 않으면, 사용자는 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 사용하기
-
공식 SearXNG 이미지 검색
- Docker Desktop 열기
- Images 탭에서
searxng/searxng를 검색하세요. - 공식 이미지에서 Run을 클릭하여 해당 이미지의 컨테이너를 자동으로 가져오고 실행하세요.
-
컨테이너 실행하기
- 다운로드가 완료된 후 나타나는 진행 패널에서 Optional Settings 드롭다운을 확장하세요.
- 원하는 구성 세부 정보(포트 번호, 컨테이너 이름 등)를 설정하세요.
- Run을 클릭하여 컨테이너를 시작하세요
-
LibreChat용 SearXNG 구성
- Docker Desktop의
Files탭으로 이동합니다. /etc/searxng/settings.yaml로 이동하세요.- 파일 편집기 열기
formats섹션으로 이동하세요json을 허용되는 형식으로 추가하여 LibreChat이 귀하의 인스턴스와 통신할 수 있도록 하십시오.- 파일을 저장하세요
- Docker Desktop의
-
컨테이너 재시작
- 변경 사항을 적용하려면 컨테이너를 다시 시작하세요.
동영상 가이드:
약 1분 만에 처음부터 끝까지 과정을 안내하는 영상입니다:
참고: 이 예시에서 인스턴스 URL은 http://localhost:55011 입니다(포트 번호는 영상 왼쪽 상단 컨테이너 이름 끝에서 확인할 수 있습니다).
LibreChat에서 SearXNG를 사용하도록 구성하기
LibreChat 내의 UI 또는 librechat.yaml을 통해 SearXNG를 구성할 수 있습니다.
UI 구성
-
채팅 입력 바에서 도구 드롭다운을 엽니다

-
Web Search 옆의 톱니바퀴 아이콘을 클릭하세요

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

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

-
도구 드롭다운에서 Web Search 옵션을 클릭하세요

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

이 가이드는 어떤가요?