meilisearch/MeiliSearch
 Watch   
 Star   
 Fork   
19 hours ago
MeiliSearch

v1.21.0

🚀 Enhancements

  • Introduce a new vector store backend for better performance, especially if using the binary quantization
    1. Enable the new vectorStoreSetting experimental feature
    2. Then change the vectorSetting index setting to "experimental" for the indexes where you want to try the new vector store
    • Done in #5767 by @Kerollmops
  • Add Persian support (update charabia to v0.9.7) (#5848) @ManyTheFish

🐛 Bug Fixes

  • Observing the progress trace during indexing no longer removes parts of the trace (#5884) @irevoire
  • Fix dumpless upgrade decoding error when upgrading with a rest embedder (#5886) @dureuill.
    • In case you had encountered the issue, use the dumpless upgrade to v1.21 to fix it.

❤️ Huge thanks to our contributors: @ja7ad, @agourlay, @Kerollmops, @ManyTheFish, @dureuill and @irevoire.

7 days ago
MeiliSearch

v1.20.0 🦟

🚀 Enhancements

  • Display the progressTrace in in-progress batches (#5858) @shreeup

🐛 Bug Fixes

  • Send the version when returning prometheus metrics (#5876) @irevoire

🔒 Security

⚙️ Maintenance/misc

  • Fix scheduled CI failure (#5856) @arithmeticmean

❤️ Huge thanks to our contributors: @ManyTheFish, @arithmeticmean, @curquiza, @dureuill, @irevoire, @shreeup and dependabot[bot].

20 days ago
MeiliSearch

v1.19.1 🪸

🐛 Performance improvements

Enhance hybrid search with filter performances

In previous versions of Meilisearch, mixing hybrid search with filters, as shown below, could multiply the search time by hundreds.

{
  "q": "hello world",
  "limit": 100,
  "filter": "tag=science"
  "hybrid": {
    "semanticRatio": 0.5,
    "embedder": "default"
  }
}

Meilisearch will now directly compute the semantic distance with the filtered candidates if only a few candidates come from the filter, instead of searching for the closest embeddings matching the filter in the vector database.

21 days ago
MeiliSearch

v1.19.0

🚀 Enhancements

  • Sharding and EE license (#5784) @dureuill

🐛 Bug Fixes

  • Takes the allowed max memory of the container when computing the max memory to use (#5729) @martin-g

❤️ Huge thanks to our contributors: @Kerollmops, @dureuill and @martin-g.

28 days ago
MeiliSearch

v1.18.0 🕷️

🚀 Enhancements

  • Return queryVector in the search response when using retrieveVectors (#5778) @Mubelotix
  • Allow retrieving documents with vectors from specific embedders (#5741) @Mubelotix
  • Support renaming indexes using the API (#5829) @irevoire

❤️ Huge thanks to our contributors: @Kerollmops, @Mubelotix, @irevoire and @qdequele.

2025-08-12 23:43:28
MeiliSearch

v1.17.1 🐀

🚀 Enhancements

  • Publish OpenAPI file to release assets (#5823) @curquiza

⚙️ Maintenance/misc

  • Fix update-cargo-version CI (#5831) @curquiza
2025-08-12 14:33:40
MeiliSearch

v1.17.0 🐀

[!NOTE] Want to make your search feel more natural? Try our new chat completions route and turn your queries into conversations. Easy to set up, works with your favorite LLMs.

Enhancement

Bugs

Maintainance

2025-08-04 18:40:12
MeiliSearch

v1.16.0 🦚

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 embeddings

v1.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.

Usage

First, 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

Done by @dureuill in #5596

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.

Usage

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 improvements

Fixes 🐞

Misc

❤️ Thanks again to our external contributors:

  • Meilisearch: @martin-g, @lblack00, @mcmah309, @nnethercott, @arthurgousset, @Mubelotix, @diksipav, @Nymuxyzo, @kametsun
  • Arroy: @nnethercott
2025-08-01 00:13:35
MeiliSearch

v1.1.6.0-rc.5 🦚

[!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.

What's Changed

Full Changelog: https://github.com/meilisearch/meilisearch/compare/v1.16.0-rc.4...v1.16.0-rc.5

2025-07-28 18:33:48
MeiliSearch

v1.16.0-rc.4 🦚

🐛 Bugfixes

New Contributors

Full Changelog: https://github.com/meilisearch/meilisearch/compare/v1.16.0-rc.3...v1.16.0-rc.4