Release Notes
v1.3.0 (2024-07-13)
New Features
- Added ad-hoc custom stopwords support for the full-text search query.
- The full-text search query now supports ad-hoc custom stopwords that are not defined in the analyzer configuration.
- The custom stopwords can be specified in the query using the
custom_stop_wordsattribute in the$searchoperator.
- Added ad-hoc custom synonyms support for the full-text search query.
- The full-text search query now supports ad-hoc custom synonyms that are not defined in the analyzer configuration.
- The custom synonyms can be specified in the query using the
custom_synonymsattribute in the$searchoperator.
- Added system metrics APIs.
- It is designed to provide information about the system resources, such as CPU, memory, disk, and network usage in the future. However, the current implementation only provides the version information.
- Added
exportcommand to the CLI.- The
exportcommand allows users to export the data from the database collection to a file in JSON Lines format.
- The
- Added array of vectors support for the dense vector index.
- The dense vector index now supports an array of vectors as the field value. The embedding models usually work with short text, so the array of vectors can be used to store multiple embeddings for a single document. Without this feature, users had to store each embedding in a separate document, which was inefficient. Note that this feature is experimental and may change in the future.
Performance Improvements
- Improved the performance of the full-text search index that contains dense vector fields.
Behavior Changes
- No changes.
Bug Fixes
- Bug fixes for query execution
- Fixed an issue where the
$joinoperator withleftorrighttype was not working correctly when the join key was duplicated in the right-side collection. In this case, some documents were missing in the result. - Fixed an error where the
$limitoperator with a negative value was not working correctly. In this case, the query should return all documents, but it was returning an empty result.
- Fixed an issue where the
- Bug fixes for full-text search
- Fixed an issue where the highlighter was not working correctly in some cases when the query contained multiple terms.
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
KeywordAnalyzerto support the array-typed fields. It will tokenize the array elements as separate tokens. - Updated
DenseVectorAnalyzerto 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 asfield1:(term1 AND term2) field2:(term1 AND term2).
- Added support for out-of-order proximity search.
"term1 term2"~~5will match documents whereterm1andterm2are within 5 words of each other, regardless of the order.
- Added support for multi-field term in the full-text search query.
- Updated
$projectoperator to support unnesting objects and arrays.^prefix can be used to unnest an object or array.$project: ["^field1.field2", "field3"]will unnestfield1.field2and keepfield3as 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.timeoutoption has been changed from5,000to10,000, which means the search query will be timed out after10 secondsby default. - The value of the
$limitoperator can be set to-1to 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 is10,000,000, and other indexes have no limit as long as the system resources are sufficient. - The
$recursive_unnestoperator applied on_highlightsfield that generated by$search.highlightoption will unnest_scorefield 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
$projectoperator was not working correctly with the nested fields. - Fixed a bug where the
$sortoperator was not working correctly with floating point numbers. - Fixed a bug where the
$skipand$limitoperators were not working correctly with multi-staged pipeline queries.
- Fixed a bug where the
v1.0.0 (2024-04-11)
This is a first stable release of Cognica 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