Skip to content

馃攳 docs: Correct How SearXNG Selects Engines for Web Search - #781

Open
Odrec wants to merge 1 commit into
LibreChat-AI:mainfrom
Odrec:docs/searxng-engine-selection
Open

Odrec wants to merge 1 commit into
LibreChat-AI:mainfrom
Odrec:docs/searxng-engine-selection

Conversation

@Odrec

@Odrec Odrec commented Sep 25, 2026

Copy link
Copy Markdown
Contributor

Summary

The "Choosing engines" section of the web search page says that an engine disabled on the SearXNG instance is skipped, and that leaving DuckDuckGo out of searxngSearchOptions.engines keeps it from being queried. Neither matches how SearXNG selects engines:

  • A named engine is only checked against the engines SearXNG loaded (parse_generic in searx/webadapter.py: if engine_name in engines). Engines set to disabled: true are loaded, so naming one in engines queries it. Only inactive: true engines are skipped.
  • LibreChat always sends categories alongside engines (the search tool in @librechat/agents). When a request carries both, parse_generic adds every engine in that category that is not disabled. So engines adds to the selection, and leaving an engine out does not exclude it.

Observed against a self-hosted SearXNG 2026.9.25 instance:

  • engines=qwant, with qwant set to disabled: true, still sent the request to Qwant (it answered with a CAPTCHA).
  • A request with engines=google,bing,duckduckgo&categories=general also returned results from brave and startpage.
  • bing only stopped being queried once it was marked inactive: true.

Changes

  • Choosing engines: explain disabled versus inactive, and describe /config as listing every loaded engine with an enabled flag. Add a paragraph on how engines combines with categories and how to exclude an engine, and drop "leave DuckDuckGo out" from the advice.
  • What these options do not control: note that SearXNG adds the chosen category's engines to engines.
  • Troubleshooting empty results: the same correction in item 3, plus a pointer to unresponsive_engines, which names each engine that failed and why. Item 4 now mentions inactive.
  • Reproduction curl: add categories=general&language=all so the command matches what LibreChat sends. Without categories, SearXNG queries only the listed engines and returns different results from what LibreChat gets.

The example engine lists are unchanged.

馃 Generated with Claude Code

@vercel

vercel Bot commented Sep 25, 2026

Copy link
Copy Markdown

Someone is attempting to deploy a commit to the LibreChat's projects Team on Vercel.

A member of the Team first needs to authorize it.

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant