Releases: marqo-ai/marqo
Releases · marqo-ai/marqo
Release 2.5.1
Release 2.5.0
2.5.0
New features
- New ‘embed’ endpoint (
POST /indexes/{index_name}/embed
) (#803). Marqo can now perform inference and return the embeddings for a single piece or list of content, where content can be either a string or weighted dictionary of strings. See usage here. - New ‘recommend’ endpoint (
POST /indexes/{index_name}/recommend
) (#816). Given a list of existing document IDs, Marqo can now recommend similar documents by performing a search on interpolated vectors from the documents. See usage here. - Add Inference Cache to speed up frequent search and embed requests (#802). Marqo now caches embeddings generated during inference. The cache size and type can be configured with
MARQO_INFERENCE_CACHE_SIZE
andMARQO_INFERENCE_CACHE_TYPE
. See configuration instructions here. - Add configurable search timeout (#813). Backend timeout now defaults to 1s, but can be configured with the environment variable
VESPA_SEARCH_TIMEOUT_MS
. See configuration instructions here. - More informative
get_cuda_info
response (#811). New keys:utilization
memory_used_percent
have been added for easier tracking of cuda device status. See here for more information.
Bug fixes and minor changes
- Upgraded
open_clip_torch
,timm
, andsafetensors
for access to new models (#810)
Contributor shout-outs
- Shoutout to all our 4.1k stargazers! Thanks for continuing to use our product and helping Marqo grow.
- Keep on sharing your questions and feedback on our forum and Slack channel! If you have any more inquiries or thoughts, please don’t hesitate to reach out.
Release 2.4.3
2.4.3
Bug fixes and minor changes
- Fix incorrect Marqo version number (#805). Version number updated from 2.4.1 to 2.4.3
2.4.2
Bug fixes and minor changes
- Better response for truncated images in
add_documents
(#797). Truncated images no longer cause a 500 error. The individual document will fail and return a 400 error in add docs response (full response will be a 200).
2.4.1
Bug fixes and minor changes
- Improve telemetry memory management (#800).
Release 2.2.2
Release 2.4.0
2.4.0
New features
-
Add
IN
operator to the query filter string DSL (#790, #793, & #795).
For structured indexes, you can now use theIN
keyword to restrict text and integer fields to be within a list of values. See usage here. -
Add
no_model
option for index creation (#789). 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. -
Optional
q
parameter for the search endpoint if context vectors are provided. (#789).
This is particularly useful when using context vectors to search across your documents that have custom vector fields. See usage here.
Bug fixes and minor changes
- Improve error message for defining
tensorFields
when adding documents to a structured index (#788).
Contributor shout-outs
- A huge thank you to all our 4.1k stargazers! We appreciate all of you continuing to use our product and helping Marqo grow.
- Thanks for sharing your questions and feedback on our forum and
Slack channel!
If you have any more inquiries or thoughts, please don’t hesitate to reach out.
Release 2.3.0
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
Release 2.2.0
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>
andarray<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
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 forMARQO_MAX_RETRIEVABLE_DOCS
configuration is now 10,000 (#735, #737). See searchlimit
andoffset
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). Usingdependent_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
Release 2.0.0
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 optionalefSearch
parameter which allows you to fine-tune the underlying HNSW search. IncreaseefSearch
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 bestefSearch
for your dataset. See here for usage. - New approximate nearest neighbour space types. Marqo now supports
euclidean
,angular
,dotproduct
,prenormalized-angular
, andhamming
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, liketextPreprocessing
, 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.