Release Notes

Release Notes

v1.2.0 (2024-06-01)

New Features

  • Improved the HNSW-IVF index to use the underlying key-value storage directly, instead of loading the index data into memory.
    • This change allows the HNSW-IVF index to handle larger indexes with a smaller memory footprint.
  • Improved the index creation process to be resumable.
    • If the index creation process is interrupted, it can be resumed from the last checkpoint.

Performance Improvements

  • Reduced the memory usage of the block cache by evicting the cached blocks more aggressively.
  • Improved the performance of the full-text search by implementing query cache.
  • Improved the performance of the text analysis pipelines by optimizing the tokenization process.
  • Improved the performance of the index creation by optimizing the data loading process.

Behavior Changes

  • Updated KeywordAnalyzer to support the array-typed fields. It will tokenize the array elements as separate tokens.
  • Updated DenseVectorAnalyzer to support the null-valued fields. The null-valued fields will not be indexed in the HNSW index.
  • Added the validation process of the index type when creating an index.

Bug Fixes

  • Bug fixes for Full-Text Search
    • Fixed a bug where the query parser was not working correctly with the non-ASCII field names in the full-text search query.
    • Fixed a bug where the query planner was incorrectly optimizing the full-text search query in some cases.
  • Bug fixes for storage engine
    • Fixed a rare crash in the compaction filter during the shutdown process.

v1.1.0 (2024-05-01)

New Features

  • Improvements for Full-Text Search
    • Added support for multi-field term in the full-text search query.
      • {!fields=[field1, field2]}:(term1 AND term2) will be parsed as field1:(term1 AND term2) field2:(term1 AND term2).
    • Added support for out-of-order proximity search.
      • "term1 term2"~~5 will match documents where term1 and term2 are within 5 words of each other, regardless of the order.
  • Updated $project operator to support unnesting objects and arrays.
    • ^ prefix can be used to unnest an object or array.
      • $project: ["^field1.field2", "field3"] will unnest field1.field2 and keep field3 as is.
  • The query parser now supports the did you mean? feature.
    • If the query parser cannot recognize the operator in the query, it will suggest the similar operator.

Performance Improvements

  • Improved the indexing performance of the full-text search index by relaxing the concurrency control during the indexing process.

Behavior Changes

  • The default value of the $search.timeout option has been changed from 5,000 to 10,000, which means the search query will be timed out after 10 seconds by default.
  • The value of the $limit operator can be set to -1 to increase the limit to the maximum number of documents that can be returned in a single query. The maximum number of documents that can be returned in a single query varies depending on the index configuration, query complexity, and system resources. For instance, if the index is configured as full-text search, the maximum number of documents that can be returned in a single query is 10,000,000, and other indexes have no limit as long as the system resources are sufficient.
  • The $recursive_unnest operator applied on _highlights field that generated by $search.highlight option will unnest _score field as well.

Bug Fixes

  • Bug fixes for Full-Text Search
    • Fixed a bug where the highlighter was not working correctly with the array typed fields.
  • Bug fixes for DocumentDB
    • Fixed a bug where the $project operator was not working correctly with the nested fields.
    • Fixed a bug where the $sort operator was not working correctly with floating point numbers.
    • Fixed a bug where the $skip and $limit operators were not working correctly with multi-staged pipeline queries.

v1.0.0 (2024-04-11)

This is a first stable release of Aeca Server. It provides the following features:

  • Key-Value Database
    • Basic CRUD operations
    • Transactions
    • Key-level Time-to-Live (TTL) support
  • Document-oriented Database
    • Basic CRUD operations
    • Transactions
    • Secondary indexes
      • Unique and non-unique indexes
      • Clustered and non-clustered indexes
      • Partial indexes
      • Full-featured text search indexes
      • Dense vector similarity search indexes
      • Index-level Time-to-Live (TTL) support
    • Python scripting support in the query layer
  • Language model serving
    • Deployment of custom Torch-based language models