meilisearch/MeiliSearch
 Watch   
 Star   
 Fork   
20 days ago
MeiliSearch

v1.14.0 🦫

Meilisearch v1.14 gives more granular control over which parts of filters you can disable for indexing performance optimization. This release also includes composite embedders, which can improve embedding generation during search and indexing, and a new route to retrieve multiple documents by their IDs.

🧰 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 🔥

Granular filterable attribute settings

v1.14 gives you more control over which types of filter you want to disable in your searches. This allows you to further optimize indexing speeds by letting you activate only the filter features you need.

Use PATCH /indexes/INDEX_NAME/settings to specify which filters you want to enable for each attribute in your documents:

{
	"filterableAttributes": [
	  {
	    "attributePatterns": ["genre", "artist"],
	    "features": {
	      "facetSearch": true,
	      "filter": {
	        "equality": true,
	        "comparison": false
	      }
	    }
	  },
	  {
	    "attributePatterns": ["rank"],
	    "features": {
	      "facetSearch": false,
	      "filter": {
	        "equality": true,
	        "comparison": true
	      }
	    }
	  }
	]
}

For more details about this feature, please refer to its public usage page

Done by @ManyTheFish in #5254.

Composite embedders

This feature allows using different embedders at search and indexing time. This can be useful when optimizing AI-powered search performance. For example, you may prefer to use:

  • A remote embedder during indexing, as remote embedders have higher bandwidth and can generate more embeddings per second
  • A local embedder when answering to search queries, as local embedders have lower latency and can respond more quickly to user input

To use the feature, follow these steps:

  1. Enable the Composite embedders feature with the Meilisearch Cloud interface, or with the /experimental-features route:
curl MEILISEARCH_URL/experimental-features \
  -H 'Content-Type: application/json'  \
  -d '{"compositeEmbedders": true}'
  1. Next, create an embedder, setting its source to "composite" and defining one searchEmbedder and one indexingEmbedder:
{
  "embedders": {
    "text": {
      "source": "composite",
      "searchEmbedder": {
        "source": "huggingFace",
        "model": "baai/bge-base-en-v1.5",
        "revision": "a5beb1e3e68b9ab74eb54cfd186867f64f240e1a"
      },
      "indexingEmbedder": {
        "source": "rest",
        "url": "https://URL.endpoints.huggingface.cloud",
        "apiKey": "hf_XXXXXXX",
        "documentTemplate": "Your {{doc.template}}",
        "request": {
          "inputs": [
            "{{text}}",
            "{{..}}"
          ]
        },
        "response": [
          "{{embedding}}",
          "{{..}}"
        ]
      }
    }
  }
}
  1. Once the composite embedder has been created, Meilisearch will use its indexingEmbedder during indexing and searchEmbedder when responding to user queries

For more details about this feature, please refer to its public usage page.

Done by @dureuill in #5371 and #5401.

Retrieve multiple documents by ID

It is now possible to retrieve multiple documents by their IDs:

curl -H 'Content-Type: application/json' MEILISEARCH_URL/indexes/INDEX_UID/documents -d '{ "ids": ["cody", "finn", "brandy", "gambit"] }'
{
  "results": [
    {
      "id": "brandy",
      "info": 13765493
    },
    {
      "id": "finn",
      "info": 35863
    },
    {
      "id": "cody",
      "info": 122263
    },
    {
      "id": "gambit",
      "info": 22222
    }
  ],
  "offset": 0,
  "limit": 20,
  "total": 4
}

[!WARNING] Documents are not returned in the queried order. Non-existent documents are ignored.

Done by @dureuill in #5384.

Other improvements

Fixes

Misc

⚠️ Please consider that the batches stats content can change anytime.

❤️ Thanks again to our external contributors:

20 days ago
MeiliSearch

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

What's Changed

Full Changelog: https://github.com/meilisearch/meilisearch/compare/v1.14.0-rc.2...v1.14.0-rc.3

23 days ago
MeiliSearch

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

🦋 Fixes

⚡ Performance

🔎 Observability

New Contributors

Full Changelog: https://github.com/meilisearch/meilisearch/compare/v1.14.0-rc.1...v1.14.0-rc.2

29 days ago
MeiliSearch

v1.14.0-rc.1 🦫

What's Changed

Features

Add more progress levels to measure merging by @Kerollmops in https://github.com/meilisearch/meilisearch/pull/5422

Computes the durations of each indexing step and displays them in the batch route. #5356

⚠️ When working with it in the doc or the integrations, please consider that the content can change anytime. It must not be enforced.

Show database sizes batches by @Kerollmops in https://github.com/meilisearch/meilisearch/pull/5457

Computes the size of each database and displays them in the batch route. #5463

⚠️ When working with it in the doc or the integrations, please consider that the content can change anytime. It must not be enforced.

Other enhancements

Bug fixes

Dependencies bumps

