[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"similar-kakao--n2":3,"tool-kakao--n2":64},[4,17,27,35,44,52],{"id":5,"name":6,"github_repo":7,"description_zh":8,"stars":9,"difficulty_score":10,"last_commit_at":11,"category_tags":12,"status":16},3808,"stable-diffusion-webui","AUTOMATIC1111\u002Fstable-diffusion-webui","stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面，旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点，将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。\n\n无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师，还是想要深入探索模型潜力的开发者与研究人员，都能从中获益。其核心亮点在于极高的功能丰富度：不仅支持文生图、图生图、局部重绘（Inpainting）和外绘（Outpainting）等基础模式，还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外，它内置了 GFPGAN 和 CodeFormer 等人脸修复工具，支持多种神经网络放大算法，并允许用户通过插件系统无限扩展能力。即使是显存有限的设备，stable-diffusion-webui 也提供了相应的优化选项，让高质量的 AI 艺术创作变得触手可及。",162132,3,"2026-04-05T11:01:52",[13,14,15],"开发框架","图像","Agent","ready",{"id":18,"name":19,"github_repo":20,"description_zh":21,"stars":22,"difficulty_score":23,"last_commit_at":24,"category_tags":25,"status":16},1381,"everything-claude-code","affaan-m\u002Feverything-claude-code","everything-claude-code 是一套专为 AI 编程助手（如 Claude Code、Codex、Cursor 等）打造的高性能优化系统。它不仅仅是一组配置文件，而是一个经过长期实战打磨的完整框架，旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。\n\n通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能，everything-claude-code 能显著提升 AI 在复杂任务中的表现，帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略，使得模型响应更快、成本更低，同时有效防御潜在的攻击向量。\n\n这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库，还是需要 AI 协助进行安全审计与自动化测试，everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目，它融合了多语言支持与丰富的实战钩子（hooks），让 AI 真正成长为懂上",140436,2,"2026-04-05T23:32:43",[13,15,26],"语言模型",{"id":28,"name":29,"github_repo":30,"description_zh":31,"stars":32,"difficulty_score":23,"last_commit_at":33,"category_tags":34,"status":16},2271,"ComfyUI","Comfy-Org\u002FComfyUI","ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎，专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式，采用直观的节点式流程图界面，让用户通过连接不同的功能模块即可构建个性化的生成管线。\n\n这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景，也能自由组合模型、调整参数并实时预览效果，轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性，不仅支持 Windows、macOS 和 Linux 全平台，还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构，并率先支持 SDXL、Flux、SD3 等前沿模型。\n\n无论是希望深入探索算法潜力的研究人员和开发者，还是追求极致创作自由度的设计师与资深 AI 绘画爱好者，ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能，使其成为当前最灵活、生态最丰富的开源扩散模型工具之一，帮助用户将创意高效转化为现实。",107662,"2026-04-03T11:11:01",[13,14,15],{"id":36,"name":37,"github_repo":38,"description_zh":39,"stars":40,"difficulty_score":10,"last_commit_at":41,"category_tags":42,"status":16},4292,"Deep-Live-Cam","hacksider\u002FDeep-Live-Cam","Deep-Live-Cam 是一款专注于实时换脸与视频生成的开源工具，用户仅需一张静态照片，即可通过“一键操作”实现摄像头画面的即时变脸或制作深度伪造视频。它有效解决了传统换脸技术流程繁琐、对硬件配置要求极高以及难以实时预览的痛点，让高质量的数字内容创作变得触手可及。\n\n这款工具不仅适合开发者和技术研究人员探索算法边界，更因其极简的操作逻辑（仅需三步：选脸、选摄像头、启动），广泛适用于普通用户、内容创作者、设计师及直播主播。无论是为了动画角色定制、服装展示模特替换，还是制作趣味短视频和直播互动，Deep-Live-Cam 都能提供流畅的支持。\n\n其核心技术亮点在于强大的实时处理能力，支持口型遮罩（Mouth Mask）以保留使用者原始的嘴部动作，确保表情自然精准；同时具备“人脸映射”功能，可同时对画面中的多个主体应用不同面孔。此外，项目内置了严格的内容安全过滤机制，自动拦截涉及裸露、暴力等不当素材，并倡导用户在获得授权及明确标注的前提下合规使用，体现了技术发展与伦理责任的平衡。",88924,"2026-04-06T03:28:53",[13,14,15,43],"视频",{"id":45,"name":46,"github_repo":47,"description_zh":48,"stars":49,"difficulty_score":23,"last_commit_at":50,"category_tags":51,"status":16},3704,"NextChat","ChatGPTNextWeb\u002FNextChat","NextChat 是一款轻量且极速的 AI 助手，旨在为用户提供流畅、跨平台的大模型交互体验。它完美解决了用户在多设备间切换时难以保持对话连续性，以及面对众多 AI 模型不知如何统一管理的痛点。无论是日常办公、学习辅助还是创意激发，NextChat 都能让用户随时随地通过网页、iOS、Android、Windows、MacOS 或 Linux 端无缝接入智能服务。\n\n这款工具非常适合普通用户、学生、职场人士以及需要私有化部署的企业团队使用。对于开发者而言，它也提供了便捷的自托管方案，支持一键部署到 Vercel 或 Zeabur 等平台。\n\nNextChat 的核心亮点在于其广泛的模型兼容性，原生支持 Claude、DeepSeek、GPT-4 及 Gemini Pro 等主流大模型，让用户在一个界面即可自由切换不同 AI 能力。此外，它还率先支持 MCP（Model Context Protocol）协议，增强了上下文处理能力。针对企业用户，NextChat 提供专业版解决方案，具备品牌定制、细粒度权限控制、内部知识库整合及安全审计等功能，满足公司对数据隐私和个性化管理的高标准要求。",87618,"2026-04-05T07:20:52",[13,26],{"id":53,"name":54,"github_repo":55,"description_zh":56,"stars":57,"difficulty_score":23,"last_commit_at":58,"category_tags":59,"status":16},2268,"ML-For-Beginners","microsoft\u002FML-For-Beginners","ML-For-Beginners 是由微软推出的一套系统化机器学习入门课程，旨在帮助零基础用户轻松掌握经典机器学习知识。这套课程将学习路径规划为 12 周，包含 26 节精炼课程和 52 道配套测验，内容涵盖从基础概念到实际应用的完整流程，有效解决了初学者面对庞大知识体系时无从下手、缺乏结构化指导的痛点。\n\n无论是希望转型的开发者、需要补充算法背景的研究人员，还是对人工智能充满好奇的普通爱好者，都能从中受益。课程不仅提供了清晰的理论讲解，还强调动手实践，让用户在循序渐进中建立扎实的技能基础。其独特的亮点在于强大的多语言支持，通过自动化机制提供了包括简体中文在内的 50 多种语言版本，极大地降低了全球不同背景用户的学习门槛。此外，项目采用开源协作模式，社区活跃且内容持续更新，确保学习者能获取前沿且准确的技术资讯。如果你正寻找一条清晰、友好且专业的机器学习入门之路，ML-For-Beginners 将是理想的起点。",84991,"2026-04-05T10:45:23",[14,60,43,61,15,62,26,13,63],"数据工具","插件","其他","音频",{"id":65,"github_repo":66,"name":67,"description_en":68,"description_zh":69,"ai_summary_zh":69,"readme_en":70,"readme_zh":71,"quickstart_zh":72,"use_case_zh":73,"hero_image_url":74,"owner_login":75,"owner_name":75,"owner_avatar_url":76,"owner_bio":77,"owner_company":78,"owner_location":78,"owner_email":78,"owner_twitter":78,"owner_website":79,"owner_url":80,"languages":81,"stars":109,"forks":110,"last_commit_at":111,"license":112,"difficulty_score":113,"env_os":114,"env_gpu":115,"env_ram":116,"env_deps":117,"category_tags":122,"github_topics":123,"view_count":23,"oss_zip_url":78,"oss_zip_packed_at":78,"status":16,"created_at":133,"updated_at":134,"faqs":135,"releases":165},4158,"kakao\u002Fn2","n2","TOROS N2 - lightweight approximate Nearest Neighbor library which runs fast even with large datasets","N2 是一款由 Kakao 开源的轻量级近似最近邻（Approximate Nearest Neighbor）搜索库，专为高效处理大规模向量数据而设计。在人工智能和推荐系统中，快速从海量数据中找到相似项至关重要，但传统方法往往在速度与内存占用之间难以平衡。N2 的出现正是为了解决这一痛点，它汲取了 Annoy、NMSLIB 等现有库的优点，在索引构建速度、查询效率及内存管理上实现了更优的综合性能。\n\n这款工具特别适合后端开发者、算法工程师及数据科学家使用，尤其是那些需要在生产环境中部署高并发检索服务，或受限于硬件资源却需处理亿级向量数据的团队。N2 的核心亮点在于其卓越的多核并行构建能力，能充分利用 CPU 资源加速索引生成；同时默认支持内存映射（mmap）技术，使其能够轻松加载和处理超出物理内存大小的巨型索引文件，极大降低了运行门槛。此外，N2 基于 C++ 开发并提供了友好的 Python 和 Go 语言接口，支持角距离、欧氏距离及点积等多种度量方式，让开发者能以极低的代码成本集成高性能检索功能，是构建大规模向量检索系统的得力助手。","N2\n==============================================================================\n\n|pypi| |docs| |travis| |license|\n\n.. begin_badges\n\n.. |docs| image:: https:\u002F\u002Freadthedocs.org\u002Fprojects\u002Fn2\u002Fbadge\u002F?version=latest\n   :target: https:\u002F\u002Fn2.readthedocs.io\u002Fen\u002Flatest\u002F?badge=latest\n   :alt: Documentation Status\n\n.. |pypi| image:: https:\u002F\u002Fimg.shields.io\u002Fpypi\u002Fv\u002Fn2.svg?style=flat\n   :target: https:\u002F\u002Fpypi.python.org\u002Fpypi\u002Fn2\n   :alt: Latest Version\n\n.. |travis| image:: https:\u002F\u002Ftravis-ci.org\u002Fkakao\u002Fn2.svg?branch=master\n   :target: https:\u002F\u002Ftravis-ci.org\u002Fkakao\u002Fn2\n   :alt: Build Status\n\n.. |license| image:: https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Flicense\u002Fkakao\u002Fn2\n   :target: https:\u002F\u002Fgithub.com\u002Fkakao\u002Fn2\u002Fblob\u002Fmaster\u002FLICENSE\n   :alt: Apache-License 2.0\n\n.. end_badges\n\n.. begin_intro\n\nLightweight approximate **N**\\ earest **N**\\ eighbor algorithm library written\nin C++ (with Python\u002FGo bindings).\n\nN2 stands for two N's, which comes from \\'Approximate ``N``\\ earest \n``N``\\ eighbor Algorithm\\'.\n\n.. end_intro\n\n.. begin_background\n\nWhy N2 Was Made\n------------------------------------------------------------------------------\n\nBefore N2, there has been other great approximate nearest neighbor\nlibraries such as `Annoy`_ and `NMSLIB`_. However, each of them had\ndifferent strengths and weaknesses regarding usability, performance,\nand etc. So, N2 has been developed aiming to bring the strengths of\nexisting aKNN libraries and supplement their weaknesses.\n\n.. end_background\n\n.. begin_features\n\nFeatures\n------------------------------------------------------------------------------\n\n- Lightweight library which runs fast with large datasets.\n- Good performance in terms of index build time, search speed,\n  and memory usage.\n- Supports multi-core CPUs for index building.\n- Supports a mmap feature by default to efficiently process large\n  index files.\n- Supports Python\u002FGo bindings.\n\n.. end_features\n\nSupported Distance Metrics\n------------------------------------------------------------------------------\n\n.. Please manually sync the table below with that of docs\u002Findex.rst.\n\n+-----------+-------------+--------------------------------------------------------------------+\n| Metric    | Definition  | d(**p**, **q**)                                                    |\n+-----------+-------------+--------------------------------------------------------------------+\n| \"angular\" | 1 - cosθ    | 1 - {sum(p :sub:`i` · q :sub:`i`) \u002F                                |\n|           |             | sqrt(sum(p :sub:`i` · p :sub:`i`) · sum(q :sub:`i` · q :sub:`i`))} |\n+-----------+-------------+--------------------------------------------------------------------+\n| \"L2\"      | squared L2  | sum{(p :sub:`i` - q :sub:`i`) :sup:`2`}                            |\n+-----------+-------------+--------------------------------------------------------------------+\n| \"dot\"     | dot product | sum(p :sub:`i` · q :sub:`i`)                                       |\n+-----------+-------------+--------------------------------------------------------------------+\n\n.. begin_metric_detail\n\nN2 supports three distance metrics.\nFor \"angular\" and \"L2\", **d** (distance) is defined such that the closer the vectors are,\nthe smaller **d** is. However for \"dot\", **d** is defined such that the closer\nthe vectors are, the larger **d** is. You may be wondering why we defined\nand implemented \"dot\" metric as *plain dot product* and not as *(1 - dot product)*.\nThe rationale for this decision was to allow users to directly interpret the **d** value\nreturned from Hnsw search function as a dot product value.\n\n.. end_metric_detail\n\nQuickstart\n------------------------------------------------------------------------------\n\n1. Install N2 with pip.\n\n.. code:: bash\n\n   $ pip install n2\n\n2. Here is a python code snippet demonstrating how to use N2.\n\n.. code:: python\n\n    import numpy as np\n\n    from n2 import HnswIndex\n\n    N, dim = 10240, 20\n    samples = np.arange(N * dim).reshape(N, dim)\n\n    index = HnswIndex(dim)\n    for sample in samples:\n        index.add_data(sample)\n    index.build(m=5, n_threads=4)\n    print(index.search_by_id(0, 10))\n    # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]\n\nFull Documentation\n------------------------------------------------------------------------------\n\nVisit `n2.readthedocs.io`_ for full documentation.\nThe documentation site explains the following contents in detail.\n\n-  `Installation Guide`_\n\n   - how to build from source, etc.\n\n-  User Guide with Basic Examples\n\n   - `Python Interface`_\n   - `C++ Interface`_\n   - `Go Interface`_\n\n-  `Benchmark`_\n\n   - detailed explanation of how we performed benchmark experiemnts.\n\n\nPerformance\n------------------------------------------------------------------------------\n\n- Here are the results of our benchmark experiments.\n- You can also see benchmarks of various ANN libraries in Python at `ann-benchmarks.com`_.\n  Note that N2 version 0.1.6 is used in `ann-benchmarks.com`_ (last checked on October 8th, 2020)\n  and we are continuing our efforts to improve N2 performance.\n\n\nIndex Build Time\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\n|image0|\n\nSearch Speed\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\n|image1|\n\nMemory Usage\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\n|image2|\n\n\n.. begin_footnote\n\nReferences\n------------------------------------------------------------------------------\n\n- Y\\. A. Malkov and D. A. Yashunin, \"Efficient and robust approximate \n  nearest neighbor search using hierarchical navigable small world \n  graphs,\" CoRR, vol. abs\u002F1603.09320, 2016. [Online]. \n  Available: http:\u002F\u002Farxiv.org\u002Fabs\u002F1603.09320\n-  NMSLIB: https:\u002F\u002Fgithub.com\u002Fnmslib\u002Fnmslib\n-  Annoy: https:\u002F\u002Fgithub.com\u002Fspotify\u002Fannoy\n\nLicense\n------------------------------------------------------------------------------\n\nThis software is licensed under the `Apache 2 license`_, quoted below.\n\nCopyright 2017 Kakao Corp. http:\u002F\u002Fwww.kakaocorp.com\n\nLicensed under the Apache License, Version 2.0 (the “License”); you may\nnot use this project except in compliance with the License. You may\nobtain a copy of the License at\nhttp:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0.\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an “AS IS” BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n\n.. _Apache 2 license: https:\u002F\u002Fgithub.com\u002Fkakao\u002Fn2\u002Fblob\u002Fmaster\u002FLICENSE\n.. _Annoy: https:\u002F\u002Fgithub.com\u002Fspotify\u002Fannoy\n.. _NMSLIB: https:\u002F\u002Fgithub.com\u002Fnmslib\u002Fnmslib\n.. _Installation Guide: https:\u002F\u002Fn2.readthedocs.io\u002Fen\u002Flatest\u002Finstall.html\n.. _Python Interface: https:\u002F\u002Fn2.readthedocs.io\u002Fen\u002Flatest\u002Fpython_api.html\n.. _C++ Interface: https:\u002F\u002Fn2.readthedocs.io\u002Fen\u002Flatest\u002Fcpp_api.html\n.. _Go Interface: https:\u002F\u002Fn2.readthedocs.io\u002Fen\u002Flatest\u002Fgo_api.html\n.. _Benchmark: https:\u002F\u002Fn2.readthedocs.io\u002Fen\u002Flatest\u002Fbenchmark.html\n.. _n2.readthedocs.io: https:\u002F\u002Fn2.readthedocs.io\u002Fen\u002Flatest\u002F\n.. _ann-benchmarks.com: http:\u002F\u002Fann-benchmarks.com\u002F\n\n.. |image0| image:: docs\u002Fimgs\u002Fbuild_time\u002Fbuild_time_threads.png\n.. |image1| image:: docs\u002Fimgs\u002Fsearch_time\u002Fsearch_time.png\n.. |image2| image:: docs\u002Fimgs\u002Fmem\u002Fmemory_usage.png\n\n.. end_footnote\n","N2\n==============================================================================\n\n|pypi| |docs| |travis| |license|\n\n.. begin_badges\n\n.. |docs| image:: https:\u002F\u002Freadthedocs.org\u002Fprojects\u002Fn2\u002Fbadge\u002F?version=latest\n   :target: https:\u002F\u002Fn2.readthedocs.io\u002Fen\u002Flatest\u002F?badge=latest\n   :alt: 文档状态\n\n.. |pypi| image:: https:\u002F\u002Fimg.shields.io\u002Fpypi\u002Fv\u002Fn2.svg?style=flat\n   :target: https:\u002F\u002Fpypi.python.org\u002Fpypi\u002Fn2\n   :alt: 最新版本\n\n.. |travis| image:: https:\u002F\u002Ftravis-ci.org\u002Fkakao\u002Fn2.svg?branch=master\n   :target: https:\u002F\u002Ftravis-ci.org\u002Fkakao\u002Fn2\n   :alt: 构建状态\n\n.. |license| image:: https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Flicense\u002Fkakao\u002Fn2\n   :target: https:\u002F\u002Fgithub.com\u002Fkakao\u002Fn2\u002Fblob\u002Fmaster\u002FLICENSE\n   :alt: Apache许可证2.0\n\n.. end_badges\n\n.. begin_intro\n\n用C++编写的轻量级近似**N**\\ earest **N**\\ eighbor算法库（带有Python\u002FGo绑定）。\n\nN2代表两个“N”，源自“Approximate ``N``\\ earest ``N``\\ eighbor Algorithm”。\n\n.. end_intro\n\n.. begin_background\n\n为什么开发N2\n------------------------------------------------------------------------------\n\n在N2出现之前，已经存在其他优秀的近似最近邻库，如`Annoy`_和`NMSLIB`_。然而，它们各自在易用性、性能等方面都有不同的优缺点。因此，N2的开发旨在结合现有aKNN库的优点，并弥补其不足之处。\n\n.. end_background\n\n.. begin_features\n\n特性\n------------------------------------------------------------------------------\n\n- 轻量级库，能够快速处理大规模数据集。\n- 在索引构建时间、搜索速度和内存使用方面表现出色。\n- 支持多核CPU进行索引构建。\n- 默认支持mmap功能，以高效处理大型索引文件。\n- 支持Python\u002FGo绑定。\n\n.. end_features\n\n支持的距离度量\n------------------------------------------------------------------------------\n\n请手动将下表与docs\u002Findex.rst中的表格同步。\n\n+-----------+-------------+--------------------------------------------------------------------+\n| 度量      | 定义        | d(**p**, **q**)                                                    |\n+-----------+-------------+--------------------------------------------------------------------+\n| \"angular\" | 1 - cosθ    | 1 - {sum(p :sub:`i` · q :sub:`i`) \u002F                                |\n|           |             | sqrt(sum(p :sub:`i` · p :sub:`i`) · sum(q :sub:`i` · q :sub:`i`))} |\n+-----------+-------------+--------------------------------------------------------------------+\n| \"L2\"      | 平方L2      | sum{(p :sub:`i` - q :sub:`i`) :sup:`2`}                            |\n+-----------+-------------+--------------------------------------------------------------------+\n| \"dot\"     | 点积        | sum(p :sub:`i` · q :sub:`i`)                                       |\n+-----------+-------------+--------------------------------------------------------------------+\n\n.. begin_metric_detail\n\nN2支持三种距离度量。对于“angular”和“L2”，距离**d**的定义是：向量越接近，**d**越小。而对于“dot”，距离**d**的定义是：向量越接近，**d**越大。您可能会好奇，为什么我们将“dot”度量实现为*普通的点积*，而不是*(1 - 点积)*？做出这一决定的原因是为了让用户可以直接将Hnsw搜索函数返回的**d**值解释为点积值。\n\n.. end_metric_detail\n\n快速入门\n------------------------------------------------------------------------------\n\n1. 使用pip安装N2。\n\n.. code:: bash\n\n   $ pip install n2\n\n2. 下面是一个演示如何使用N2的Python代码片段。\n\n.. code:: python\n\n    import numpy as np\n\n    from n2 import HnswIndex\n\n    N, dim = 10240, 20\n    samples = np.arange(N * dim).reshape(N, dim)\n\n    index = HnswIndex(dim)\n    for sample in samples:\n        index.add_data(sample)\n    index.build(m=5, n_threads=4)\n    print(index.search_by_id(0, 10))\n    # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]\n\n完整文档\n------------------------------------------------------------------------------\n\n访问`n2.readthedocs.io`_获取完整文档。该文档详细介绍了以下内容：\n\n- `安装指南`_\n\n   - 如何从源码构建等。\n\n- 带有基本示例的用户指南\n\n   - `Python接口`_\n   - `C++接口`_\n   - `Go接口`_\n\n- `基准测试`_\n\n   - 详细说明我们是如何进行基准测试的。\n\n\n性能\n------------------------------------------------------------------------------\n\n- 以下是我们的基准测试结果。\n- 您还可以在`ann-benchmarks.com`_上查看各种Python ANN库的基准测试结果。请注意，`ann-benchmarks.com`_中使用的N2版本为0.1.6（截至2020年10月8日），而我们仍在不断努力提升N2的性能。\n\n\n索引构建时间\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\n|image0|\n\n搜索速度\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\n|image1|\n\n内存使用\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\n|image2|\n\n\n.. begin_footnote\n\n参考文献\n------------------------------------------------------------------------------\n\n- Y\\. A. Malkov 和 D. A. Yashunin, “使用分层可导航小世界图进行高效且鲁棒的近似最近邻搜索,” CoRR, vol. abs\u002F1603.09320, 2016. [在线]. 可用地址: http:\u002F\u002Farxiv.org\u002Fabs\u002F1603.09320\n-  NMSLIB: https:\u002F\u002Fgithub.com\u002Fnmslib\u002Fnmslib\n-  Annoy: https:\u002F\u002Fgithub.com\u002Fspotify\u002Fannoy\n\n许可\n------------------------------------------------------------------------------\n\n本软件采用`Apache 2许可证`_授权，如下所述。\n\n版权所有 © 2017 Kakao Corp. http:\u002F\u002Fwww.kakaocorp.com\n\n根据Apache许可证第2.0版（“许可证”）授权；除非符合许可证规定，否则不得使用本项目。您可以在http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0获得许可证副本。\n\n除非适用法律要求或书面协议另有约定，否则根据“AS IS”基础分发的软件不提供任何形式的保证或条件，无论是明示还是暗示。有关权限和限制的具体语言，请参阅许可证。\n\n.. _Apache 2 许可证: https:\u002F\u002Fgithub.com\u002Fkakao\u002Fn2\u002Fblob\u002Fmaster\u002FLICENSE\n.. _Annoy: https:\u002F\u002Fgithub.com\u002Fspotify\u002Fannoy\n.. _NMSLIB: https:\u002F\u002Fgithub.com\u002Fnmslib\u002Fnmslib\n.. _安装指南: https:\u002F\u002Fn2.readthedocs.io\u002Fen\u002Flatest\u002Finstall.html\n.. _Python 接口: https:\u002F\u002Fn2.readthedocs.io\u002Fen\u002Flatest\u002Fpython_api.html\n.. _C++ 接口: https:\u002F\u002Fn2.readthedocs.io\u002Fen\u002Flatest\u002Fcpp_api.html\n.. _Go 接口: https:\u002F\u002Fn2.readthedocs.io\u002Fen\u002Flatest\u002Fgo_api.html\n.. _基准测试: https:\u002F\u002Fn2.readthedocs.io\u002Fen\u002Flatest\u002Fbenchmark.html\n.. _n2.readthedocs.io: https:\u002F\u002Fn2.readthedocs.io\u002Fen\u002Flatest\u002F\n.. _ann-benchmarks.com: http:\u002F\u002Fann-benchmarks.com\u002F\n\n.. |image0| image:: docs\u002Fimgs\u002Fbuild_time\u002Fbuild_time_threads.png\n.. |image1| image:: docs\u002Fimgs\u002Fsearch_time\u002Fsearch_time.png\n.. |image2| image:: docs\u002Fimgs\u002Fmem\u002Fmemory_usage.png\n\n.. end_footnote","# N2 快速上手指南\n\nN2 是一个用 C++ 编写的高性能近似最近邻（Approximate Nearest Neighbor, ANN）搜索库，支持 Python 和 Go 绑定。它在索引构建速度、搜索效率和内存占用方面表现优异，特别适合处理大规模数据集。\n\n## 环境准备\n\n- **操作系统**：Linux \u002F macOS \u002F Windows\n- **Python 版本**：Python 3.6+\n- **依赖项**：\n  - `numpy`（用于数据处理）\n  - 编译工具链（如 `gcc` 或 `clang`，若需从源码安装）\n\n> 💡 提示：国内用户可使用清华或阿里云镜像加速 pip 安装。\n\n## 安装步骤\n\n通过 pip 直接安装（推荐）：\n\n```bash\npip install n2\n```\n\n如需使用国内镜像源加速安装：\n\n```bash\npip install n2 -i https:\u002F\u002Fpypi.tuna.tsinghua.edu.cn\u002Fsimple\n```\n\n## 基本使用\n\n以下是一个最简单的 Python 示例，演示如何构建索引并执行近邻搜索：\n\n```python\nimport numpy as np\nfrom n2 import HnswIndex\n\n# 生成示例数据：10240 条，每条 20 维\nN, dim = 10240, 20\nsamples = np.arange(N * dim).reshape(N, dim)\n\n# 创建索引\nindex = HnswIndex(dim)\n\n# 添加数据\nfor sample in samples:\n    index.add_data(sample)\n\n# 构建索引（设置连接数 m=5，使用 4 个线程）\nindex.build(m=5, n_threads=4)\n\n# 查询 ID 为 0 的样本的最近 10 个邻居\nresults = index.search_by_id(0, 10)\nprint(results)\n# 输出示例：[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]\n```\n\n### 支持的距離度量\n\nN2 支持三种距离度量方式：\n\n| 度量类型 | 说明             | 距离定义                                     |\n|----------|------------------|----------------------------------------------|\n| angular  | 余弦相似度       | 1 - cosθ（值越小越相似）                     |\n| L2       | 欧氏距离平方     | Σ(pi - qi)²（值越小越相似）                  |\n| dot      | 点积             | Σ(pi · qi)（值越大越相似）                   |\n\n默认使用 `angular` 度量。如需切换，可在创建 `HnswIndex` 时指定 `metric` 参数，例如：\n\n```python\nindex = HnswIndex(dim, metric='L2')\n```\n\n---\n\n更多详细用法（包括 C++\u002FGo 接口、高级参数调优等），请访问官方文档：https:\u002F\u002Fn2.readthedocs.io","某电商推荐团队需要在毫秒级内从千万级商品向量库中，为用户实时召回最相似的候选商品。\n\n### 没有 n2 时\n- **响应延迟高**：面对海量数据，传统精确搜索或笨重的索引库导致单次查询耗时超过 200 毫秒，无法满足高并发下的实时推荐需求。\n- **内存资源紧张**：构建索引时内存占用极高，经常触发服务器 OOM（内存溢出），迫使团队不得不增加昂贵的硬件投入。\n- **部署维护复杂**：现有方案依赖繁重的环境配置，且缺乏对多核 CPU 的有效利用，索引构建速度缓慢，难以适应商品库的快速更新。\n- **开发集成困难**：缺少友好的 Python 绑定，算法工程师在将 C++ 核心逻辑整合到业务系统时花费了大量时间进行接口适配。\n\n### 使用 n2 后\n- **查询极速响应**：n2 凭借轻量级的近似最近邻算法，将千万级数据的平均查询延迟压缩至 10 毫秒以内，显著提升了用户浏览体验。\n- **内存效率优化**：得益于默认的 mmap 文件映射机制，n2 在处理大规模索引时内存占用极低，直接在原有服务器上即可稳定运行。\n- **构建性能飞跃**：利用 n2 的多核 CPU 并行构建能力，全量商品索引的更新时间从数小时缩短至几十分钟，轻松应对每日数据增量。\n- **开发无缝衔接**：通过简洁的 Python API，团队仅需几行代码即可完成索引的创建与检索，大幅降低了工程落地门槛。\n\nn2 以极致的轻量化设计和卓越的性能表现，成功解决了大规模向量检索在速度与资源之间的平衡难题。","https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fkakao_n2_70f6b9fc.png","kakao","https:\u002F\u002Foss.gittoolsai.com\u002Favatars\u002Fkakao_a7fac420.png","",null,"http:\u002F\u002Ftech.kakao.com\u002F","https:\u002F\u002Fgithub.com\u002Fkakao",[82,86,90,94,98,102,106],{"name":83,"color":84,"percentage":85},"Jupyter Notebook","#DA5B0B",43.4,{"name":87,"color":88,"percentage":89},"C++","#f34b7d",35.5,{"name":91,"color":92,"percentage":93},"Python","#3572A5",9.5,{"name":95,"color":96,"percentage":97},"Go","#00ADD8",4.8,{"name":99,"color":100,"percentage":101},"Cython","#fedf5b",4.3,{"name":103,"color":104,"percentage":105},"Makefile","#427819",1.9,{"name":107,"color":78,"percentage":108},"SWIG",0.7,580,70,"2026-02-24T15:06:42","Apache-2.0",1,"未说明","不需要 GPU，基于 CPU 运行（支持多核 CPU 加速索引构建）","未说明（但支持 mmap 功能以高效处理大型索引文件，降低内存压力）",{"notes":118,"python":119,"dependencies":120},"该工具是用 C++ 编写的轻量级近似最近邻算法库，默认支持 mmap 功能以高效处理大型索引文件。支持多核 CPU 并行构建索引。提供 Python 和 Go 语言绑定。支持的距離度量包括 angular、L2 和 dot product。","未说明（可通过 pip 安装，提供 Python 绑定）",[121],"numpy",[13],[124,125,126,127,128,129,130,131,132],"python","go","ml","knn","machine-learning","approximate","k-nearest-neighbors","nearest-neighbor-search","approximate-nearest-neighbor-search","2026-03-27T02:49:30.150509","2026-04-06T12:04:30.469427",[136,141,146,151,156,161],{"id":137,"question_zh":138,"answer_zh":139,"source_url":140},18940,"如何在 macOS 上编译 N2？必须使用 GCC 吗？支持 Clang 吗？","N2 依赖 OpenMP 进行多线程加速，而 macOS 默认的 Apple LLVM (Clang) 不支持 OpenMP。因此，官方指南建议使用 Homebrew 安装 GCC。\n\n不过，从最近的补丁开始，也支持使用通过 Homebrew 安装的 LLVM Clang，只要正确设置环境变量即可。具体步骤如下：\n1. 安装 LLVM: `brew install llvm`\n2. 设置环境变量:\n   export CC=$(brew --prefix llvm)\u002Fbin\u002Fclang\n   export CXX=$(brew --prefix llvm)\u002Fbin\u002Fclang++\n   export LDFLAGS=-L$(brew --prefix llvm)\u002Flib\n3. 运行构建命令: `make` 或 `python setup.py install`\n\n注意：目前无法在不安装新工具链（如 gcc 或 llvm）的情况下直接在 macOS 上构建，因为 OpenMP 对性能至关重要，不能被设为可选。","https:\u002F\u002Fgithub.com\u002Fkakao\u002Fn2\u002Fissues\u002F6",{"id":142,"question_zh":143,"answer_zh":144,"source_url":145},18941,"加载索引时使用 use_mmap=True 会导致搜索变慢或卡住吗？应该如何选择加载方式？","是的，行为有所不同：\n1. use_mmap=True (默认): `index.load()` 几乎瞬间完成，因为数据未完全载入内存。但在首次调用 `search_by_vector` 时，程序可能会卡顿较长时间（例如 1.5 分钟），这是因为操作系统正在将数据分页载入内存（Page Fault），期间 CPU 和内存占用较低。\n2. use_mmap=False: `index.load()` 需要几秒到几十秒（取决于文件大小），因为会立即将所有数据读入内存。但随后的搜索速度很快，无延迟。\n\n建议：\n- 如果机器内存充足且追求稳定的低延迟搜索，建议使用 `use_mmap=False`。\n- 如果内存有限或只需偶尔搜索，可以使用默认的 `use_mmap=True`，但需容忍首次搜索的延迟。\n目前 N2 尚不支持处理超过物理内存大小的数据（未来计划通过产品量化 PQ 支持）。","https:\u002F\u002Fgithub.com\u002Fkakao\u002Fn2\u002Fissues\u002F35",{"id":147,"question_zh":148,"answer_zh":149,"source_url":150},18942,"N2 如何处理重复向量（Duplicate Vectors）？会影响召回率或性能吗？","在版本 0.1.7 之前，HNSW 算法在处理重复或近似重复向量时效率较低，可能导致召回率下降，因为启发式邻居选择算法主要关注导航性，容易忽略重复向量。\n\n从版本 0.1.7 开始，N2 改进了启发式邻居选择算法，使其在保留最近邻的同时不降低导航性能，从而有效解决了重复向量导致的召回率低的问题。基准测试显示，在包含约 2% 重复向量的 GIST 数据集上，0.1.7 版本的召回率显著高于 0.1.6 版本。因此，建议使用 0.1.7 或更高版本以正确处理重复向量。","https:\u002F\u002Fgithub.com\u002Fkakao\u002Fn2\u002Fissues\u002F39",{"id":152,"question_zh":153,"answer_zh":154,"source_url":155},18943,"使用 \"angular\" 距离度量时，如果数据中包含零向量会发生什么？需要手动预处理吗？","N2 内部会自动处理零向量和归一化问题，用户无需手动干预。\n具体来说：\n1. 对于零向量：虽然数学公式中分母可能为零，但 N2 内部有机制处理这种情况，不会报错或警告。\n2. 对于归一化：在使用 \"angular\" 距离时，索引构建过程中会自动对向量进行 L2 归一化。归一化后，角度距离计算公式简化为 `1 - sum(p' i · q' i)`。查询向量也会在搜索前自动归一化。\n因此，您可以直接传入原始向量（包括零向量），N2 会按照标准的角度距离含义进行处理。","https:\u002F\u002Fgithub.com\u002Fkakao\u002Fn2\u002Fissues\u002F38",{"id":157,"question_zh":158,"answer_zh":159,"source_url":160},18944,"如何复现论文或 README 中的基准测试结果？为什么现在的脚本和图示结果不一致？","由于代码库的更新，早期的基准测试脚本可能已过时或不完整（例如缺少 NMSLIB 的对比代码）。\n要复现最新版本的基准测试结果，请使用以下资源：\n1. 查看最新版本（如 0.1.6 或 0.1.7）的基准结果图片，链接通常在 docs\u002Fimgs\u002Fsearch_time\u002F 目录下。\n2. 使用官方提供的 Jupyter Notebook 进行复现：`benchmarks\u002Fbenchmark.ipynb`（对应 0.1.7 版本）。\n注意：运行所有单元格可能需要 18 到 24 小时。\n此外，N2 在基准测试中使用固定参数以方便开发，而与其他库（如 NMSLIB）对比时，参考了 ann-benchmarks 的结果设置。","https:\u002F\u002Fgithub.com\u002Fkakao\u002Fn2\u002Fissues\u002F11",{"id":162,"question_zh":163,"answer_zh":164,"source_url":145},18945,"我的机器内存有限，无法一次性建立大规模数据（如 1500 万条）的索引，有什么解决方案？","目前 N2 尚未原生支持超出物理内存大小的索引构建（未来版本计划通过产品量化 Product Quantization 支持）。\n针对当前内存受限的情况，推荐的临时解决方案是“分片索引”策略：\n1. 将大数据集分割成多个小块（例如每块 100 万条数据）。\n2. 分别为每个小块建立独立的 N2 索引。\n3. 查询时，依次在所有分片索引上进行搜索。\n4. 最后汇总所有分片的搜索结果，取全局 Top-K 作为最终结果。\n虽然这种方法增加了查询时的开销（需查询多次），但在内存受限环境下是可行且有效的变通方案。",[166,171,176,181],{"id":167,"version":168,"summary_zh":169,"released_at":170},114046,"0.1.7","## 新特性\n- 添加点积距离度量。\n- 添加支持多线程的批量搜索功能。\n\n## 改进\n- 优化搜索功能。\n- 改进图构建启发式算法。\n- 改进基准测试中的召回率计算。\n- 改进 Python 安装脚本。\n\n## 其他\n- 添加 Jupyter Notebook，用于复现基准测试结果。\n- 重构源代码。\n- 修复 PyPI 上的图片显示问题。\n\n## 文档\n- 更新文档。\n- 更新 API 手册。\n- 构建 [n2.readthedocs.io](https:\u002F\u002Fn2.readthedocs.io\u002F)。🎉","2020-10-16T03:43:47",{"id":172,"version":173,"summary_zh":174,"released_at":175},114047,"0.1.6","## Bug 修复\n  - 修复 Python unittest 的 bug\n\n## 其他\n  - 修复 Travis CI 构建失败的问题","2020-02-17T11:06:25",{"id":177,"version":178,"summary_zh":179,"released_at":180},114048,"0.1.5","## 其他\n  - 提升搜索和构建性能\n  - 重构源代码\n  - 对源代码进行静态检查\n  - 移除不必要的代码\n  - 修复 bug\n  - 更新基准测试文档","2020-02-14T05:43:21",{"id":182,"version":183,"summary_zh":78,"released_at":184},114049,"0.1.4","2020-02-14T05:40:26"]