Skip to content

Releases: lancedb/lance

v0.3.12 Upgrade arrow-rs and bug fixes

08 Mar 22:53
70560f6
Compare
Choose a tag to compare
  • Upgraded arrow-rs dependency to 33.0 (Waiting on datafusion for 34.0 upgrade).
  • Nested Dictionary fields are now parsed and written correctly.
  • More progress towards OPQ implementation.

What's Changed

Full Changelog: v0.3.11...v0.3.12

v0.3.11 Bug fix release

07 Mar 05:59
Compare
Choose a tag to compare

Bug fix for reading variable length list arrays (welcome @gsilvestrin).

We're working on windows support (welcome to @dnsco) and OPQ implementation for vector index, so stay tuned!

What's Changed

New Contributors

Full Changelog: v0.3.10...v0.3.11

v0.3.10 Easier debugging for vector index

01 Mar 05:35
Compare
Choose a tag to compare

You can now choose to bypass the ANN index even if it was available and perform vector search using brute-force. This helps with debugging ANN results. Note that SIMD is still applicable during brute-force search.

What's Changed

  • [Bug] Fix passing metric type during PQ index building by @eddyxu in #644
  • [python] Allow user to bypass ANN index and search using brute-force … by @changhiskhan in #645
  • expand tilde paths in python by @ananis25 in #621
  • Fix binary encoder handling array buffer slicing by @eddyxu in #649

Full Changelog: v0.3.9...v0.3.10

v0.3.9 limited python support for predicate pushdown

25 Feb 07:31
Compare
Choose a tag to compare

By default pyarrow compute Expressions doesn't serialize to sql strings. This patch release enables a limited set of filter pushdowns via python. Supported syntax:

  1. field references
  2. Operators: > < >= <= = == !=
  3. conjunctions / disjunctions

This enables querying via duckdb without needing to load the whole dataset into memory first.

e.g., duckdb.query("SELECT * FROM dataset WHERE id=5")

What's Changed

  • [Rust] Handle double equals in filter by @eddyxu in #639

Full Changelog: v0.3.8...v0.3.9

v0.3.8 Improved random access for non-numeric columns and duckdb extension

24 Feb 05:06
Compare
Choose a tag to compare

You can now query lance datasets outside of python using duckdb! Thanks to @dacort for making the lance extension play nice with duckdb. dbt-duckdb-lance anyone? You can find the extension under integration/duckdb_lance.

We're also very excited to release a very substantial performance optimization for random access for non-numeric columns.
Previously, if you wanted to fetch a string or blob column along with nearest neighbor search results, the non-optimized binary decoder take could add up to 5-20x latency overhead, depending on the sparsity of the indices. In this release we've optimized the take performance so this is basically a free operation.

While most of the work in Rust is completed for filter pushdown, we've had to delay the general release for this feature until we're able to overcome some rough edges making pyarrow compute Expressions play nice with datafusion and sqlparser-rs. It'll be worth the wait though we promise!

Cosine similarity is shipped but the recall performance is lower, due to some issues during index creation. We recommend that you stick with the default L2 distance metric until we address this in the coming few releases.

We'd love to hear from you!

What's Changed

New Contributors

Full Changelog: v0.3.7...v0.3.8

v0.3.7 Duration and Null support

18 Feb 07:16
Compare
Choose a tag to compare

Thanks @ananis25 for implementing Lance support for Duration and Null arrow arrays!

We've also completed the core implementation of cosine distance (with SIMD) and refactored the distance functions to be pluggable. Next release will expose this as a public API in Rust and Python

What's Changed

Full Changelog: v0.3.6...v0.3.7

v0.3.6 Time travel

16 Feb 07:23
Compare
Choose a tag to compare

Welcome to @ananis25 and @yah01 !

This release enables time travel capability allowing you to check out the latest version as of a certain date and time.
We've refactored the query and index creation code to make room for multiple distance metrics.

What's Changed

  • Refactor distance computation to allow pluggable dist function by @eddyxu in #589
  • Add an argument to checkout a dataset as of a certain timestamp by @ananis25 in #585

New Contributors

Full Changelog: v0.3.5...v0.3.6

v0.3.5 Fast take and Decimal{128, 256} support

15 Feb 07:21
Compare
Choose a tag to compare

What's Changed

Full Changelog: v0.3.4...v0.3.5

v0.3.4 Bug fixes and ergonomics

14 Feb 06:46
Compare
Choose a tag to compare

This is a minor release with bug fixes, documentation and ergonomic improvements for vectors indices.
Welcome our newest contributor @yah01

What's Changed

New Contributors

Preview

  1. We're most of the way there for a DuckDB extension to read Lance datasets natively (i.e., without python)
  2. We're integrating datafusion to enable pushdown of filter predicates

Full Changelog: v0.3.2...v0.3.4

v0.3.2 Speed up index creation by more than 60x

10 Feb 21:13
c91dd45
Compare
Choose a tag to compare

We discovered two thing making index creation unnecessarily long:

  1. Instead of using KMeans++ to initialize, just do random initialization
  2. Turn of BLAS on macOS because it turned out to be super slow

On macbook air, index creation goes from 25min on sift1m to 24s.
On Ubuntu, it's roughly a 6x speedup.

What's Changed

New Contributors

Full Changelog: v0.3.1...v0.3.2