v1.16.0-rc.1 🦚
[!WARNING] Since this is a release candidate (RC), we do NOT recommend using it in a production environment. Is something not working as expected? We welcome bug reports and feedback about new features.
- Fix the dumpless upgrade to v1.16 following the database changes introduced by the multimodal embedder feature, by @dureuill in https://github.com/meilisearch/meilisearch/pull/5737
- A Read-Only Admin key will be created in new empty databases, to prevent accidentally writing to database while investigating, by @Mubelotix in https://github.com/meilisearch/meilisearch/pull/5693
v1.16.0-rc.0 🦚
[!WARNING] Since this is a release candidate (RC), we do NOT recommend using it in a production environment. Is something not working as expected? We welcome bug reports and feedback about new features. ⚠ In particular, upgrading from a database containing embeddings is known not to work in RC.0 ⚠
Meilisearch v1.16 introduces two core features, multimodal embeddings allowing to index images, text and other formats; and the Export/Transfer of documents between instances easing the migration of a local Meilisearch into the cloud!
Meilisearch now allows conveniently indexing images, text and other formats in documents, and to retrieve documents by searching with an image or a text query.
This new feature leverages multimodal embedders to provide a common semantic representation for images, texts, and any other piece of data in a format supported by the chosen model.
As an example, the sample movies
dataset contains movie descriptions and links to movie posters. Using this new feature, it is possible to use text to search both in the descriptions and the posters, or to use an image to search for similar looking posters, or movies with a description matching the query image.
To use multimodal embeddings, start by enabling the multimodal
experimental feature:
curl $MEILISEARCH_URL/experimental-features -X PATCH -H 'Content-type: application/json' -d '{"multimodal": true}'
Then pick an embedder service that supports multimodal such as cohere or VoyageAI to start building the embedding configuration.
An example configuration for VoyageAI to index the description and poster from the movies database, and to search by text or image, might look like the following:
Then, to search by poster (image URL):
// POST /indexes/$INDEX_NAME/search
{
"media": {
"poster": "https://image.tmdb.org/t/p/w500/6FfCtAuVAW8XJjZ7eWeLibRLWTw.jpg"
},
"hybrid": {
"embedder": "voyage",
// semanticRatio is specified here for explicitness,
// but it would default to 1.0 if omitted, as we don't have a text query
// (no "q") here.
"semanticRatio": 1.0
}
}
To search by image data (encoded as base64):
// POST /indexes/$INDEX_NAME/search
{
"media": {
"image": {
"mime": "image/jpeg",
// image bytes encoded as base64
"data": "/9j/4AAQSkZJRgABAQAAAQABAAD/2w..."
}
"hybrid": {
"embedder": "voyage",
}
}
To search by text (performing a hybrid search):
// POST /indexes/$INDEX_NAME/search
{
// note that since the model is multimodal, this will also compare the produced embedding
// with the poster images from movie, so describing a poster image here could find the
// associated movie
"q": "A movie with lightsabers in space",
"hybrid": {
"embedder": "voyage",
"semanticRatio": 0.5
}
}
For more information about this feature, please refer to its public usage page
Done by @dureuill in #5596
Meilisearch now allows to transfer documents from an instance to another without having to create a dump or a snapshot. This feature will ease the migration to the Cloud by streaming all the documents from a local instance to a cloud one.
We expose one single route on the instance which accepts a bunch of parameters.
url
: Where do we want to send our settings and documents.apiKey
: (optional) The API key to have the rights to send those requests. Usually the master key of the remote machine.payloadSize
: (optional) A human readable size defining the size of the payloads to send. Defaults to 50 MiB.indexes
: (optional) A set of patterns of matching the indexes you want to export. If not defined, defaults to all indexes without filter.filter
: (optional) A filter defining the subset of documents to actually export.overrideSettings
: (optional, default false) When false, will not set settings nor update the primary key on indexes that already exist on the remote instance. Will still send the documents
POST: /export
{
"url": "http://localhost:7711",
"apiKey": null,
"payloadSize": "123 MiB",
"indexes": {
"*": {
"filter": null,
"overrideSettings": true
}
}
}
Response:
{
"taskUid": 2,
"indexUid": null,
"status": "enqueued",
"type": "export",
"enqueuedAt": "2025-06-26T12:54:10.785864Z"
}
One task can retry requests in case of failure (not indefinitely, though) and can also be canceled. However, keep in mind that canceling this export task will not cancel tasks received by the targeted Meilisearch instance.
Done by @kerollmops with the help of @mubelotix in #5670
- Added support for nested wildcards in
attributes_to_search_on
by @lblack00 in https://github.com/meilisearch/meilisearch/pull/5548 - Improve the support of geo field extraction from the documents by @nnethercott in https://github.com/meilisearch/meilisearch/pull/5592
- Use all CPUs when importing dumps by @nnethercott in https://github.com/meilisearch/meilisearch/pull/5527
- Display the last embedder error live in batches by @Mubelotix in https://github.com/meilisearch/meilisearch/pull/5707
- Settings indexer edition 2024 by @ManyTheFish in https://github.com/meilisearch/meilisearch/pull/5687
- Request fragments by @dureuill in https://github.com/meilisearch/meilisearch/pull/5596
- Improve the performance when managing single-typo words by @dureuill in https://github.com/meilisearch/meilisearch/pull/5551
- Fix distinct for hybrid search by @dureuill in https://github.com/meilisearch/meilisearch/pull/5614
- Fix a bug related to Cyrillic having different typo tolerance due to byte counting bug by @arthurgousset in https://github.com/meilisearch/meilisearch/pull/5617
- Fix Gemini
base_url
when used with OpenAI clients by @diksipav in https://github.com/meilisearch/meilisearch/pull/5692 - Remove Gemini from the LLM-providers list due to incompatibility with OpenAI by @Kerollmops in https://github.com/meilisearch/meilisearch/pull/5708
- Fix the environment variable name of the experimental limit batched tasks total size feature by @Kerollmops in https://github.com/meilisearch/meilisearch/pull/5705
- Fix
disableOnNumbers
reset by @Nymuxyzo in https://github.com/meilisearch/meilisearch/pull/5702 - Make sure to recover from missing update files by @Kerollmops in https://github.com/meilisearch/meilisearch/pull/5683
- Add analytics to the chat completions by @Kerollmops in https://github.com/meilisearch/meilisearch/pull/5709
- Dependencies updates
- Remove old dependencies by @Mubelotix in https://github.com/meilisearch/meilisearch/pull/5689
- Upgrade dependencies by @Kerollmops in https://github.com/meilisearch/meilisearch/pull/5686
- Bump the mini-dashboard to v0.2.20 by @Kerollmops in https://github.com/meilisearch/meilisearch/pull/5728
- CIs and tests (34 PRs, one folk, yes!)
- perf: Faster IT tests - stats.rs by @martin-g in https://github.com/meilisearch/meilisearch/pull/5572
- perf: Faster index::get_index IT tests by @martin-g in https://github.com/meilisearch/meilisearch/pull/5578
- tests: Assert succeeded/failed for the index::delete_index IT tests by @martin-g in https://github.com/meilisearch/meilisearch/pull/5580
- tests: Faster index::search::mod IT tests by @martin-g in https://github.com/meilisearch/meilisearch/pull/5584
- perf: Faster index::update_index IT tests by @martin-g in https://github.com/meilisearch/meilisearch/pull/5579
- perf: Faster integration tests for add_documents.rs by @martin-g in https://github.com/meilisearch/meilisearch/pull/5574
- tests: Faster search::errors IT tests by @martin-g in https://github.com/meilisearch/meilisearch/pull/5599
- tests: Faster search::locales IT tests by @martin-g in https://github.com/meilisearch/meilisearch/pull/5601
- tests: Faster search::matching_strategy IT tests by @martin-g in https://github.com/meilisearch/meilisearch/pull/5602
- tests: search::pagination IT tests by @martin-g in https://github.com/meilisearch/meilisearch/pull/5604
- tests: Faster search::restricted_searchable IT tests by @martin-g in https://github.com/meilisearch/meilisearch/pull/5605
- tests: Faster settings::distinct IT tests by @martin-g in https://github.com/meilisearch/meilisearch/pull/5606
- tests: Faster settings::proximity_settings IT tests by @martin-g in https://github.com/meilisearch/meilisearch/pull/5609
- tests: Faster settings::tokenizer_customization IT tests by @martin-g in https://github.com/meilisearch/meilisearch/pull/5610
- tests: Faster search::facet_search IT tests by @martin-g in https://github.com/meilisearch/meilisearch/pull/5600
- tests: Faster settings::get_settings IT tests by @martin-g in https://github.com/meilisearch/meilisearch/pull/5607
- tests: Faster vector::binary_quantized IT tests by @martin-g in https://github.com/meilisearch/meilisearch/pull/5618
- tests: Faster search::distinct IT tests by @martin-g in https://github.com/meilisearch/meilisearch/pull/5620
- tests: Faster similar::errors IT tests by @martin-g in https://github.com/meilisearch/meilisearch/pull/5621
- tests: Faster documents::get_documents IT tests by @martin-g in https://github.com/meilisearch/meilisearch/pull/5624
- tests: Faster documents::delete_documents IT tests by @martin-g in https://github.com/meilisearch/meilisearch/pull/5619
- tests: Faster search::geo IT tests by @martin-g in https://github.com/meilisearch/meilisearch/pull/5623
- tests: Faster search::hybrid IT tests by @martin-g in https://github.com/meilisearch/meilisearch/pull/5625
- tests: Faster tasks::mod IT tests by @martin-g in https://github.com/meilisearch/meilisearch/pull/5615
- tests: Faster stats::mod IT tests by @martin-g in https://github.com/meilisearch/meilisearch/pull/5611
- tests: Faster search::filters IT tests by @martin-g in https://github.com/meilisearch/meilisearch/pull/5622
- tests: Use Server::wait_task() instead of Index::wait_task() in search:: by @martin-g in https://github.com/meilisearch/meilisearch/pull/5700
- tests: Use Server::wait_task() instead of Index::wait_task() in index:: by @martin-g in https://github.com/meilisearch/meilisearch/pull/5698
- tests: Use Server::wait_task() instead of Index::wait_task() in settings:: by @martin-g in https://github.com/meilisearch/meilisearch/pull/5699
- tests: Use Server::wait_task() instead of Index::wait_task() in documents:: by @martin-g in https://github.com/meilisearch/meilisearch/pull/5697
- tests: Faster documents::update_documents IT tests by @martin-g in https://github.com/meilisearch/meilisearch/pull/5682
- tests: Faster similar::mod IT tests by @martin-g in https://github.com/meilisearch/meilisearch/pull/5680
- tests: Faster document::errors IT tests by @martin-g in https://github.com/meilisearch/meilisearch/pull/5677
- tests: Faster settings::prefix_search_settings IT tests by @martin-g in https://github.com/meilisearch/meilisearch/pull/5681
- tests: Faster search::multi IT tests by @martin-g in https://github.com/meilisearch/meilisearch/pull/5603
- Misc
- Ignore flaky test by @dureuill in https://github.com/meilisearch/meilisearch/pull/5627
- ci: Use
GITHUB_TOKEN
secret for thedb change check
workflow by @martin-g in https://github.com/meilisearch/meilisearch/pull/5632 - chore: Fix English grammar in SearchQueue's comments by @martin-g in https://github.com/meilisearch/meilisearch/pull/5642
- Typo fix by @mcmah309 in https://github.com/meilisearch/meilisearch/pull/5589
- docs: Recommend using a custom path for the benches' data by @martin-g in https://github.com/meilisearch/meilisearch/pull/5672
❤️ Thanks again to our external contributors:
- Meilisearch: @martin-g, @lblack00, @mcmah309, @nnethercott, @arthurgousset, @Mubelotix, @diksipav, @Nymuxyzo
- Arroy: @nnethercott
v1.15.2 🦘
This patch release introduces a major fix and some minor fixes.
Some searchable fields were removed from the searchable databases when the were removed from the filterableAttributes
setting. This made them unsearchable despite the fact they were still precised in the searchableAttributes
setting. This will no more append in versions >=1.15.2.
Fixed by @ManyTheFish in https://github.com/meilisearch/meilisearch/pull/5660
- Fix chat route missing base URL and Mistral error handling by @Kerollmops in https://github.com/meilisearch/meilisearch/pull/5665
- Various fixes to embedding regeneration by @dureuill in https://github.com/meilisearch/meilisearch/pull/5668
v1.15.1 🦘
Meilisearch v1.15.1 adds new experimental conversational features and enables LLM-driven chat features.
🧰 All official Meilisearch integrations (including SDKs, clients, and other tools) are compatible with this Meilisearch release. Integration deployment takes 4 to 48 hours after a new version becomes available.
Some SDKs might not include all new features. Please look over the project repository for detailed information. Is a feature you need missing from your chosen SDK? Create an issue letting us know you need it, or, for open-source karma points, open a PR implementing it (we'll love you for that ❤️).
After enabling the experimental chat feature, you can create a chat workspace with the appropriate settings. We have a guide on how to set up a good chat interface for your indexes.
curl -X POST 'http://localhost:7700/chats/my-assistant/settings' \
-H 'Content-Type: application/json' \
-d '{
"source": "OpenAi",
"apiKey": "sk-abc..."
}'
Then by using the official OpenAI SDK you'll be able to chat with your indexes.
import OpenAI from 'openai';
const client = new OpenAI({
baseURL: 'http://localhost:7700/chats/my-assistant',
apiKey: 'YOUR_MEILISEARCH_CHAT_API_KEY',
});
const completion = await client.chat.completions.create({
model: 'gpt-3.5-turbo',
messages: [{ role: 'user', content: 'What is Meilisearch?' }],
stream: true,
});
for await (const chunk of completion) {
console.log(chunk.choices[0]?.delta?.content || '');
}
Done by @Kerollmops in #5556.
v1.15.0 🦘
Meilisearch v1.15 adds a new typo tolerance setting, allowing you to disable typo tolerance for numbers. It also enables comparison operators for string filters.
🧰 All official Meilisearch integrations (including SDKs, clients, and other tools) are compatible with this Meilisearch release. Integration deployment takes 4 to 48 hours after a new version becomes available.
Some SDKs might not include all new features. Please look over the project repository for detailed information. Is a feature you need missing from your chosen SDK? Create an issue letting us know you need it, or, for open-source karma points, open a PR implementing it (we'll love you for that ❤️).
Set typoTolerance.disableOnNumbers
to true
to disable typo tolerance for numbers:
curl -X POST 'http://localhost:7700/indexes/movies/settings' \
-H 'Content-Type: application/json' \
-d '{
"typoTolerance": {"disableOnNumbers": true}
}'
Deactivating the typo tolerance on numbers can be helpful when trying to reduce false positives, such as a query term 2024
returning results that include 2025
and 2004
. It may also improve indexing performance.
Done by @ManyTheFish in #5494.
This release allows you to filter strings lexicographically by enabling comparison operators (<, <=, >, >=, TO) on string values:
curl -X POST 'http://localhost:7700/indexes/movies/search' \
-H 'Content-Type: application/json' \
-d '{
"filter": "release_date >= '2024-06'"
}'
This new feature can be particularly useful when filtering human-readable dates.
Done by @dureuill in #5535.
- Allows cancelling an upgrade to a new Meilisearch version by rolling back all upgraded indexes by @dureuill in #5523
- Support EC private key as SSL certificate by @HDT3213 in #5471
- When passing the relevant CLI option, stop compacting snapshots, to speed up their generation by @dureuill and @irevoire in #5498 and #5560
- Add new
batchStrategy
field in the batches stats by @dureuill in #5488, #5530, and #5588 - Add log field tracking time spent searching in the vector store by @Kerollmops in #5525
- Improve filterable error messages by @CodeMan62 in #5425
- Improve error messages on embeddings dimension mismatch by @vuthanhtung2412 in #5449
- Update
/network
URL validation error message format by @CodeMan62 in #5486 - Expose the task queue's status size in the Prometheus metrics by @DanasFi in #5512
- Fix
_matchesPosition
length calculation to improve client-side cropping by @shaokeyibb in #5446 - Fix
_geo
ranking rule by @HDT3213 in #5487 - Fix a panic in the search that could happen when looking for typos with a search prefix having more than 65k possible hits in the DB by @dureuill in #5564
- Make sure that passing
MEILI_EXPERIMENTAL_MAX_NUMBER_OF_BATCHED_TASKS
to 0 results in Meilisearch never processing any kind of task. By @irevoire in #5565 - Forbid value
0
formaxTotalHits
in the index settings by @irevoire in #5566 - No longer reject
documentTemplate
s that use array filters on documents (e.g.join
) by @dureuill in #5593
- Dependency updates
- CIs and tests
- Misc
❤️ Thanks again to our external contributors:
- Meilisearch: @shu-kitamura, @shaokeyibb, @CodeMan62, @vuthanhtung2412, @HDT3213, @DanasFi, and @ZeroZ-lab.
- Charabia: @luflow, @mosuka, and @HDT3213.
- RoaringBitmap: @lucascool12 and @Dr-Emann.
v1.15.0-rc.4 🦘
[!WARNING] Since this is a release candidate (RC), we do NOT recommend using it in a production environment. Is something not working as expected? We welcome bug reports and feedback about new features.
- Minor fixes: Deactivate numbers in typos by @ManyTheFish in https://github.com/meilisearch/meilisearch/pull/5541
- Remove TemplateChecker by @dureuill in https://github.com/meilisearch/meilisearch/pull/5593
- Adapt tests to the Chinese word segmenter changes by @ManyTheFish in https://github.com/meilisearch/meilisearch/pull/5630
- update Charabia to the latest version by @ManyTheFish in https://github.com/meilisearch/meilisearch/pull/5630
Full Changelog: https://github.com/meilisearch/meilisearch/compare/v1.15.0-rc.3...v1.15.0-rc.4
v1.15.0-rc.3 🦘
[!WARNING] Since this is a release candidate (RC), we do NOT recommend using it in a production environment. Is something not working as expected? We welcome bug reports and feedback about new features.
- Only intern in case of typo when looking for one or two typoes by @CodeMan62 in https://github.com/meilisearch/meilisearch/pull/5573
- Update charabia v0.9.5 by @ManyTheFish in https://github.com/meilisearch/meilisearch/pull/5557
- Rename batch creation complete by @dureuill in https://github.com/meilisearch/meilisearch/pull/5588
- Fix another derivation-related panic in the search by @dureuill in https://github.com/meilisearch/meilisearch/pull/5587
Full Changelog: https://github.com/meilisearch/meilisearch/compare/v1.15.0-rc.2...v1.15.0-rc.3
v1.15.0-rc.2 🦘
[!WARNING] Since this is a release candidate (RC), we do NOT recommend using it in a production environment. Is something not working as expected? We welcome bug reports and feedback about new features.
This release fixes a docker deployment issue (by @dureuill in https://github.com/meilisearch/meilisearch/pull/5577) but is otherwise identical to RC 1
v1.15.0-rc.1 🦘
[!WARNING] Since this is a release candidate (RC), we do NOT recommend using it in a production environment. Is something not working as expected? We welcome bug reports and feedback about new features.
- Fix a panic in the search that could happen when looking for typos with a search prefix having more than 65k possible hits in the DB: Only intern in case of single-typo when looking for single typoes by @dureuill in https://github.com/meilisearch/meilisearch/pull/5564
- Make sure that passing
MEILI_EXPERIMENTAL_MAX_NUMBER_OF_BATCHED_TASKS
to 0 results in Meilisearch never processing any kind of task. By @irevoire in https://github.com/meilisearch/meilisearch/pull/5565 - Forbid value
0
formaxTotalHits
in the index settings by @irevoire in https://github.com/meilisearch/meilisearch/pull/5566
- Snapshot compaction is enabled again by default, with an experimental CLI flag to disable the compaction manually. By @irevoire in https://github.com/meilisearch/meilisearch/pull/5560
v1.15.0-rc.0 🦘
[!WARNING] Since this is a release candidate (RC), we do NOT recommend using it in a production environment. Is something not working as expected? We welcome bug reports and feedback about new features.
Meilisearch v1.15 adds a new typo tolerance setting, allowing you to disable typo tolerance for numbers. It also enables comparison operators for string filters.
🧰 All official Meilisearch integrations (including SDKs, clients, and other tools) are compatible with this Meilisearch release. Integration deployment happens between 4 to 48 hours after a new version becomes available.
Some SDKs might not include all new features. Consult the project repository for detailed information. Is a feature you need missing from your chosen SDK? Create an issue letting us know you need it, or, for open-source karma points, open a PR implementing it (we'll love you for that ❤️).
Set typoTolerance.disableOnNumbers
to true
to disable typo tolerance for numbers:
curl -X POST 'http://localhost:7700/indexes/movies/settings' \
-H 'Content-Type: application/json' \
-d '{
"typoTolerance": {"disableOnNumbers": true}
}'
Deactivating the typo tolerance on numbers can be useful when trying to reduce false positives, such as a query term 2024
returning results that include 2025
and 2004
. It may also improve indexing performance.
Done by @ManyTheFish in #5494.
This release allows you to filter strings lexicographically by enabling comparison operators (<, <=, >, >=, TO) on string values:
curl -X POST 'http://localhost:7700/indexes/movies/search' \
-H 'Content-Type: application/json' \
-d '{
"filter": "release_date >= '2024-06'"
}'
This new feature can be particularly useful when filtering human-readable dates.
Done by @dureuill in #5535.
- Allows cancelling an upgrade to a new Meilisearch version by rolling back all upgraded indexes by @dureuill in #5523
- Support EC private key as SSL certificate by @HDT3213 in #5471
- Stop compacting snapshots to speed up their generation by @dureuill in #5498
- Add new
batchCreationComplete
field in the batches stats by @dureuill in #5488 and #5530 - Add log field tracking time spent searching in the vector store by @Kerollmops in #5525
- Improve filterable error messages by @CodeMan62 in #5425
- Improve error messages on embeddings dimension mismatch by @vuthanhtung2412 in #5449
- Update
/network
URL validation error message format by @CodeMan62 in #5486 - Expose the task queue's status size in the Prometheus metrics by @DanasFi in #5512
- Fix
_matchesPosition
length calculation to improve client-side cropping by @shaokeyibb in #5446 - Fix
_geo
ranking rule by @HDT3213 in #5487
- Dependencies updates
- CIs and tests
- Misc
❤️ Thanks again to our external contributors:
- Meilisearch: @shu-kitamura, @shaokeyibb, @CodeMan62, @vuthanhtung2412, @HDT3213, @DanasFi, and @ZeroZ-lab.