vector-store: Split VsIndex stream into VsIndexModify and VsIndexSearch - #542
Conversation
|
Changelog for bc4526b
range diff |
890343b to
bc4526b
Compare
Akvear
left a comment
There was a problem hiding this comment.
If this doesn't actually starve VsIndexModify then it looks OK.
|
Changelog for 35b11c6
range diff |
bc4526b to
35b11c6
Compare
|
Changelog for 9dabb04
range diff |
35b11c6 to
9dabb04
Compare
Any benchmarks on that? |
benchmarks showed in: VECTOR-780 |
Thanks! However, it's quite poorly explained on the graph. |
Yes, that's correct :-) |
QuerthDP
left a comment
There was a problem hiding this comment.
Looks promising but please take a look at a potential bug I described.
I think this is relevant and leads to a real panics even on production.
|
Changelog for bf081a9
range diff |
9dabb04 to
bf081a9
Compare
This commit solves an issue with high search latency during massive vector deletion from table. It divides VsIndex message stream into two: VsIndexModify and VsIndexSearch. It gives priority to the VsIndexSearch. The selection for ready messages is biased on VsIndexSearch. Tokio runtime uses a fair scheduler and from experience it is visible that providing new search requests is working in waves: first buffered then fully consumed. So we shouldn't starve VsIndexModify stream.
…earch When we prioritize search over modify we need to wait a bit longer for remove and insert to take place in usearch. This fix checks the size of the usearch index after modification and before searching it. The commit refactors waiting for specified index size.
|
Changelog for ce4a828
range diff |
bf081a9 to
ce4a828
Compare
… receiver Index actors receivers could drop in case of db index drop. Therefore, monitor_items actor should take care of such errors with communication to the downstream actor and should stop task as it is an indicator that index is dropped. This commit changes panic in actor communication into returning error and refactor monitor_items actor to stop working in such scenario.
|
Changelog for 9e984b4
range diff |
ce4a828 to
9e984b4
Compare
This PR solves an issue with high search latency during massive vector
deletion from table. It divides VsIndex message stream into two: VsIndexModify
and VsIndexSearch. It gives priority to the VsIndexSearch.
The selection for ready messages is biased on VsIndexSearch. Tokio runtime uses
a fair scheduler and from experience it is visible that providing new search
requests is working in waves: first buffered then fully consumed. So we
shouldn't starve VsIndexModify stream.
One commit fixes unit tests after change in message priorities.
Fixes: VECTOR-780