Use AI-powered search with user-provided embeddings experimental

    This guide shows how to perform AI-powered searches with user-generated embeddings instead of relying on a third-party tool.

    Requirements

    Configure a custom embedder

    Configure the embedder index setting, settings its source to userProvided:

    curl \
      -X PATCH 'http://localhost:7700/indexes/movies/settings' \
      -H 'Content-Type: application/json' \
      --data-binary '{
        "embedders": {
          "image2text": {
            "source":  "userProvided",
            "dimensions": 3
          }
        }
      }'
    

    Add documents to Meilisearch

    Next, use the /documents endpoint to upload vectorized documents. Place vector data in your documents' _vectors field:

    curl -X POST -H 'content-type: application/json' \
    'localhost:7700/indexes/products/documents' \
    --data-binary '[
        { "id": 0, "_vectors": {"image2text": [0, 0.8, -0.2]}, "text": "frying pan" },
        { "id": 1, "_vectors": {"image2text": [1, -0.2, 0]}, "text": "baking dish" }
    ]'
    

    Vector search with user-provided embeddings

    When using a custom embedder, you must vectorize both your documents and user queries.

    Once you have the query's vector, pass it to the vector search parameter to perform an AI-powered search:

    curl -X POST -H 'content-type: application/json' \
      'localhost:7700/indexes/products/search' \
      --data-binary '{ "vector": [0, 1, 2] }'
    

    vector must be an array of numbers indicating the search vector. You must generate these yourself when using vector search with user-provided embeddings.

    vector can be used together with other search parameters, including filter and sort:

    curl -X POST -H 'content-type: application/json' \
      'localhost:7700/indexes/products/search' \
      --data-binary '{
        "vector": [0, 1, 2],
        "filter": "price < 10",
        "sort": ["price:asc"]
      }'