yggvault ratatoskr-space connected via regular web
Color theme
also available via yggdrasil mesh http://[203:b338:2a84:a18f:986:47ae:1a4:d8d3]/pkg/meilisearch/v1.11.0
vault / meilisearch / v1.11.0

meilisearch @ v1.11.0

integrity

size
15.3 MiB
downloaded
last checked
source https://github.com/meilisearch/meilisearch · available · github

release notes

Meilisearch v1.11 introduces AI-powered search performance improvements thanks to binary quantization and various usage changes, all of which are steps towards a future stabilization of the feature. We have also improved federated search usage following user feedback.

🧰 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 - AI-powered search improvements

This release is Meilisearch's first step towards stabilizing AI-powered search and introduces a few breaking changes to its API. Consult the PRD for full usage details.

Done by @dureuill in #4906, #4920, #4892, and #4938.

⚠️ Breaking changes

Addition & improvements

v1.11:

{% for field in fields %}
  {% if field.is_searchable and not field.value == nil %}
    {{ field.name }}: {{ field.value }}\n
  {% endif %}
{% endfor %}

v1.10:

{% for field in fields %}
  {{ field.name }}: {{ field.value }}\n
{% endfor %}

Embedders using the v1.10 document template will continue working as before. The new default document template will only work with newly created embedders.

Vector database indexing performance improvements

v1.11 introduces a new embedder option, binaryQuantized:

curl \
  -X PATCH 'http://localhost:7700/indexes/movies/settings' \
  -H 'Content-Type: application/json' \
  --data-binary '{
    "embedders": {
      "image2text": {
        "binaryQuantized": true
      }
    }
  }'

Enable binary quantization to convert embeddings of floating point numbers into embeddings of boolean values. This will negatively impact the relevancy of AI-powered searches but significantly improve performance in large collections with more than 100 dimensions.

In our benchmarks, this reduced the size of the database by a factor of 10 and divided the indexing time by a factor of 6 with little impact on search times.

[!WARNING] Enabling this feature will update all of your vectors to contain only 1s or -1s, significantly impacting relevancy.

You cannot revert this option once you enable it. Before setting binaryQuantized to true, Meilisearch recommends testing it in a smaller or duplicate index in a development environment.

Done by @irevoire in #4941.

Federated search improvements

Facet distribution and stats for federated searches

This release adds two new federated search options, facetsByIndex and mergeFacets. These allow you to request a federated search for facet distributions and stats data.

Facet information by index

To obtain facet distribution and stats for each separate index, use facetsByIndex when querying the POST /multi-search endpoint:

POST /multi-search
{
  "federation": {
    "limit": 20,
    "offset": 0,
	"facetsByIndex": {
	  "movies": ["title", "id"],
	  "comics": ["title"],
	}
  },
  "queries": [
    {
      "q": "Batman",
      "indexUid": "movies"
    },
    {
      "q": "Batman",
      "indexUid": "comics"
    }
  ]
}

The multi-search response will include a new field, facetsByIndex with facet data separated per index:

{
  "hits": […],
  …
  "facetsByIndex": {
      "movies": {
        "distribution": {
          "title": {
            "Batman returns": 1
          },
          "id": {
            "42": 1
          }
        },
        "stats": {
          "id": {
            "min": 42,
            "max": 42
          }
        }
      },
     …
  }
}

Merged facet information

To obtain facet distribution and stats for all indexes merged into a single, use both facetsByIndex and mergeFacets when querying the POST /multi-search endpoint:

POST /multi-search
{

  "federation": {
    "limit": 20,
    "offset": 0,
	  "facetsByIndex": {
	    "movies": ["title", "id"],
	    "comics": ["title"],
	  },
	  "mergeFacets": {
	    "maxValuesPerFacet": 10,
	  }
  }
  "queries": [
    {
      "q": "Batman",
      "indexUid": "movies"
    },
    {
      "q": "Batman",
      "indexUid": "comics"
    }
  ]
}

The response includes two new fields, facetDistribution and facetStarts:

{
  "hits": […],
  …
  "facetDistribution": {
    "title": {
      "Batman returns": 1
      "Batman: the killing joke":
    },
    "id": {
      "42": 1
    }
  },
  "facetStats": {
    "id": {
      "min": 42,
      "max": 42
    }
  }
}

Done by @dureuill in #4929.

Experimental — New STARTS WITH filter operator

Enable the experimental feature to use the STARTS WITH filter operator:

curl \
  -X PATCH 'http://localhost:7700/experimental-features/' \
  -H 'Content-Type: application/json' \
  --data-binary '{
    "containsFilter": true
  }'

Use the STARTS WITH operator when filtering:

curl \
  -X POST http://localhost:7700/indexes/movies/search \
  -H 'Content-Type: application/json' \
  --data-binary '{
    "filter": "hero STARTS WITH spider"
  }'

🗣️ This is an experimental feature, and we need your help to improve it! Share your thoughts and feedback on this GitHub discussion.

Done by @Kerollmops in #4939.

Other improvements

Fixes 🐞

Misc

❤️ Thanks again to our external contributors:

download

unix · zip
curl -fL -o v1.11.0.zip https://ratatoskr.space/pkg/meilisearch/v1.11.0.zip
                    printf '%s  %s\n' '13dd95b73302975e5f24c57bb3ba8821bce2c047b531adab080212efc60bd02f' 'v1.11.0.zip' | sha256sum -c -
