Open cincuranet opened 6 hours ago
@cincuranet, thanks for reporting this. collection.delete()
does not return any response as such:
However looking at the server API and the segment API I can tell that we return the IDs that were originally passed, which is wrong:
All in all this is an inconsistent behavior that indeed does feel misleading (not that using the Chroma python/JS clients will expose you this inconsistency).
Given the current implementation in single-node Chroma this can be challenging to fix due to the how the WAL works. But let me have a look if something simple solution can be found.
Great job on the C# standalone client by the way 💯
Agree this is misleading, the easiest correct + uniform solution would be to make all APIs return None
thanks for reporting this. collection.delete() does not return any response as such:
@tazarov The JS SDK returns A promise that resolves to the IDs of the deleted items. though.
@cincuranet, maybe I spoke before I checked :). Indeed as @HammadB, suggested to simplest will be to return None on delete (an possibly other similar ops that may have incongruent behavior across APIs).
Sure, that works. update
operation returns void
/None
as well. Once you make a decision report here and I'll follow with C# implementation.
What happened?
Pseudo code:
Add(ids: [id1])
Delete(ids: [id1, id2])
(nowhere
, nowhere_document
)In Chroma's log I see
Delete of nonexisting embedding ID: ...
. But the response contains bothid1
andid2
.Found in https://github.com/ssone95/ChromaDB.Client/pull/31.
cc @atroyn
Versions
0.5.5
Relevant log output