Full Changelog: https://github.com/meilisearch/meilisearch/compare/v1.14.0-rc.0...v1.14.0-rc.1

2025-03-14 21:35:54
MeiliSearch

v1.14.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[#new] and feedback about new features.

Meilisearch v1.14 exposes a more granular way to express your filterable attributes! 🎉 This release also improves semantic search performance, embedding indexing speed, and a new route to get multiple documents by IDs.

New features and updates 🔥

Granular Filterable Attribute Settings

This feature allows for the choice of the filter features of each filterable attribute with high granularity. Activating or deactivating a feature will have an impact on the indexing time. To use the feature, use the new filterableAttributes format in the settings route (PATCH /indexes/INDEX_UID/settings):

{
	"filterableAttributes": [
	  {
	    "attributePatterns": ["genre", "artist"], 
	    "features": { "facetSearch": true, "filter": { "equality": true, "comparison": false } }
	  },
	  {
	    "attributePatterns": ["rank"],
	    "features": { "facetSearch": false, "filter": { "equality": true, "comparison": true } }
	  },
	  {
	    "attributePatterns": ["albumId"],
	    "features": { "facetSearch": false, "filter": { "equality": true, "comparison": false } }
	  },
	]
}

🗒️ In this example, we activate/deactivate each feature depending on the usage of each filterable attribute, the genre and artist are expected to be strings so the facet search and the equality operators (=/!=) are activated, but, the comparison operators are deactivated (>=, <=, ...) because it's not useful and will save time during the indexing process. However, the rank is expected to be a number, so the facet search is deactivated in favor of the the comparison operators. Last, the albumId is expected to be unique, so only the equality operators (=/!=) are activated.

For more details about this feature, please refer to its public usage page.

Done by @ManyTheFish in #5254.

Composite Embedders

This feature allows using different embedders at search and indexing time, which is useful to optimize the embedder to each situation:

  • Using a remote embedder for indexing in bulk, as remote embedders provide the highest bandwidth (embeddings/s)
  • Using a local embedder for answering search queries, as local embedders provide the lowest latency (time to first embedding)

To use the feature, follow these steps:

  1. Enable the Composite embedders feature from the Cloud dashboard or with the following:
curl -H 'Content-Type: application/json' MEILISEARCH_URL/experimental-features -d '{ "compositeEmbedders": true }'
  1. Send a settings task (PATCH /indexes/INDEX_UID/settings) containing an embedder with source: "composite", and with the parameters searchEmbedder and indexingEmbedder describing the embedder at search time (resp. indexing time). For example, using a Hugging Face inference endpoint.
{
    "embedders": {
        "text": {
            "source": "composite",
            "searchEmbedder": {
                "source": "huggingFace", // locally computed embeddings using a model from the Hugging Face Hub
                "model": "baai/bge-base-en-v1.5",
                "revision": "a5beb1e3e68b9ab74eb54cfd186867f64f240e1a"
            },
            "indexingEmbedder": {
                "source": "rest", // remotely computed embeddings using Hugging Face inference endpoints
                "url": "https://URL.endpoints.huggingface.cloud",
                "apiKey": "hf_XXXXXXX",
                "documentTemplate": "Your {{doc.template}}",
                "request": {
                    "inputs": [
                        "{{text}}",
                        "{{..}}"
                    ]
                },
                "response": [
                    "{{embedding}}",
                    "{{..}}"
                ]
            }
        }
    }
}
  1. Send documents to the index. They will be indexed remotely using the Hugging Face inference endpoint.
  2. Perform semantic search queries, they will be embedded using the local model fetched from the Hugging Face Hub.

For more details about this feature, please refer to its public usage page.

Done by @dureuill in #5371.

Other improvements

  • Get multiple documents by ids by @dureuill in #5384
  • Support merging update and replacement operations by @Kerollmops in #5293
  • Display the internal indexing steps with timings on the /batches route by @Kerollmops in #5356
  • exhaustive facet search by @ManyTheFish in #5369
  • Reduce RAM consumption of arroy by @irevoire in https://github.com/meilisearch/arroy/pull/105
  • Cache Embeddings in Search with an experimental feature by @dureuill in #5418
  • Extend the batch progress view to the indexing of vectors by @irevoire in 5420

Fixes 🐞

  • Support fetching the pooling method from the model configuration by @dureuill in #5355
  • Make sure to delete useless prefixes by @Kerollmops in #5413

Misc

  • Dependencies updates
    • Bump Ubuntu in the CI from 20.04 to 22.04 by @Kerollmops in #5338
    • Bump heed to v0.22 by @irevoire and @Kerollmops in #5406
  • CIs and tests
    • Improve test performance of get_index.rs by @DerTimonius in #5210
    • Ollama Integration Tests by @Kerollmops in #5308
    • Ensure the settings routes are now configurated when a new field is added to the Settings struct by @MichaScant in #5149
    • Skip a snapshot test on Windows by @Kerollmops in #5383
  • Misc
    • Rename callTrace into progressTrace by @Kerollmops in #5364
    • Make composite embedders an experimental feature by @dureuill in #5401

❤️ Thanks again to our external contributors:

2025-03-05 16:46:39
MeiliSearch
2025-02-27 19:02:40
MeiliSearch

v1.13.2 🕊️

What's Changed

Full Changelog: https://github.com/meilisearch/meilisearch/compare/v1.13.1...v1.13.2

2025-02-26 19:24:10
MeiliSearch

v1.13.1 🕊️

What's Changed

Full Changelog: https://github.com/meilisearch/meilisearch/compare/v1.13.0...v1.13.1

2025-02-13 00:27:09
MeiliSearch

v1.13.0 🕊️

Meilisearch v1.13 stabilizes AI-powered search integration! 🎉 This release also introduces two new experimental features: upgrading to new Meilisearch releases without generating a dump and making federated requests across multiple Meilisearch instances.

🧰 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. 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 🔥

AI-powered search and vector store stabilization

With v1.13, AI-powered search is available to all users by default and no longer requires manual activation.

Breaking Changes

  • vectorStore is no longer an accepted value for the /experimental-features route
  • Ollama URLs must end with either /api/embed or /api/embeddings
  • Modified error codes:
    • invalid_embedder has been split into invalid_search_embedder and invalid_similar_embedder. These codes are returned when the embedder parameter of a request to /search, /multi-search or /similar specifies a non-existing embedder or is not a string
    • invalid_hybrid_query has been renamed to invalid_search_hybrid_query. It is returned when the hybrid parameter contains unknown keys or is not either null or an object

Done by @dureuill in https://github.com/meilisearch/meilisearch/pull/5232 & https://github.com/meilisearch/meilisearch/pull/5234

Experimental feature: Dumpless upgrades

Use --experimental-dumpless-upgrade after updating the Meilisearch binary to migrate to a new release:

./meilisearch --experimental-dumpless-upgrade

This faster and more efficient process does not require you to generate a dump and pass it to Meilisearch when upgrading to a new release.

[!WARNING] Meilisearch strongly recommends you generate a backup snapshot before migrating. This is an experimental feature, and failed upgrades may lead to database corruption.

Read more about it on the dedicated product discussion.

Done by @irevoire and @dureuill in https://github.com/meilisearch/meilisearch/pull/5264

Experimental feature: Remote federated search requests

Use remote federated search requests together with the /multi-search route to query multiple Meilisearch instances simultaneously. This is particularly useful when handling very large databases.

First, use the /experimental-features route to enable network:

curl \
  -X PATCH 'MEILISEARCH_URL/experimental-features/' \
  -H 'Content-Type: application/json'  \
  --data-binary '{
    "network": true
  }'