windows · zip
$url = "https://ratatoskr.space/pkg/meilisearch/v1.11.0.zip"
$out = "v1.11.0.zip"
Invoke-WebRequest -Uri $url -OutFile $out
if ((Get-FileHash $out -Algorithm SHA256).Hash.ToLowerInvariant() -ne "13dd95b73302975e5f24c57bb3ba8821bce2c047b531adab080212efc60bd02f") { throw "sha256 mismatch" }
unix · tar.gz
curl -fL -o v1.11.0.tar.gz https://ratatoskr.space/pkg/meilisearch/v1.11.0.tar.gz
                    printf '%s  %s\n' '04fcbef83c87b382175b823efa0a1f7c697c8d02b5124b8c66def16005099f8e' 'v1.11.0.tar.gz' | sha256sum -c -
windows · tar.gz
$url = "https://ratatoskr.space/pkg/meilisearch/v1.11.0.tar.gz"
$out = "v1.11.0.tar.gz"
Invoke-WebRequest -Uri $url -OutFile $out
if ((Get-FileHash $out -Algorithm SHA256).Hash.ToLowerInvariant() -ne "04fcbef83c87b382175b823efa0a1f7c697c8d02b5124b8c66def16005099f8e") { throw "sha256 mismatch" }
download via yggdrasil mesh
unix · zip
curl -fL -o v1.11.0.zip http://14cc7d57b5e70f679b851fe5b272ce17c70632ff4beb5b35ab64bc706b2485af.pk.ygg/pkg/meilisearch/v1.11.0.zip
                    printf '%s  %s\n' '13dd95b73302975e5f24c57bb3ba8821bce2c047b531adab080212efc60bd02f' 'v1.11.0.zip' | sha256sum -c -
windows · zip
$url = "http://14cc7d57b5e70f679b851fe5b272ce17c70632ff4beb5b35ab64bc706b2485af.pk.ygg/pkg/meilisearch/v1.11.0.zip"
$out = "v1.11.0.zip"
Invoke-WebRequest -Uri $url -OutFile $out
if ((Get-FileHash $out -Algorithm SHA256).Hash.ToLowerInvariant() -ne "13dd95b73302975e5f24c57bb3ba8821bce2c047b531adab080212efc60bd02f") { throw "sha256 mismatch" }
unix · tar.gz
curl -fL -o v1.11.0.tar.gz http://14cc7d57b5e70f679b851fe5b272ce17c70632ff4beb5b35ab64bc706b2485af.pk.ygg/pkg/meilisearch/v1.11.0.tar.gz
                    printf '%s  %s\n' '04fcbef83c87b382175b823efa0a1f7c697c8d02b5124b8c66def16005099f8e' 'v1.11.0.tar.gz' | sha256sum -c -
windows · tar.gz
$url = "http://14cc7d57b5e70f679b851fe5b272ce17c70632ff4beb5b35ab64bc706b2485af.pk.ygg/pkg/meilisearch/v1.11.0.tar.gz"
$out = "v1.11.0.tar.gz"
Invoke-WebRequest -Uri $url -OutFile $out
if ((Get-FileHash $out -Algorithm SHA256).Hash.ToLowerInvariant() -ne "04fcbef83c87b382175b823efa0a1f7c697c8d02b5124b8c66def16005099f8e") { throw "sha256 mismatch" }
artifact format size hashes
v1.11.0.zip zip 15.3 MiB
blake3-24 f186753f061044759dc4b791964d07604c5b4365ff8c8ecb
sha256 13dd95b73302975e5f24c57bb3ba8821bce2c047b531adab080212efc60bd02f
sha1 9b6270b214fe6d61c054fbcec6b577ee1df37677
v1.11.0.tar.gz tar.gz 14.7 MiB
blake3-24 cca0db6b669c024d234961a8dc3447d24d8ed32543a6cefe
sha256 04fcbef83c87b382175b823efa0a1f7c697c8d02b5124b8c66def16005099f8e
sha1 c9943ec4bf4b3394e464b2e69be8201c6540b48c

install

bazel
http_archive(
    name = "meilisearch",
    urls = ["https://ratatoskr.space/pkg/meilisearch/v1.11.0.tar.gz"],
    integrity = "sha256-BPy++DyHs4IXW4I++goffGl8jQK1EkuMZt7xYAUJn44=",
    strip_prefix = "meilisearch-v1.11.0",
)
zig
.url = "https://ratatoskr.space/pkg/meilisearch/v1.11.0.tar.gz",
install via yggdrasil mesh
bazel
http_archive(
    name = "meilisearch",
    urls = ["http://14cc7d57b5e70f679b851fe5b272ce17c70632ff4beb5b35ab64bc706b2485af.pk.ygg/pkg/meilisearch/v1.11.0.tar.gz"],
    integrity = "sha256-BPy++DyHs4IXW4I++goffGl8jQK1EkuMZt7xYAUJn44=",
    strip_prefix = "meilisearch-v1.11.0",
)
zig
.url = "http://14cc7d57b5e70f679b851fe5b272ce17c70632ff4beb5b35ab64bc706b2485af.pk.ygg/pkg/meilisearch/v1.11.0.tar.gz",
← v1.11.1v1.10.3 →