# Message Search (https://www.librechat.ai/docs/features/search)

LibreChat has integrated **Meilisearch** to enhance the user experience by providing a fast and efficient way to search through past conversations. Meilisearch is a powerful, open-source search engine that is known for its speed and ease of use, making it an excellent choice for applications like LibreChat that require quick access to a large volume of data.

![Searching conversations for a banana](https://github.com/danny-avila/LibreChat/assets/32828263/60ad41b0-1869-4ee9-848b-502b3a5557b5)


The integration lets users:

- Search conversation titles, tags, and indexed message contents from the sidebar
- Open a conversation when either its metadata or one of its messages matches
- Use typo tolerance and fast as-you-type results across conversation history
- Search messages and shared-link candidates with page sizes above Meilisearch's old 20-result request default

LibreChat combines conversation-index and message-index matches before loading the visible conversation page. Searches remain bounded by Meilisearch's configured `pagination.maxTotalHits`; the default ceiling used by LibreChat queries is 1,000 hits. See the [Meilisearch Configuration Guide](/docs/configuration/meilisearch) for setup, synchronization, and reindexing behavior.

<Callout type="info" title="Keyword search, not semantic search">

Conversation search is **keyword-based**. It matches the words you type, so searching for "banana" finds messages containing "banana"; it will not find a message about "fruit" that never uses the word.

There is no vector or semantic search over conversation history. Semantic retrieval in LibreChat applies to **uploaded files**, not chat history: the [RAG API](/docs/features/rag_api) embeds documents you attach and retrieves them by meaning using PostgreSQL + pgvector. The two are separate systems, and enabling one does not affect the other.

</Callout>
