kevindrosendahl commented on issue #12615:
URL: https://github.com/apache/lucene/issues/12615#issuecomment-1806614314

   @**[benwtrent](https://github.com/benwtrent)**:
   > if I am reading the code correctly, it does the following:
   > - Write int8 quantized vectors along side the vector ordinals in the graph 
(`.vex` or whatever has a copy of each vector).
   > - Continue to write vectors in `.vec`. I am guessing this is a stop-gap 
and you are thinking of removing this? Maybe not?
   
   The implementation will write the vectors at their requested 
encoding/quantization level into the graph. So if your vectors are `float[]`s 
with no quantization, `float[]`s go into the graph. If your vectors are 
`byte[]`s or `float[]`s with quantization, `byte[]`s go into the graph. If you 
do enable quantization, it keeps the full fidelity vectors around on the side 
for good measure, otherwise it only keeps a copy in the graph.
   
   > I have a concern around index sorting. How does building the graph & 
subsequent `getFloatVectors()` play with index sorting? Usually when folks sort 
an index, they expect to be able to iterate values in that given order. Is it 
horrifically slow to iterate `.vex` in this scenario?
   >
   > What do we think about always keeping `.vec` around? Probably should for 
re-ranking purposes once more extreme quantization measures are used.
   
   Interesting re: sorting. I hadn't given that much deep thought yet. To 
level-set a little on how I'm planning on approaching this, I think it's still 
a bit of an open question what performance is theoretically possible, and what 
type of index could possibly get us there.
   
   I'm trying first to get a sense of the possibilities there, so my main focus 
first is on measuring the single segment performance in order to rule out ideas 
not worth pursuing before investing too much time in them.
   
   If a single segment index works well, I think the next step would probably 
be to make sure it would work well with concurrent query execution over 
multiple segments, and then to  start thinking about how it could be 
productionalized (sorted indexes, merges, etc).
   
   Thoughts on this approach?
   
   > One more question, have you tested your implementation in the situation 
where `.vex` cannot all be paged into memory and it faired ok?
   
   I've just got some first results for larger than memory performance, will 
post a separate comment.


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: issues-unsubscr...@lucene.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscr...@lucene.apache.org
For additional commands, e-mail: issues-h...@lucene.apache.org

Reply via email to