{"about":{"site":"https://codewithpapers.app","non_affiliation":"Code with Papers and Syntology are not affiliated with, endorsed by, or sponsored by Papers with Code, Meta, or the pwc-archive mirror.","licence":"CC BY-SA 4.0","licence_url":"https://creativecommons.org/licenses/by-sa/4.0/legalcode","attribution":"https://codewithpapers.app/attribution","modified":"archive material modified by Syntology; see the attribution page"},"url":"/paper/spreading-vectors-for-similarity-search","title":"Spreading vectors for similarity search","arxiv_id":"1806.03198","date":"2018-06-08","proceeding":"ICLR 2019 5","authors":["Alexandre Sablayrolles","Matthijs Douze","Cordelia Schmid","Hervé Jégou"],"abstract":"Discretizing multi-dimensional data distributions is a fundamental step of modern indexing methods. State-of-the-art techniques learn parameters of quantizers on training data for optimal performance, thus adapting quantizers to the data. In this work, we propose to reverse this paradigm and adapt the data to the quantizer: we train a neural net which last layer forms a fixed parameter-free quantizer, such as pre-defined points of a hyper-sphere. As a proxy objective, we design and train a neural network that favors uniformity in the spherical latent space, while preserving the neighborhood structure after the mapping. We propose a new regularizer derived from the Kozachenko--Leonenko differential entropy estimator to enforce uniformity and combine it with a locality-aware triplet loss. Experiments show that our end-to-end approach outperforms most learned quantization methods, and is competitive with the state of the art on widely adopted benchmarks. Furthermore, we show that training without the quantization step results in almost no difference in accuracy, but yields a generic catalyzer that can be applied with any subsequent quantizer.","url_abs":"https://arxiv.org/abs/1806.03198v3","url_pdf":"https://arxiv.org/pdf/1806.03198v3.pdf","source":{"archive":"pwc-archive (Hugging Face), CC BY-SA 4.0","snapshot":"2025-07-28","licence_url":"https://creativecommons.org/licenses/by-sa/4.0/legalcode","row_kind":"abstracts"},"code_links":[{"paper_slug":"spreading-vectors-for-similarity-search","repo_url":"https://github.com/facebookresearch/spreadingvectors","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":0,"framework":"pytorch","reach":{"status":"ok","spdx":"NOASSERTION"}},{"paper_slug":"spreading-vectors-for-similarity-search","repo_url":"https://github.com/lsyhprum/brewess","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok","spdx":"MIT"}}],"tasks":[{"task_slug":"quantization","task_name":"Quantization"},{"task_slug":null,"task_name":"Triplet"}],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=1806.03198","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"1806.03198"}},"developers":"https://syntology.ai/developers","read_at":"2026-09-24T18:15:14+00:00","read_at_is":"when the build read Syntology's graph, not when any sample ran","claim":"Per-sample execution status on synthesized fixtures; not a correctness claim about the paper. Samples come from repositories linked to the paper, official or community; repo_kind says which.","repos":[{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/lsyhprum/brewess","reach":{"status":"ok","spdx":"MIT"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/facebookresearch/spreadingvectors","reach":{"status":"ok","spdx":"NOASSERTION"}}],"summary":{"ran_honours":1,"unverified":14},"by_repo_kind":{"listed":{"samples":15,"ran":1,"repositories":1}},"repo_kind_vocabulary":{"official":"The archive marks this repository official for the paper","named_in_paper":"The archive records that the paper mentions this repository; it is not marked official","listed":"In the archive's code links for this paper, not marked official and not recorded as mentioned in the paper","found_in_text":"Syntology found this repository in the paper's own text; whether it is the authors' implementation is not asserted","community":"Not in the archive's code links for this paper; a community repository Syntology harvested"},"n_pointer_only_for_licence":0,"samples":[{"code_sha256_prefix":"37bf4e15693c357b","entry":"mmap_fvecs","repo":"lsyhprum/brewess","repo_kind":"listed","path":"lib/utils.py","file_url":"https://github.com/lsyhprum/brewess/blob/HEAD/lib/utils.py","link_basis":"harvester_set","language":"python","status":"ran_honours","verification_level":1,"contract_check":"HONOURS","metamorphic_tier":"well_formed","behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"37bf4e15693c357b"}},{"code_sha256_prefix":"e94561f6e0e4aa72","entry":"fetch_BIGANN1M","repo":"lsyhprum/brewess","repo_kind":"listed","path":"lib/data.py","file_url":"https://github.com/lsyhprum/brewess/blob/HEAD/lib/data.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"e94561f6e0e4aa72"}},{"code_sha256_prefix":"5d8d153339d20b81","entry":"fetch_DEEP1M","repo":"lsyhprum/brewess","repo_kind":"listed","path":"lib/data.py","file_url":"https://github.com/lsyhprum/brewess/blob/HEAD/lib/data.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"5d8d153339d20b81"}},{"code_sha256_prefix":"01336cc0613fa115","entry":"fetch_SIFT1M","repo":"lsyhprum/brewess","repo_kind":"listed","path":"lib/data.py","file_url":"https://github.com/lsyhprum/brewess/blob/HEAD/lib/data.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"01336cc0613fa115"}},{"code_sha256_prefix":"ea79a3921665cbad","entry":"get_learning_rate","repo":"lsyhprum/brewess","repo_kind":"listed","path":"lib/nn_utils.py","file_url":"https://github.com/lsyhprum/brewess/blob/HEAD/lib/nn_utils.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"ea79a3921665cbad"}},{"code_sha256_prefix":"63af884f867546da","entry":"gumbel_softmax","repo":"lsyhprum/brewess","repo_kind":"listed","path":"lib/nn_utils.py","file_url":"https://github.com/lsyhprum/brewess/blob/HEAD/lib/nn_utils.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"63af884f867546da"}},{"code_sha256_prefix":"c2856de162667599","entry":"is_parametrized","repo":"lsyhprum/brewess","repo_kind":"listed","path":"lib/parametrize.py","file_url":"https://github.com/lsyhprum/brewess/blob/HEAD/lib/parametrize.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"c2856de162667599"}},{"code_sha256_prefix":"7989213dfc5c4cc4","entry":"ivecs_read","repo":"lsyhprum/brewess","repo_kind":"listed","path":"lib/utils.py","file_url":"https://github.com/lsyhprum/brewess/blob/HEAD/lib/utils.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"7989213dfc5c4cc4"}},{"code_sha256_prefix":"1c59580df5e1f28e","entry":"mmap_bvecs","repo":"lsyhprum/brewess","repo_kind":"listed","path":"lib/utils.py","file_url":"https://github.com/lsyhprum/brewess/blob/HEAD/lib/utils.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"1c59580df5e1f28e"}},{"code_sha256_prefix":"4f8f3d6a905e5ea5","entry":"orthogonal","repo":"lsyhprum/brewess","repo_kind":"listed","path":"lib/parametrizations.py","file_url":"https://github.com/lsyhprum/brewess/blob/HEAD/lib/parametrizations.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"4f8f3d6a905e5ea5"}},{"code_sha256_prefix":"fa9468c52f38c09b","entry":"register_parametrization","repo":"lsyhprum/brewess","repo_kind":"listed","path":"lib/parametrize.py","file_url":"https://github.com/lsyhprum/brewess/blob/HEAD/lib/parametrize.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"fa9468c52f38c09b"}},{"code_sha256_prefix":"cfc6fc75cd26e60f","entry":"remove_parametrizations","repo":"lsyhprum/brewess","repo_kind":"listed","path":"lib/parametrize.py","file_url":"https://github.com/lsyhprum/brewess/blob/HEAD/lib/parametrize.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"cfc6fc75cd26e60f"}},{"code_sha256_prefix":"1a154a050293ebb3","entry":"spectral_norm","repo":"lsyhprum/brewess","repo_kind":"listed","path":"lib/parametrizations.py","file_url":"https://github.com/lsyhprum/brewess/blob/HEAD/lib/parametrizations.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"1a154a050293ebb3"}},{"code_sha256_prefix":"b26e044dc568ced8","entry":"to_one_hot","repo":"lsyhprum/brewess","repo_kind":"listed","path":"lib/nn_utils.py","file_url":"https://github.com/lsyhprum/brewess/blob/HEAD/lib/nn_utils.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"b26e044dc568ced8"}},{"code_sha256_prefix":"da917ddc816d2f25","entry":"transpose","repo":"lsyhprum/brewess","repo_kind":"listed","path":"lib/parametrizations.py","file_url":"https://github.com/lsyhprum/brewess/blob/HEAD/lib/parametrizations.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"da917ddc816d2f25"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}