diff --git a/backend/open_webui/routers/retrieval.py b/backend/open_webui/routers/retrieval.py index 77f04a4be..ff61f2cea 100644 --- a/backend/open_webui/routers/retrieval.py +++ b/backend/open_webui/routers/retrieval.py @@ -392,6 +392,7 @@ async def get_rag_config(request: Request, user=Depends(get_admin_user)): "exa_api_key": request.app.state.config.EXA_API_KEY, "result_count": request.app.state.config.RAG_WEB_SEARCH_RESULT_COUNT, "concurrent_requests": request.app.state.config.RAG_WEB_SEARCH_CONCURRENT_REQUESTS, + "domain_filter_list": request.app.state.config.RAG_WEB_SEARCH_DOMAIN_FILTER_LIST, }, }, } @@ -441,6 +442,7 @@ class WebSearchConfig(BaseModel): exa_api_key: Optional[str] = None result_count: Optional[int] = None concurrent_requests: Optional[int] = None + domain_filter_list: Optional[List[str]] = [] class WebConfig(BaseModel): @@ -553,6 +555,9 @@ async def update_rag_config( request.app.state.config.RAG_WEB_SEARCH_CONCURRENT_REQUESTS = ( form_data.web.search.concurrent_requests ) + request.app.state.config.RAG_WEB_SEARCH_DOMAIN_FILTER_LIST = ( + form_data.web.search.domain_filter_list + ) return { "status": True, @@ -599,6 +604,7 @@ async def update_rag_config( "exa_api_key": request.app.state.config.EXA_API_KEY, "result_count": request.app.state.config.RAG_WEB_SEARCH_RESULT_COUNT, "concurrent_requests": request.app.state.config.RAG_WEB_SEARCH_CONCURRENT_REQUESTS, + "domain_filter_list": request.app.state.config.RAG_WEB_SEARCH_DOMAIN_FILTER_LIST, }, }, } diff --git a/src/lib/components/admin/Settings/WebSearch.svelte b/src/lib/components/admin/Settings/WebSearch.svelte index b2accbf1d..927086d5d 100644 --- a/src/lib/components/admin/Settings/WebSearch.svelte +++ b/src/lib/components/admin/Settings/WebSearch.svelte @@ -34,6 +34,14 @@ let youtubeProxyUrl = ''; const submitHandler = async () => { + // Convert domain filter string to array before sending + if (webConfig?.search?.domain_filter_list) { + webConfig.search.domain_filter_list = webConfig.search.domain_filter_list + .split(',') + .map(domain => domain.trim()) + .filter(domain => domain.length > 0); + } + const res = await updateRAGConfig(localStorage.token, { web: webConfig, youtube: { @@ -49,6 +57,10 @@ if (res) { webConfig = res.web; + // Convert array back to comma-separated string for display + if (webConfig?.search?.domain_filter_list) { + webConfig.search.domain_filter_list = webConfig.search.domain_filter_list.join(', '); + } youtubeLanguage = res.youtube.language.join(','); youtubeTranslation = res.youtube.translation; @@ -334,6 +346,18 @@ /> + +
+
+ {$i18n.t('Domain Filter List')} +
+ + +
{/if}