This a interesting article!<p>How do you build the prefixes when multiple words share the same prefix?<p>If my understanding is correct, the method is:<p>1. Find common search terms<p>2. For each search term (eg test, compute it's vector [1.23, 4.56...] and it's prefixes [t, te, tes...])<p>3. Store these in Qdrant as t->[1.23, 4.56...] , te->[1.23, 4.56...] , tes->[1.23, 4.56...] and so on. Here, each of the prefixes are used as point_ids<p>4. When a search query comes in, call /recommend and pass in the partial query as the point id
Made possible with Rust and a few optimization tricks.<p>- Qdrant as a vector search engine<p>- ONNX inference in Rust<p>- Embeddings cache & lookup<p>- Parallel & Batch requests<p>- Hybrid search with full-text filtering + vector re-scoring<p>Code repo <a href="https://github.com/qdrant/page-search">https://github.com/qdrant/page-search</a>