Căutarea are două roluri: Web Search Engine găsește paginile (titluri, linkuri, fragmente scurte), iar Web Loader Engine citește conținutul unei pagini (implicit safe_web; alternative playwright, firecrawl, tavily, exa). Administratorul activează căutarea în Settings > Admin > Web Search (ENABLE_WEB_SEARCH, oprit implicit) și alege motorul, de exemplu searxng, brave, tavily, exa, duckduckgo, google_pse, kagi, perplexity, ollama_cloud sau external. Majoritatea serviciilor găzduite cer cont și cheie API.
În modul Native (implicit din v0.10.0), modelul primește două unelte: search_web întoarce doar titluri, linkuri și fragmente (cel mult WEB_SEARCH_RESULT_COUNT, implicit 3), iar fetch_url citește o pagină întreagă cu loaderul configurat. Modelul poate căuta de mai multe ori și poate deschide linkuri; la citări apar doar paginile citite cu fetch_url. Uneltele apar dacă modelul are capabilitatea Web Search și căutarea este bifată la Default Features sau pornită în chat din meniul Integrations. În modul Legacy, Open WebUI caută singur, fragmentează rezultatele și le injectează prin RAG.
SearXNG este un metamotor care se poate găzdui alături de Open WebUI; el trimite mai departe interogările către motoarele pe care le agregă. Pentru Open WebUI trebuie activat formatul json în settings.yml, iar URL-ul indicat este endpointul /search (de exemplu http://searxng:8080/search); forma veche /search?q=<query> mai funcționează. Ghidul SearXNG din documentație este o contribuție a comunității. Administratorul poate cere confirmarea utilizatorului înainte de fiecare căutare (ENABLE_WEB_SEARCH_CONFIRMATION).
Concepte cheie și caracteristici
| Concept / Parametru | Descriere practică |
|---|---|
ENABLE_WEB_SEARCH |
Implicit False. ConfigVar. |
WEB_SEARCH_ENGINE |
Motorul: searxng, brave, tavily, exa, duckduckgo, google_pse, bing, kagi, jina, serper, perplexity, ollama_cloud, external și altele. |
WEB_SEARCH_RESULT_COUNT |
Implicit 3; în modul Native și limita superioară pentru argumentul count al modelului. |
WEB_SEARCH_CONCURRENT_REQUESTS |
Implicit 0 (nelimitat); 1 trimite cererile pe rând, util la limitele de rată. |
SEARXNG_QUERY_URL |
Endpointul /search al instanței SearXNG. |
WEB_LOADER_ENGINE |
Cine citește paginile: gol / safe_web, playwright, firecrawl, tavily, exa, external. |
WEB_FETCH_MAX_CONTENT_LENGTH |
Limită în caractere pentru fetch_url; implicit pagina întreagă. |
BYPASS_WEB_SEARCH_EMBEDDING_AND_RETRIEVAL |
Implicit False; în modul Legacy sare peste fragmentare și embeddings. |
ENABLE_WEB_SEARCH_CONFIRMATION |
Cere confirmare înainte ca interogarea să plece spre furnizor. |
Exemple practice și scenarii reale
Exemplul 1: Open WebUI cu SearXNG în același Compose
Variabilele din ghidul SearXNG al documentației.
services:
open-webui:
environment:
ENABLE_WEB_SEARCH: "True"
WEB_SEARCH_ENGINE: "searxng"
WEB_SEARCH_RESULT_COUNT: 3
WEB_SEARCH_CONCURRENT_REQUESTS: 10
SEARXNG_QUERY_URL: "http://searxng:8080/search"
Exemplul 2: Formatul json în settings.yml al SearXNG
search:
formats:
- html
- json
Exemplul 3: Test din containerul Open WebUI
Dacă răspunsul este JSON, Open WebUI poate folosi instanța.
docker exec -it open-webui curl "http://host.docker.internal:8080/search?q=test&format=json"
Greșeli frecvente și capcane
- Dezactivezi capabilitatea Web Search pe model și pornești comutatorul din chat: în modul Native uneltele nu sunt injectate.
- Folosești Ollama cu contextul implicit de 4096 tokeni: o pagină web are adesea mai mult, deci modelul vede doar o parte. Documentația recomandă un context mai mare.
- Alegi DuckDuckGo pe imaginea
:slim: motorul (DDGS) nu e disponibil acolo; e nevoie de alt furnizor.