{"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/distill-vq-learning-retrieval-oriented-vector","title":"Distill-VQ: Learning Retrieval Oriented Vector Quantization By Distilling Knowledge from Dense Embeddings","arxiv_id":"2204.00185","date":"2022-04-01","proceeding":null,"authors":["Shitao Xiao","Zheng Liu","Weihao Han","Jianjin Zhang","Defu Lian","Yeyun Gong","Qi Chen","Fan Yang","Hao Sun","Yingxia Shao","Denvy Deng","Qi Zhang","Xing Xie"],"abstract":"Vector quantization (VQ) based ANN indexes, such as Inverted File System (IVF) and Product Quantization (PQ), have been widely applied to embedding based document retrieval thanks to the competitive time and memory efficiency. Originally, VQ is learned to minimize the reconstruction loss, i.e., the distortions between the original dense embeddings and the reconstructed embeddings after quantization. Unfortunately, such an objective is inconsistent with the goal of selecting ground-truth documents for the input query, which may cause severe loss of retrieval quality. Recent works identify such a defect, and propose to minimize the retrieval loss through contrastive learning. However, these methods intensively rely on queries with ground-truth documents, whose performance is limited by the insufficiency of labeled data. In this paper, we propose Distill-VQ, which unifies the learning of IVF and PQ within a knowledge distillation framework. In Distill-VQ, the dense embeddings are leveraged as \"teachers\", which predict the query's relevance to the sampled documents. The VQ modules are treated as the \"students\", which are learned to reproduce the predicted relevance, such that the reconstructed embeddings may fully preserve the retrieval result of the dense embeddings. By doing so, Distill-VQ is able to derive substantial training signals from the massive unlabeled data, which significantly contributes to the retrieval quality. We perform comprehensive explorations for the optimal conduct of knowledge distillation, which may provide useful insights for the learning of VQ based ANN index. We also experimentally show that the labeled data is no longer a necessity for high-quality vector quantization, which indicates Distill-VQ's strong applicability in practice.","url_abs":"https://arxiv.org/abs/2204.00185v2","url_pdf":"https://arxiv.org/pdf/2204.00185v2.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":"distill-vq-learning-retrieval-oriented-vector","repo_url":"https://github.com/staoxiao/libvq","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok","spdx":"MIT"}},{"paper_slug":"distill-vq-learning-retrieval-oriented-vector","repo_url":"https://github.com/microsoft/ar2","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":null}],"tasks":[{"task_slug":"contrastive-learning","task_name":"Contrastive Learning"},{"task_slug":"knowledge-distillation","task_name":"Knowledge Distillation"},{"task_slug":"quantization","task_name":"Quantization"},{"task_slug":"retrieval","task_name":"Retrieval"}],"methods":[{"method_slug":"knowledge-distillation","method_name":"Knowledge Distillation"}],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"syntology_url":null,"atlas_url":"https://app.syntology.ai/?focus=2204.00185","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2204.00185"}},"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/microsoft/ar2","reach":null},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/staoxiao/libvq","reach":{"status":"ok","spdx":"MIT"}}],"summary":{"ran":1,"unverified":7},"by_repo_kind":{"official":{"samples":8,"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":"7cbdad4c2ba7d4ec","entry":"is_main_process","repo":"staoxiao/libvq","repo_kind":"official","path":"LibVQ/utils.py","file_url":"https://github.com/staoxiao/libvq/blob/HEAD/LibVQ/utils.py","link_basis":"harvester_set","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"7cbdad4c2ba7d4ec"}},{"code_sha256_prefix":"e53871dceb16e43e","entry":"count_line","repo":"staoxiao/libvq","repo_kind":"official","path":"LibVQ/dataset/preprocess.py","file_url":"https://github.com/staoxiao/libvq/blob/HEAD/LibVQ/dataset/preprocess.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":"e53871dceb16e43e"}},{"code_sha256_prefix":"2a264328a209d80b","entry":"dist_gather_tensor","repo":"staoxiao/libvq","repo_kind":"official","path":"LibVQ/utils.py","file_url":"https://github.com/staoxiao/libvq/blob/HEAD/LibVQ/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":"2a264328a209d80b"}},{"code_sha256_prefix":"1e846bd1884ce044","entry":"evaluate","repo":"staoxiao/libvq","repo_kind":"official","path":"LibVQ/utils.py","file_url":"https://github.com/staoxiao/libvq/blob/HEAD/LibVQ/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":"1e846bd1884ce044"}},{"code_sha256_prefix":"23d489f2a1942e31","entry":"job","repo":"staoxiao/libvq","repo_kind":"official","path":"LibVQ/dataset/preprocess.py","file_url":"https://github.com/staoxiao/libvq/blob/HEAD/LibVQ/dataset/preprocess.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":"23d489f2a1942e31"}},{"code_sha256_prefix":"4b5e5cff80872752","entry":"load_rel","repo":"staoxiao/libvq","repo_kind":"official","path":"LibVQ/dataset/dataset.py","file_url":"https://github.com/staoxiao/libvq/blob/HEAD/LibVQ/dataset/dataset.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":"4b5e5cff80872752"}},{"code_sha256_prefix":"66edc0d3e601ef5f","entry":"tensorize_batch","repo":"staoxiao/libvq","repo_kind":"official","path":"LibVQ/dataset/dataset.py","file_url":"https://github.com/staoxiao/libvq/blob/HEAD/LibVQ/dataset/dataset.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":"66edc0d3e601ef5f"}},{"code_sha256_prefix":"637f46b59be670f3","entry":"tokenize_data","repo":"staoxiao/libvq","repo_kind":"official","path":"LibVQ/dataset/preprocess.py","file_url":"https://github.com/staoxiao/libvq/blob/HEAD/LibVQ/dataset/preprocess.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":"637f46b59be670f3"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}