From 6b9e6d08f40c9819441aa0febffa037f1f10f2ba Mon Sep 17 00:00:00 2001 From: Marco Beretta <81851188+berry-13@users.noreply.github.com> Date: Tue, 20 Oct 2026 20:02:21 +0200 Subject: [PATCH 1/6] docs: point the AI overview to web and message search Discord feedback 1561862689301467167 asked how to search from the AI Overview page, which had no pointer to either search feature. --- content/docs/user_guides/ai_overview.mdx | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/content/docs/user_guides/ai_overview.mdx b/content/docs/user_guides/ai_overview.mdx index 3106f26a05..9d6e4eb511 100644 --- a/content/docs/user_guides/ai_overview.mdx +++ b/content/docs/user_guides/ai_overview.mdx @@ -27,3 +27,11 @@ LibreChat allows you to configure and integrate various AI providers, APIs, and 4. **Set Default Endpoint and Preset**: Specify a default endpoint and preset to streamline the process of starting new conversations. Here's a video to demonstrate: **[Setting a Default Preset](https://github.com/danny-avila/LibreChat/assets/110412045/bbde830f-18d9-4884-88e5-1bd8f7ac585d)** 5. **Customize Configurations**: Explore advanced configuration options, such as adding custom endpoints like Ollama, Mistral AI or Openrouter. + +## Searching + +LibreChat has two separate kinds of search: + +- **Search the web**: Turn on web search from the chat input, or give an agent the `web_search` capability, so the AI can look up current information. It needs a search provider, set up by your admin or with your own API keys when prompted. See [Web Search](/docs/features/web_search). + +- **Search your conversations**: Use the search box in the sidebar to find past messages. It appears only when the admin has enabled Meilisearch. See [Message Search](/docs/features/search). From 0dd899d83638d3da14d35924c0f3e90e69847e81 Mon Sep 17 00:00:00 2001 From: Marco Beretta <81851188+berry-13@users.noreply.github.com> Date: Thu, 22 Oct 2026 23:04:26 +0200 Subject: [PATCH 2/6] docs: note the scraper and capability gate for web search in the AI overview --- content/docs/user_guides/ai_overview.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/docs/user_guides/ai_overview.mdx b/content/docs/user_guides/ai_overview.mdx index 9d6e4eb511..87605117a5 100644 --- a/content/docs/user_guides/ai_overview.mdx +++ b/content/docs/user_guides/ai_overview.mdx @@ -32,6 +32,6 @@ LibreChat allows you to configure and integrate various AI providers, APIs, and LibreChat has two separate kinds of search: -- **Search the web**: Turn on web search from the chat input, or give an agent the `web_search` capability, so the AI can look up current information. It needs a search provider, set up by your admin or with your own API keys when prompted. See [Web Search](/docs/features/web_search). +- **Search the web**: Let the AI look up current information. In a regular chat, open the **+** palette in the [message composer](/docs/features/composer) and select **Web Search**. For an agent, enable the **Web Search** capability in the Agent Builder instead. Web search needs both a search provider and a scraper, configured by your admin or with your own API keys when prompted. If the option is missing, see [Web Search option is not visible](/docs/features/web_search#web-search-option-is-not-visible). - **Search your conversations**: Use the search box in the sidebar to find past messages. It appears only when the admin has enabled Meilisearch. See [Message Search](/docs/features/search). From a341a706a3fea676edf6cc6e5d94b521396b3595 Mon Sep 17 00:00:00 2001 From: Marco Beretta <81851188+berry-13@users.noreply.github.com> Date: Thu, 22 Oct 2026 23:05:44 +0200 Subject: [PATCH 3/6] test: cover the AI overview search guidance --- e2e/ai-overview-search-verify.spec.ts | 53 +++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 e2e/ai-overview-search-verify.spec.ts diff --git a/e2e/ai-overview-search-verify.spec.ts b/e2e/ai-overview-search-verify.spec.ts new file mode 100644 index 0000000000..e4a766194b --- /dev/null +++ b/e2e/ai-overview-search-verify.spec.ts @@ -0,0 +1,53 @@ +import { test, expect } from '@playwright/test' + +const PAGE = '/docs/user_guides/ai_overview' + +test.describe('AI Overview search guidance', () => { + test('@scenario:ai-overview-web-search-explained web search names the composer, agents and both required services', async ({ + page, + }) => { + await page.goto(PAGE) + const main = page.locator('main') + await expect(main.getByRole('heading', { name: 'Searching', exact: true })).toBeVisible() + await expect(main).toContainText('open the + palette in the message composer') + await expect(main).toContainText('enable the Web Search capability in the Agent Builder') + await expect(main).toContainText('needs both a search provider and a scraper') + }) + + test('@scenario:ai-overview-search-links-resolve the composer, missing-option and message search links reach their targets', async ({ + page, + }) => { + await page.goto(PAGE) + const composer = page + .locator('main') + .getByRole('link', { name: 'message composer', exact: true }) + await expect(composer).toHaveAttribute('href', /\/docs\/features\/composer$/) + + const missing = page + .locator('main') + .getByRole('link', { name: 'Web Search option is not visible', exact: true }) + await expect(missing).toHaveAttribute( + 'href', + /\/docs\/features\/web_search#web-search-option-is-not-visible$/, + ) + await missing.click() + await expect(page.locator('[id="web-search-option-is-not-visible"]')).toHaveCount(1) + + await page.goto(PAGE) + const messageSearch = page + .locator('main') + .getByRole('link', { name: 'Message Search', exact: true }) + await expect(messageSearch).toHaveAttribute('href', /\/docs\/features\/search$/) + await messageSearch.click() + await expect(page.getByRole('heading', { level: 1, name: 'Message Search' })).toBeVisible() + }) + + test('@scenario:ai-overview-conversation-search-explained conversation search points to the sidebar and its Meilisearch condition', async ({ + page, + }) => { + await page.goto(PAGE) + const main = page.locator('main') + await expect(main).toContainText('Use the search box in the sidebar to find past messages') + await expect(main).toContainText('It appears only when the admin has enabled Meilisearch') + }) +}) From e0304f88d15faa2e46bc34bcc7476245b2e4d8e9 Mon Sep 17 00:00:00 2001 From: Marco Beretta <81851188+berry-13@users.noreply.github.com> Date: Thu, 22 Oct 2026 23:20:13 +0200 Subject: [PATCH 4/6] test: match the Searching heading by id, not accessible name Fumadocs headings carry a Copy Anchor Link button, so the exact accessible name never equals the heading text. --- e2e/ai-overview-search-verify.spec.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/e2e/ai-overview-search-verify.spec.ts b/e2e/ai-overview-search-verify.spec.ts index e4a766194b..69512a9ef3 100644 --- a/e2e/ai-overview-search-verify.spec.ts +++ b/e2e/ai-overview-search-verify.spec.ts @@ -8,7 +8,9 @@ test.describe('AI Overview search guidance', () => { }) => { await page.goto(PAGE) const main = page.locator('main') - await expect(main.getByRole('heading', { name: 'Searching', exact: true })).toBeVisible() + const heading = main.locator('h2[id="searching"]') + await expect(heading).toBeVisible() + await expect(heading).toHaveText('Searching') await expect(main).toContainText('open the + palette in the message composer') await expect(main).toContainText('enable the Web Search capability in the Agent Builder') await expect(main).toContainText('needs both a search provider and a scraper') From 29bd6be2e105b206c6bad805714fce817d09a456 Mon Sep 17 00:00:00 2001 From: Marco Beretta <81851188+berry-13@users.noreply.github.com> Date: Thu, 22 Oct 2026 23:29:59 +0200 Subject: [PATCH 5/6] docs: mention File Search in the AI overview search section --- content/docs/user_guides/ai_overview.mdx | 4 +++- e2e/ai-overview-search-verify.spec.ts | 14 ++++++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/content/docs/user_guides/ai_overview.mdx b/content/docs/user_guides/ai_overview.mdx index 87605117a5..2eb2a18f2e 100644 --- a/content/docs/user_guides/ai_overview.mdx +++ b/content/docs/user_guides/ai_overview.mdx @@ -30,8 +30,10 @@ LibreChat allows you to configure and integrate various AI providers, APIs, and ## Searching -LibreChat has two separate kinds of search: +LibreChat has separate search features for the web, your files, and your conversations: - **Search the web**: Let the AI look up current information. In a regular chat, open the **+** palette in the [message composer](/docs/features/composer) and select **Web Search**. For an agent, enable the **Web Search** capability in the Agent Builder instead. Web search needs both a search provider and a scraper, configured by your admin or with your own API keys when prompted. If the option is missing, see [Web Search option is not visible](/docs/features/web_search#web-search-option-is-not-visible). +- **Search your files**: Ask questions about documents you upload. In a regular chat, select **File Search** from the **+** palette. For an agent, enable the **File Search** capability in the Agent Builder. File Search finds passages by meaning and relies on the RAG API, which your admin sets up. See [RAG API (Chat with Files)](/docs/features/rag_api). + - **Search your conversations**: Use the search box in the sidebar to find past messages. It appears only when the admin has enabled Meilisearch. See [Message Search](/docs/features/search). diff --git a/e2e/ai-overview-search-verify.spec.ts b/e2e/ai-overview-search-verify.spec.ts index 69512a9ef3..a4ad867c3c 100644 --- a/e2e/ai-overview-search-verify.spec.ts +++ b/e2e/ai-overview-search-verify.spec.ts @@ -44,6 +44,20 @@ test.describe('AI Overview search guidance', () => { await expect(page.getByRole('heading', { level: 1, name: 'Message Search' })).toBeVisible() }) + test('@scenario:ai-overview-file-search-explained file search names the composer, agents and the RAG API it relies on', async ({ + page, + }) => { + await page.goto(PAGE) + const main = page.locator('main') + await expect(main).toContainText('In a regular chat, select File Search from the + palette') + await expect(main).toContainText('enable the File Search capability in the Agent Builder') + await expect(main).toContainText('relies on the RAG API, which your admin sets up') + const rag = main.getByRole('link', { name: 'RAG API (Chat with Files)', exact: true }) + await expect(rag).toHaveAttribute('href', /\/docs\/features\/rag_api$/) + await rag.click() + await expect(page).toHaveURL(/\/docs\/features\/rag_api$/) + }) + test('@scenario:ai-overview-conversation-search-explained conversation search points to the sidebar and its Meilisearch condition', async ({ page, }) => { From d55df0139aa11348a498dcf0423425bc66a7b89c Mon Sep 17 00:00:00 2001 From: Marco Beretta <81851188+berry-13@users.noreply.github.com> Date: Thu, 22 Oct 2026 23:54:07 +0200 Subject: [PATCH 6/6] docs: describe search availability once instead of per feature List the capability and role-permission gates for Web Search and File Search in one non-exhaustive paragraph that links to the pages owning the full conditions. --- content/docs/user_guides/ai_overview.mdx | 6 ++++-- e2e/ai-overview-search-verify.spec.ts | 19 ++++++++++++++++++- 2 files changed, 22 insertions(+), 3 deletions(-) diff --git a/content/docs/user_guides/ai_overview.mdx b/content/docs/user_guides/ai_overview.mdx index 2eb2a18f2e..823d4e372c 100644 --- a/content/docs/user_guides/ai_overview.mdx +++ b/content/docs/user_guides/ai_overview.mdx @@ -32,8 +32,10 @@ LibreChat allows you to configure and integrate various AI providers, APIs, and LibreChat has separate search features for the web, your files, and your conversations: -- **Search the web**: Let the AI look up current information. In a regular chat, open the **+** palette in the [message composer](/docs/features/composer) and select **Web Search**. For an agent, enable the **Web Search** capability in the Agent Builder instead. Web search needs both a search provider and a scraper, configured by your admin or with your own API keys when prompted. If the option is missing, see [Web Search option is not visible](/docs/features/web_search#web-search-option-is-not-visible). +- **Search the web**: Let the AI look up current information. In a regular chat, open the **+** palette in the [message composer](/docs/features/composer) and select **Web Search**. For an agent, enable the **Web Search** capability in the Agent Builder instead. Web search needs both a search provider and a scraper, configured by your admin or with your own API keys when prompted. See [Web Search](/docs/features/web_search). -- **Search your files**: Ask questions about documents you upload. In a regular chat, select **File Search** from the **+** palette. For an agent, enable the **File Search** capability in the Agent Builder. File Search finds passages by meaning and relies on the RAG API, which your admin sets up. See [RAG API (Chat with Files)](/docs/features/rag_api). +- **Search your files**: Ask questions about documents you upload. In a regular chat, select **File Search** from the **+** palette. For an agent, enable the **File Search** capability in the Agent Builder. File Search finds passages by meaning using the RAG API, which your admin deploys. See [RAG API (Chat with Files)](/docs/features/rag_api). - **Search your conversations**: Use the search box in the sidebar to find past messages. It appears only when the admin has enabled Meilisearch. See [Message Search](/docs/features/search). + +Web Search and File Search are optional. They show up only when your deployment enables them, which includes turning on the `web_search` or `file_search` agent capability and giving your role the matching permission. If one is missing, ask your admin, or see [Web Search option is not visible](/docs/features/web_search#web-search-option-is-not-visible) and the [`fileSearch` interface setting](/docs/configuration/librechat_yaml/object_structure/interface#filesearch). diff --git a/e2e/ai-overview-search-verify.spec.ts b/e2e/ai-overview-search-verify.spec.ts index a4ad867c3c..446593d253 100644 --- a/e2e/ai-overview-search-verify.spec.ts +++ b/e2e/ai-overview-search-verify.spec.ts @@ -51,13 +51,30 @@ test.describe('AI Overview search guidance', () => { const main = page.locator('main') await expect(main).toContainText('In a regular chat, select File Search from the + palette') await expect(main).toContainText('enable the File Search capability in the Agent Builder') - await expect(main).toContainText('relies on the RAG API, which your admin sets up') + await expect(main).toContainText('using the RAG API, which your admin deploys') const rag = main.getByRole('link', { name: 'RAG API (Chat with Files)', exact: true }) await expect(rag).toHaveAttribute('href', /\/docs\/features\/rag_api$/) await rag.click() await expect(page).toHaveURL(/\/docs\/features\/rag_api$/) }) + test('@scenario:ai-overview-missing-search-option-explained a reader missing Web Search or File Search learns the capability and role gates and where to look', async ({ + page, + }) => { + await page.goto(PAGE) + const main = page.locator('main') + await expect(main).toContainText( + 'which includes turning on the web_search or file_search agent capability and giving your role the matching permission', + ) + const setting = main.getByRole('link', { name: 'fileSearch interface setting', exact: true }) + await expect(setting).toHaveAttribute( + 'href', + /\/docs\/configuration\/librechat_yaml\/object_structure\/interface#filesearch$/, + ) + await setting.click() + await expect(page.locator('[id="filesearch"]')).toHaveCount(1) + }) + test('@scenario:ai-overview-conversation-search-explained conversation search points to the sidebar and its Meilisearch condition', async ({ page, }) => {