Spice v1.8.2 (Oct 21, 2025)
Announcing the release of Spice v1.8.2! ๐
Spice v1.8.2 is a patch release focused on reliability, validation, performance, and bug fixes, with improvements across DuckDB acceleration, S3 Vectors, document tables, and HTTP search.
What's New in v1.8.2โ
Support Table Relations in /v1/search
HTTP Endpointโ
Spice now supports table relations for the additional_columns
and where
parameters in the /v1/search
endpoint. This enables improved search for multi-dataset use cases, where filters and columns can be used on specific datasets.
Example:
curl 'http://localhost:8090/v1/search' \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' -d '{
"text": "hello world",
"additional_columns": ["tbl1.foo", "tbl2.bar", "baz"],
"where": "tbl1.foo > 100000",
"limit": 5
}'
In this example, search results from the tbl1
dataset will include columns foo
and baz
, where foo > 100000
. For tbl2
, columns bar
and baz
will be returned.
DuckDB Data Accelerator Table Partitioning & Indexingโ
- Configurable DuckDB Index Scan: DuckDB acceleration now supports configurable
duckdb_index_scan_percentage
andduckdb_index_scan_max_count
parameters, supporting fine-tuning of index scan behavior for improved query performance.
Example:
datasets:
- from: postgres:my_table
name: my_table
acceleration:
enabled: true
engine: duckdb
mode: file
params:
# When combined, DuckDB will use an index scan when the number of qualifying rows is less than the maximum of these two thresholds
duckdb_index_scan_percentage: '0.10' # 10% as decimal
duckdb_index_scan_max_count: '1000'
-
Hive-Style Partitioning: In file-partitioned mode, the DuckDB data accelerator uses Hive-style partitioning for more efficient file management.
-
Table-Based Partitioning: Spice now supports partitioning DuckDB accelerations within a single file. This approach maintains ACID guarantees for full and append mode refreshes, while optimizing resource usage and improving query performance. Configure via the
partition_mode
parameter:
datasets:
- from: file:test_data.parquet
name: test_data
params:
file_format: parquet
acceleration:
enabled: true
engine: duckdb
mode: file
params:
partition_mode: tables
partition_by:
- bucket(100, Field1)
S3 Vectors Reliabilityโ
- Race Condition Fix: Resolved a race condition in S3 Vectors index and bucket creation. The runtime also now checks if an index or bucket exists after a
ConflictException
, ensuring robust error handling during index creation and improving reliability for large-scale multi-index vector search.
Document Table Improvementsโ
- Primary Key Update: Document tables now use the
location
column as the primary key, improving performance, consistency, and query reliability.
Additional Improvements & Bugfixesโ
- Reliability: Improved error handling and resource checks for S3 Vectors and DuckDB acceleration.
- Validation: Expanded validation for partitioning and index creation.
- Performance: Optimized partition refresh and index scan logic.
- Bugfix: Don't nullify DuckDB release callbacks for schemas.
Contributorsโ
Breaking Changesโ
No breaking changes.
Cookbook Updatesโ
No major cookbook updates.
The Spice Cookbook includes 81 recipes to help you get started with Spice quickly and easily.
Upgradingโ
To upgrade to v1.8.2, use one of the following methods:
CLI:
spice upgrade
Homebrew:
brew upgrade spiceai/spiceai/spice
Docker:
Pull the spiceai/spiceai:1.8.2
image:
docker pull spiceai/spiceai:1.8.2
For available tags, see DockerHub.
Helm:
helm repo update
helm upgrade spiceai spiceai/spiceai
AWS Marketplace:
๐ Spice is now available in the AWS Marketplace!
What's Changedโ
Changelogโ
- Update mongo config for benchmarks by @krinart in #7546
- Configurable DuckDB duckdb_index_scan_percentage & duckdb_index_scan_max_count by @lukekim in #7551
- Fix race condition in S3 Vectors index and bucket creation by @kczimm in #7577
- Use 'location' as primary key for document tables by @Jeadie in #7567
- Update official Docker builds to use release binaries by @phillipleblanc in #7597
- Hive-style partitioning for DuckDB file mode by @kczimm in #7563
- New Generate Changelog workflow by @krinart in #7562
- Add support for DuckDB table-based partitioning by @sgrebnov in #7581
- DuckDB table partitioning: delete partitions that no longer exist after full refresh by @sgrebnov in #7614
- Rename
duckdb_partition_mode
topartition_mode
param by @sgrebnov in #7622 - Fix license issue in table-providers by @phillipleblanc in #7620
- Make DuckDB table partition data write threshold configurable by @sgrebnov in #7626
- fix: Don't nullify DuckDB release callbacks for schemas by @peasee in #7628
- Fix integration tests by reverting the use of batch inserts w/ prepared statements by @phillipleblanc in #7630
- Return TableProvider from CandidateGeneration::search by @Jeadie in #7559
- Handle table relations in HTTP v1/search by @Jeadie in #7615