Closed alexminza closed 1 year ago
As I can see from the SQLite3 documentation:
SQLite does not have a separate Boolean storage class. Instead, Boolean values are stored as integers 0 (false) and 1 (true).
https://www.sqlite.org/datatype3.html#boolean_datatype
Chroma is moving away from DuckDB to SQLite:
https://github.com/chroma-core/chroma/issues/400
Migrate duckdb to sqllite
https://docs.trychroma.com/migration#migration-from-040-to-040---july-17-2023
New data layout This version of Chroma drops duckdb and clickhouse in favor of sqlite for metadata storage. This means migrating data over. We have created a migration CLI utility to do this.
@dmytrostruk it seems that you are the expert on this subject :)
Chroma memory store - C# implementation (#1634) https://github.com/microsoft/semantic-kernel/commit/85d420f77c5c8a59eb39deaf78aaff2aaf3b2337
@alexminza Thanks for creating this issue! I will take a look and create a PR to resolve it.
same issue here, is there any workaround before we got a fix ?
same issue here, is there any workaround before we got a fix ?
@nathansolidatus I assume, if that worked previously, maybe it worth to try previous versions of Chroma. Meanwhile, I'm going to create PR today and we will release a fix in coming days.
Issue seems to have appeared since Chroma 4.0.0 which set SQLite as the default database engine.
@alexminza Thank you for catching this! PR is opened: https://github.com/microsoft/semantic-kernel/pull/2072
Describe the bug Boolean
is_reference
field is saved as number in Chroma with default SQLite implementation. Subsequent reads fail with exception duringMemoryRecordMetadata
deserialization.To Reproduce Steps to reproduce the behavior: Running this example https://github.com/microsoft/semantic-kernel/blob/main/samples/notebooks/dotnet/09-memory-with-chroma.ipynb fails on the
SearchAsync
step with exception deserializingis_reference
number as boolean:Reading the records stored in the Chroma database:
Platform