Meilisearch v1.16 introduces two main features: multimodal embeddings and a new /export
route. Multimodal embeddings use AI-powered search to index images in addition to textual documents. The /export
route simplifies migrating from a local Meilisearch instance to Meilisearch Cloud.
🧰 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 ❤️).
New features and updates 🔥 Experimental feature: Multimodal embeddingsv1.16 allows indexing and searching non-textual documents, as well as performing searches with image queries. This new feature uses multimodal embedders to provide a common semantic representation for images, texts, and any other piece of data.
UsageFirst, enable the multimodal
experimental feature:
curl \ -X PATCH 'MEILISEARCH_URL/experimental-features/' \ -H 'Content-Type: application/json' \ --data-binary '{ "multimodal": true }'
Next, pick an embedder provider that supports multimodal embeddings such as Cohere or VoyageAI to start building the embedding configuration.
The following is an example configuration for multimodal embedder using VoyageAI:
curl \ -X PATCH 'MEILISEARCH_URL/indexes/INDEX_NAME/settings/embedders' \ -H 'Content-Type: application/json' \ --data-binary '{ "voyage": { "source": "rest", "url": "https://api.voyageai.com/v1/multimodalembeddings", "apiKey": "VOYAGE_API_KEY", "indexingFragments": { "text": { "value": { "content": [ { "type": "text", "text": "A movie titled {{doc.title}} whose description starts with {{doc.overview|truncateWords:20}}." } ] } }, "poster": { "value": { "content": [ { "type": "image_url", "image_url": "{{doc.poster}}" } ] } } }, "searchFragments": { "poster": { "value": { "content": [ { "type": "image_url", "image_url": "{{media.poster}}" } ] } }, "image": { "value": { "content": [ { "type": "image_base64", "image_base64": "data:{{media.image.mime}};base64,{{media.image.data}}" } ] } }, "text": { "value": { "content": [ { "type": "text", "text": "{{q}}" } ] } } }, "request": { "inputs": [ "{{fragment}}", "{{..}}" ], "model": "voyage-multimodal-3" }, "response": { "data": [ { "embedding": "{{embedding}}" }, "{{..}}" ] } }}
The configuration above sets up Meilisearch to generate vectors for two fields: text
and poster
. It also allows users to perform searches with an image URL, a raw image, or regular text.
Use the new media
search parameter together with one of the searchFragments
you specified in your embedder to search with an image:
curl -X POST 'MEILISEARCH_URL/indexes/INDEX_NAME/search' \ -H 'content-type: application/json' \ --data-binary '{ "media": { "poster": "https://image.tmdb.org/t/p/w500/pgqj7QoBPWFLLKtLEpPmFYFRMgB.jpg" }, "hybrid": { "embedder": "EMBEDDER_NAME" } }'
You can also perform a text search with q
and hybrid
:
curl -X POST 'MEILISEARCH_URL/indexes/INDEX_NAME/search' \ -H 'content-type: application/json' \ --data-binary '{ "q": "A movie with lightsabers in space", "hybrid": { "embedder": "voyage", "semanticRatio": 0.5 } }'
Meilisearch performs searches all fields with embeddings when parsing hybrid
queries targeting indexes with multimodal embedders.
For more information about this feature, please refer to its public usage page
The new/export
route
v1.16 introduces a new /export
route that allows transferring documents between instances without having to create a dump or a snapshot. This feature is particularly useful when migrating from a local machine to Meilisearch Cloud.
To transfer data between instances, query /export
and point its url
parameter to the URL of the target instance:
curl \ -X POST 'MEILISEARCH_URL/export' \ -H 'Content-Type: application/json' \ --data-binary '{ "url": "http://localhost:7711" }'
This will generate an export and task start migrating data between instances. Depending on the target instance, you may also have to supply an API key with full admin permissions in the apiKey
parameter. Consult the documentation for an exhaustive list of accepted parameters.
If the request fails, Meilisearch will retry a few times before setting its status to failed. You may also cancel an export task manually. In this case, Meilisearch will interrupt the task locally, but not in the target instance.
Done by @Kerollmops with the help of @Mubelotix in #5670
Other improvementsattributes_to_search_on
by @lblack00 in #5548base_url
when used with OpenAI clients by @diksipav in #5692--experimental-limit-batched-tasks-total-size
by @Kerollmops in #5705disableOnNumbers
not being affected by typo tolerance settings resets by @Nymuxyzo in #5702{}
in index chat settings would incorrectly set the limit to 20 instead of resetting to empty defaultsGITHUB_TOKEN
secret for the db change check
workflow by @martin-g in #5632❤️ Thanks again to our external contributors:
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4