Next, set up your network of Meilisearch instances with a call to PATCH /network configuring one self and multiple remotes:

curl \
  -X PATCH 'MEILISEARCH_URL/network/' \
  -H 'Content-Type: application/json'  \
  --data-binary '{
    "remotes": {
      "ms-0": {
        "url": "http://ms-1235.example.meilisearch.io",
        "searchApiKey": "Ecd1SDDi4pqdJD6qYLxD3y7VZAEb4d9j6LJgt4d6xas"
      },
      "ms-1": {
        "url": "http://ms-4242.example.meilisearch.io",
        "searchApiKey": "hrVu-OMcjPGElK7692K7bwriBoGyHXTMvB5NmZkMKqQ"
      }
    },
    "self": "ms-0"
  }'

Repeat this process with every instance in your network, then add documents. Do not send the same documents to different instances. Finally, make a /multi-search query with the new federationOptions.remote:

curl \
  -X PATCH 'MEILISEARCH_URL/multi-search/' \
  -H 'Content-Type: application/json'  \
  --data-binary '{
    "federation": {},
    "queries": [
        {
            "q": "Batman returns dark",
            "indexUid": "movies",
            "federationOptions": {
                "remote": "ms-0"
            }
        },
        {
            "q": "Batman returns dark",
            "indexUid": "movies",
            "federationOptions": {
                "remote": "ms-1"
            }
        }
    ]
}'

Find more information about this feature on the public usage page

Other improvements

Fixes 🐞

Misc

❤️ Thanks again to our external contributors:

  • Meilisearch: @takaebato, @Sherlouk, @jameshiew, @K-Kumar-01, @mhmoudr, @eltociear, @Gnosnay, @DerTimonius, @manojks1999, @ellnix, @Guikingone, @migueltarga
2025-02-13 00:27:09
MeiliSearch

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

New fields in the stats

Internal fixes

Full Changelog: https://github.com/meilisearch/meilisearch/compare/v1.13.0-rc.2...v1.13.0-rc.3