Skip to content

Releases: marqo-ai/marqo

Release 2.3.0

12 Mar 06:54
2043eda
Compare
Choose a tag to compare

2.3.0

New features

  • New update_documents API (#773). Structured indexes now support high throughput partial updates to non-tensor fields. Unstructured indexes do not support partial updates. See usages here
  • The custom vectors feature is now supported again for both structured and unstructured indexes (#777). You can now add externally generated vectors to Marqo documents. See usages here

Bug fixes and minor changes

  • Fix an issue where non-default distance metrics are not configured correctly with unstructured indexes (#772).
  • Introduce a guide for running Marqo open source in production environments, offering insights and best practices (#775).
  • Remove outdated examples from the README to improve clarity and relevance (#766).

Contributor shout-outs

  • A huge thank you to all our 4k stargazers! This is a new milestone for Marqo!
  • Stay connected and share your thoughts on our forum and Slack channel! Your insights, questions, and feedback are always welcome and highly appreciated.

Release 2.2.1

20 Feb 22:43
3bd949c
Compare
Choose a tag to compare

2.2.1

Bug fixes and minor changes

  • Fix response code for vector store timeout, change it from 429 to 504 (#763)

Release 2.2.0

12 Feb 02:23
b2125a8
Compare
Choose a tag to compare

2.2.0

New features

  • Support filtering on document ID with structured indexes. This was already supported with unstructured indexes (#749)
  • New structured index data types: long, double, array<long> and array<double> for a higher precision and range of values Available for indexes created with Marqo 2.2+ (#722)
  • Higher precision numeric fields for unstructured indexes. Unstructured indexes created with Marqo 2.2+ will use double precision floats and longs for a higher precision and wider range of values (#722)
  • Numeric value range validation. Values that are out of range for the field type will now receive a 400 validation error when adding documents. (#722)

Bug fixes and minor changes

  • Fix unstructured index bug where filtering for boolean-like strings (e.g., "true") would not work as expected (#709)
  • Better handling of vector store timeouts. Marqo will now return a 429 (throttled) error message when the backend vector store is receiving more traffic than it can handle(#758)
  • Improved error logging. Stack trace will now always be logged (#745)
  • Better API 500 error message. Marqo will no longer return verbose error messages in the API response (#751)
  • Default index model is now hf/e5-base-v2 (#710)
  • Improve error messages (#746, #747)
  • Improve error handling at startup when vector store is not ready. Marqo will now start and wait for vector store to become available (#752)

Contributor shout-outs

  • A huge thank you to all our 3.9k stargazers!
  • Thank you @Dmitri for helping us identify the issue with running Marqo on older AMD64 processors!

Release 2.1.0

31 Jan 05:02
5439133
Compare
Choose a tag to compare

2.1.0

New features

  • Search result maximum limit and offset greatly increased. Maximum limit parameter increased from 400 to 1,000, offset increased from 1,000 to 10,000. Maximum value for MARQO_MAX_RETRIEVABLE_DOCS configuration is now 10,000 (#735​​, #737​​). See search limit and offset usage here

Bug fixes and minor changes

  • Improved the Marqo bootstrapping process to address unexpected API behaviour when no index has been created yet (#730).
  • Improved validation for create_index settings (#717, #734). Using dependent_fields as a request body parameter will now raise a 400 validation error.
  • Improved data parsing for documents in unstructured indexes (#732).
  • Made vector store layer config upgrades and rollbacks easier (#735​​, #736​​).
  • Readme improvements (#729).

2.0.1

Also included in this release

Bug fixes and minor changes

  • Improved stability of use_existing_tensors feature in add_documents (#725).
  • Improved readability of Marqo start-up logs (#719).
  • Removed obsolete examples (#721, #723).

Release 2.0.0

16 Jan 06:42
6bd548e
Compare
Choose a tag to compare

2.0.0

New features

  • Significant queries-per-second (QPS) and latency improvements in addition to reduced memory and storage requirements. Get a higher QPS and a lower latency for the same infrastructure cost, or get the same performance for much cheaper! In our large-scale experiments, we have achieved 2x QPS improvement, 2x speed-up in P50 search latency and 2.3x speed-up in P99 search latency, compared to previous Marqo versions.
  • Significantly improved recall. You can now get up to 99% recall (depending on your dataset and configuration) without sacrificing performance.
  • Support for bfloat16 numeric type. Index 2x more vectors with the same amount of memory for a minimal reduction in recall and performance.
  • Structured index. You can now create structured indexes, which provide better data validation, higher performance, better recall and better memory efficiency.
  • New API search parameter efSearch. Search API now accepts an optional efSearch parameter which allows you to fine-tune the underlying HNSW search. Increase efSearch to improve recall at a minor cost of QPS and latency. See here for usage.
  • Exact nearest neighbour search. Set "approximate": false in the Search API body to perform an exact nearest neighbour search. This is useful for calculating recall and finding the best efSearch for your dataset. See here for usage.
  • New approximate nearest neighbour space types. Marqo now supports euclidean, angular, dotproduct, prenormalized-angular, and hamming distance metrics. L1, L2 and Linf distance metrics are no longer supported. The distance metric determines how Marqo calculates the closeness between indexed documents and search queries.
  • Easier local runs. Simply run docker run -p 8882:8882 marqoai/marqo:2.0.0 to start Marqo locally on both ARM64 (M-series Macs) and AMD64 machines.

Breaking changes

  • Create index API no longer accept the index_defaults parameter. Attributes previously defined in this object, like textPreprocessing, are now moved out to the top level settings object. See here for details.
  • Create index API's filterStringMaxLength parameter determines the maximum length of strings that are indexed for filtering (default value 20 characters). This limitation does not apply to structured indexes. See here for details.
  • Most APIs now require camel case request bodies and return camel case responses. See create index, search and add documents for a few examples.
  • New Marqo configuration parameters See here for usage.
  • Search response _highlights attribute is now a list of dictionaries. See here for new usage.
  • Add documents multimodal fields are defined as normal fields and not dictionaries. Furthermore, the mappings object is optional for structured indexes. See here for usage.
  • Add documents does not accept the refresh parameter anymore.
  • The following features are available in Marqo 1.5, but are not supported by Marqo 2.0 and will be added in future releases:
    • Separate models for search and add documents
    • Prefixes for text chunks and queries
    • Configurable document count limit for add documents. There is a non-configurable limit of 128 in Marqo 2.0.
    • Custom (externally generated) vectors and no_model option for index creation.
    • Optional Search API q parameter when searching with context vectors.

Contributor shout-outs

  • Thank you to the community for your invaluable feedback, which drove the prioritisation for this major release.
  • A warm thank you to all our 3.9k stargazers.

Release 1.5.1

15 Dec 03:10
a7200df
Compare
Choose a tag to compare

1.5.1

Bug fixes and minor changes

  • Adding no_model to MARQO_MODELS_TO_PRELOAD no longer causes an error on startup. Preloading process is simply skipped for this model #657.

Release 1.5.0

04 Dec 07:23
702b668
Compare
Choose a tag to compare

1.5.0

New Features

  • Separate model for search and add documents (#633). Using the search_model and search_model_properties key in index_defaults allows you to specify a model specifically to be used for searching. This is useful for using a different model for search than what is used for add_documents. Learn how to use search_model here.
  • Prefixes for text chunks and queries enabled to improve retrieval for specific models (#643). These prefixes are defined at the model_properties level, but can be overriden at index creation, add documents, or search time. Learn how to use prefixes for add_documents here and search here.

Bug fixes and minor changes

Contributor shout-outs

  • A huge thank you to all our 3.7k stargazers!
  • Thanks everyone for continuing to participate in our forum! Keep all your insights, questions, and feedback coming!

Release 1.4.0

28 Oct 00:00
e15470b
Compare
Choose a tag to compare

1.4.0

Breaking Changes

  • Configurable document count limit for add_documents() calls (#592). This mitigates Marqo getting overloaded
    due to add_documents requests with a very high number of documents. If you are adding documents in batches larger than the default (64), you will now
    receive an error. You can ensure your add_documents request complies to this limit by setting the Python client’s client_batch_size or changing this
    limit via the MARQO_MAX_ADD_DOCS_COUNT variable. Read more on configuring the doc count limit here.
  • Default refresh value for add_documents() and delete_documents() set to false (#601). This prevents
    unnecessary refreshes, which can negatively impact search and add_documents performance, especially for applications that are
    constantly adding or deleting documents. If you search or get documents immediately after adding or deleting documents, you may still get some extra
    or missing documents. To see results of these operations more immediately, simply set the refresh parameter to true. Read more on this parameter
    here.

New Features

  • Custom vector field type added (#610). You can now add externally generated vectors to Marqo documents! See
    usage here.
  • no_model option added for index creation (#617). This allows for indexes that do no vectorisation, providing
    easy use of custom vectors with no risk of accidentally mixing them up with Marqo-generated vectors. See usage here.
  • The search endpoint's q parameter is now optional if context vectors are provided. (#617). This is
    particularly useful when using context vectors to search across your documents that have custom vector fields. See usage here.
  • Configurable retries added to backend requests (#623). This makes add_documents() and search() requests
    more resilient to transient network errors. Use with caution, as retries in Marqo will change the consistency guarantees for these endpoints. For more
    control over retry error handling, you can leave retry attempts at the default value (0) and implement your own backend communication error handling.
    See retry configuration instructions and how it impacts these endpoints' behaviour here.
  • More informative delete_documents() response (#619). The response object now includes a list of document
    ids, status codes, and results (success or reason for failure). See delete documents usage here.
  • Friendlier startup experience (#600). Startup output has been condensed, with unhelpful log messages removed.
    More detailed logs can be accessed by setting MARQO_LOG_LEVEL to debug.

Bug fixes and minor changes

  • Updated README: added Haystack integration, tips, and fixed links (#593, #602, #616).
  • Stabilized test suite by adding score modifiers search tests (​​#596) and migrating test images to S3 (#594).
  • bulk added as an illegal index name (#598). This prevents conflicts with the /bulk endpoint.
  • Unnecessary reputation field removed from backend call (#609).
  • Fixed typo in error message (#615).

Contributor shout-outs

  • A huge thank you to all our 3.7k stargazers!
  • Shoutout to @TuanaCelik for helping out with the Haystack integration!
  • Thanks everyone for keeping our forum busy. Don't hesitate to keep posting your insights, questions, and feedback!

Release 1.3.0

04 Sep 05:33
d5a4008
Compare
Choose a tag to compare

1.3.0

New features

  • New E5 models added to model registry (#568). E5 V2 and Multilingual E5 models are now available for use. The new E5 V2 models outperform their E5 counterparts in the BEIR benchmark, as seen here. See all available models here.
  • Dockerfile optimisation (#569). A pre-built Marqo base image results in reduced image layers and increased build speed, meaning neater docker pulls and an overall better development experience.

Bug fixes and minor changes

  • Major README overhaul (#573). The README has been revamped with up-to-date examples and easier to follow instructions.
  • New security policy (#574).
  • Improved testing pipeline (#582 & #586). Tests now trigger on pull request updates. This results in safer and easier merges to mainline.
  • Updated requirements files. Now the requirements.dev.txt should be used to install requirements for development environments (#569). Version pins for protobuf & onnx have been removed while a version pin for anyio has been added (#581, & #589).
  • General readability improvements (#577, #578, #587, & #580)

Contributor shout-outs

  • A huge thank you to all our 3.5k stargazers!
  • Shoutout to @vladdoster for all the useful spelling and grammar edits!
  • Thanks everyone for keeping our forum bustling. Don't hesitate to keep posting your insights, questions, and feedback!

Release 1.2.0

14 Aug 07:53
1bf9977
Compare
Choose a tag to compare

1.2.0

New features

  • Storage status in health check endpoint (#555 & #559). The GET /indexes/{index-name}/health endpoint's backend object will now return the boolean storage_is_available, to indicate if there is remaining storage space. If space is not available, health status will now return yellow. See here for detailed usage.

  • Score Modifiers search optimization (#566). This optimization reduces latency for searches with the score_modifiers parameter when field names or weights are changed. See here for detailed usage.

Bug fixes and minor changes

  • Improved error message for full storage (#555 & #559). When storage is full, Marqo will return 400 Bad Request instead of 429 Too Many Requests.
  • Searching with a zero vector now returns an empty list instead of an internal error (#562).

Contributor shout-outs

  • A huge thank you to all our 3.3k stargazers!
  • Thank you for all the continued discussion in our forum. Keep all the insights, questions, and feedback coming!