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.16.0
vault / meilisearch / v1.16.0

meilisearch @ v1.16.0

integrity

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

release notes

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:

download

unix · zip
curl -fL -o v1.16.0.zip https://ratatoskr.space/pkg/meilisearch/v1.16.0.zip
                    printf '%s  %s\n' '59d0832564f55c2663581ffdb91f83e5b52a9dd68dc8f249d32560fcbfc9c741' 'v1.16.0.zip' | sha256sum -c -
windows · zip
$url = "https://ratatoskr.space/pkg/meilisearch/v1.16.0.zip"
$out = "v1.16.0.zip"
Invoke-WebRequest -Uri $url -OutFile $out
if ((Get-FileHash $out -Algorithm SHA256).Hash.ToLowerInvariant() -ne "59d0832564f55c2663581ffdb91f83e5b52a9dd68dc8f249d32560fcbfc9c741") { throw "sha256 mismatch" }
unix · tar.gz
curl -fL -o v1.16.0.tar.gz https://ratatoskr.space/pkg/meilisearch/v1.16.0.tar.gz
                    printf '%s  %s\n' '5743fd58ba8f936fd0707dd5d31c77813b079d83014a73cb81e148f5b41d7d8b' 'v1.16.0.tar.gz' | sha256sum -c -
windows · tar.gz
$url = "https://ratatoskr.space/pkg/meilisearch/v1.16.0.tar.gz"
$out = "v1.16.0.tar.gz"
Invoke-WebRequest -Uri $url -OutFile $out
if ((Get-FileHash $out -Algorithm SHA256).Hash.ToLowerInvariant() -ne "5743fd58ba8f936fd0707dd5d31c77813b079d83014a73cb81e148f5b41d7d8b") { throw "sha256 mismatch" }
download via yggdrasil mesh
unix · zip
curl -fL -o v1.16.0.zip http://14cc7d57b5e70f679b851fe5b272ce17c70632ff4beb5b35ab64bc706b2485af.pk.ygg/pkg/meilisearch/v1.16.0.zip
                    printf '%s  %s\n' '59d0832564f55c2663581ffdb91f83e5b52a9dd68dc8f249d32560fcbfc9c741' 'v1.16.0.zip' | sha256sum -c -
windows · zip
$url = "http://14cc7d57b5e70f679b851fe5b272ce17c70632ff4beb5b35ab64bc706b2485af.pk.ygg/pkg/meilisearch/v1.16.0.zip"
$out = "v1.16.0.zip"
Invoke-WebRequest -Uri $url -OutFile $out
if ((Get-FileHash $out -Algorithm SHA256).Hash.ToLowerInvariant() -ne "59d0832564f55c2663581ffdb91f83e5b52a9dd68dc8f249d32560fcbfc9c741") { throw "sha256 mismatch" }
unix · tar.gz
curl -fL -o v1.16.0.tar.gz http://14cc7d57b5e70f679b851fe5b272ce17c70632ff4beb5b35ab64bc706b2485af.pk.ygg/pkg/meilisearch/v1.16.0.tar.gz
                    printf '%s  %s\n' '5743fd58ba8f936fd0707dd5d31c77813b079d83014a73cb81e148f5b41d7d8b' 'v1.16.0.tar.gz' | sha256sum -c -
windows · tar.gz
$url = "http://14cc7d57b5e70f679b851fe5b272ce17c70632ff4beb5b35ab64bc706b2485af.pk.ygg/pkg/meilisearch/v1.16.0.tar.gz"
$out = "v1.16.0.tar.gz"
Invoke-WebRequest -Uri $url -OutFile $out
if ((Get-FileHash $out -Algorithm SHA256).Hash.ToLowerInvariant() -ne "5743fd58ba8f936fd0707dd5d31c77813b079d83014a73cb81e148f5b41d7d8b") { throw "sha256 mismatch" }
artifact format size hashes
v1.16.0.zip zip 19.7 MiB
blake3-24 8a4cfcac5781ba37b4e9e6a2adb052352c5de4b77b490775
sha256 59d0832564f55c2663581ffdb91f83e5b52a9dd68dc8f249d32560fcbfc9c741
sha1 7b8157c399f9a7eed022bc0806a1aee4fc764da2
v1.16.0.tar.gz tar.gz 18.8 MiB
blake3-24 fb92d286d35b22fa2907da4ce0b0d07cc2e3343ad0d0f328
sha256 5743fd58ba8f936fd0707dd5d31c77813b079d83014a73cb81e148f5b41d7d8b
sha1 8cd25a36926d5544f501d5230811c711f868e01c

install

bazel
http_archive(
    name = "meilisearch",
    urls = ["https://ratatoskr.space/pkg/meilisearch/v1.16.0.tar.gz"],
    integrity = "sha256-V0P9WLqPk2/QcH3V0xx3gTsHnYMBSnPLgeFI9bQdfYs=",
    strip_prefix = "meilisearch-v1.16.0",
)
zig
.url = "https://ratatoskr.space/pkg/meilisearch/v1.16.0.tar.gz",
install via yggdrasil mesh
bazel
http_archive(
    name = "meilisearch",
    urls = ["http://14cc7d57b5e70f679b851fe5b272ce17c70632ff4beb5b35ab64bc706b2485af.pk.ygg/pkg/meilisearch/v1.16.0.tar.gz"],
    integrity = "sha256-V0P9WLqPk2/QcH3V0xx3gTsHnYMBSnPLgeFI9bQdfYs=",
    strip_prefix = "meilisearch-v1.16.0",
)
zig
.url = "http://14cc7d57b5e70f679b851fe5b272ce17c70632ff4beb5b35ab64bc706b2485af.pk.ygg/pkg/meilisearch/v1.16.0.tar.gz",
← v1.17.0v1.15.2 →