{"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/fast-approximate-nearest-neighbor-search-with","title":"Fast Approximate Nearest Neighbor Search With The Navigating Spreading-out Graph","arxiv_id":"1707.00143","date":"2017-07-01","proceeding":null,"authors":["Cong Fu","Chao Xiang","Changxu Wang","Deng Cai"],"abstract":"Approximate nearest neighbor search (ANNS) is a fundamental problem in\ndatabases and data mining. A scalable ANNS algorithm should be both\nmemory-efficient and fast. Some early graph-based approaches have shown\nattractive theoretical guarantees on search time complexity, but they all\nsuffer from the problem of high indexing time complexity. Recently, some\ngraph-based methods have been proposed to reduce indexing complexity by\napproximating the traditional graphs; these methods have achieved revolutionary\nperformance on million-scale datasets. Yet, they still can not scale to\nbillion-node databases. In this paper, to further improve the search-efficiency\nand scalability of graph-based methods, we start by introducing four aspects:\n(1) ensuring the connectivity of the graph; (2) lowering the average out-degree\nof the graph for fast traversal; (3) shortening the search path; and (4)\nreducing the index size. Then, we propose a novel graph structure called\nMonotonic Relative Neighborhood Graph (MRNG) which guarantees very low search\ncomplexity (close to logarithmic time). To further lower the indexing\ncomplexity and make it practical for billion-node ANNS problems, we propose a\nnovel graph structure named Navigating Spreading-out Graph (NSG) by\napproximating the MRNG. The NSG takes the four aspects into account\nsimultaneously. Extensive experiments show that NSG outperforms all the\nexisting algorithms significantly. In addition, NSG shows superior performance\nin the E-commercial search scenario of Taobao (Alibaba Group) and has been\nintegrated into their search engine at billion-node scale.","url_abs":"http://arxiv.org/abs/1707.00143v9","url_pdf":"http://arxiv.org/pdf/1707.00143v9.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":"fast-approximate-nearest-neighbor-search-with","repo_url":"https://github.com/ZJULearning/nsg","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"none","reach":null},{"paper_slug":"fast-approximate-nearest-neighbor-search-with","repo_url":"https://github.com/milvus-io/milvus","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":0,"framework":"none","reach":{"status":"ok","spdx":"Apache-2.0"}}],"tasks":[],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=1707.00143","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"1707.00143"}},"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/ZJULearning/nsg","reach":null},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/milvus-io/milvus","reach":{"status":"ok","spdx":"Apache-2.0"}}],"summary":{"ran_honours":1},"by_repo_kind":{"official":{"samples":1,"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":"204f3b58b54e48f8","entry":"read_fvecs","repo":"ZJULearning/nsg","repo_kind":"official","path":"pynsg/graph_creator.py","file_url":"https://github.com/ZJULearning/nsg/blob/HEAD/pynsg/graph_creator.py","link_basis":"first_harvest_node","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":"204f3b58b54e48f8"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}