2024 11 04 HackerNews

2024-11-04 Hacker News Top Stories #

  1. 触摸屏控制正逐渐被传统的旋钮和按钮所取代,苹果公司在最新的 iPhone 16 中增加了两个新按钮,家电产品如炉灶和洗衣机也在恢复使用旋钮。
  2. 一个极简主义的网站,用于分享所有链接,完全自定义 CSS,并且为你的链接添加了一堆类,以帮助你更容易地对它们进行样式设置。
  3. 谷歌数据中心网络经过 25 年的演进,已经成为全球最大的数据中心网络之一。
  4. 如果你需要钱,不要接这个工作,固定价格的合同不利于双方,建议按小时收费,并提供详细的估算。
  5. Matrix 2.0 已经发布,标志着 Matrix 协议的重大升级,Matrix 的目标是提供一个开放、去中心化、安全的通信协议,用于构建出色的通信应用程序。
  6. Nvidia GeForce GPU 存在安全漏洞,Nvidia 近日发布了一份安全公告,称其 GeForce GPU 驱动程序和其他软件中存在多个安全漏洞,用户需要更新 Nvidia 驱动程序至最新版本以修复漏洞。
  7. 有限元方法的历史回顾,有限元方法从诞生到当前状态和未来发展方向的所有方面,有限元方法在实际应用中的进展并不如文章所述那样乐观,许多高级方法在解决实际问题时表现不佳。
  8. 下一代 Out-of-Band 垃圾回收,Shopify 的 Ruby 团队开发了一种新的垃圾回收机制,旨在减少垃圾回收对应用程序延迟的影响,该机制已在 Shopify 的生产环境中部署,并取得了显著的效果。
  9. Ractor – 一个 Rust Actor 框架,Ractor 是一个 Rust 语言的 Actor 模型库,基于 Tokio 构建,提供了一种简洁的方式来创建和管理 Actor,支持消息传递、远程过程调用(RPC)和状态管理。
  10. SPANN:高效的亿级近似最近邻搜索,SPANN 将聚类中心点存储在内存中,将大型 posting 列表存储在磁盘中,实现了高效的近似最近邻搜索。

Touchscreens are out, and tactile controls are back #

https://spectrum.ieee.org/touchscreens

近年来,触摸屏控制正逐渐被传统的旋钮和按钮所取代。苹果公司在最新的 iPhone 16 中增加了两个新按钮,家电产品如炉灶和洗衣机也在恢复使用旋钮。汽车制造商也开始在仪表盘和方向盘上重新引入按钮和旋钮。随着这种“重新按钮化”的趋势,专门研究按钮和人机交互的专家 Rachel Plotnick 的专业知识变得越来越重要。

Plotnick 是印第安纳大学布卢明顿分校电影和媒体研究系的副教授,她的研究重点是技术与社会的关系,特别是人们与日常技术的互动。她还著有《按钮的历史:快乐、恐慌和控制的政治》一书。现在,公司们开始寻求她的帮助,以改善他们的触觉控制。Plotnick 表示,触摸屏虽然方便,但人们也开始厌倦这种界面,开始渴望物理按钮的触感和反馈。例如,游戏玩家和 DJ 们都喜欢使用物理按钮和旋钮来控制他们的设备。

Plotnick 认为,触觉控制可以提供更丰富的体验,并且可以更好地满足人们的需求。


HN 热度 673 points | 评论 517 comments | 作者:pseudolus | 9 hours ago #

https://news.ycombinator.com/item?id=42033241

  • 触摸屏对视力受损者不友好,缺乏触觉反馈
  • 触摸屏随着年龄增长,皮肤干燥导致无法正常操作
  • 舔手指可能是为了保持手指湿润,便于翻页或操作
  • 舔手指的习惯可能是因为不再在乎周围人的看法
  • 使用蜡或湿海绵等工具可以替代舔手指,更卫生
  • 一些塑料袋设计有小粘点,方便拉开
  • 通过摩擦塑料袋开口处可以产生静电,从而更容易打开
  • 纸袋开口边缘错位设计,便于拉开,是一个很好的发明

https://lynx.boo

你还记得 2000 年代初的互联网吗?那些整洁的单一功能网站让你能够发挥创意,自定义你的空间,而不是试图成为下一个大型企业集团(或者被它们收购)。

我正在构建一系列概念简单的网站,但是太多的参与者试图让他们的产品变得过于庞大。我以前也住在一个非常偏远的地区,所以我的目标是制作即使在非常慢的互联网上也能快速加载的网站。我首先从 Lynx.boo 开始。

这是一个类似 Linktree 风格的网站,让你可以完全自定义你的 CSS(并且为你的链接添加了一堆类,以帮助你更容易地对它们进行样式设置,以及非常不限制的 CSS,你真的想做的话可以做 html{display:none;}),而且功能并不被另一个月费所锁定。当我找到最好的方法时,我会添加分析支持。

此外,这里没有用户系统(严格来说),你只需通过电子邮件确认更改,但你永远不会为网站注册,也不会被垃圾邮件骚扰。请随意尝试破坏 CSS(或任何东西),你想试多少次都行。我认为它相当健壮,但我非常希望看到你发现的任何安全漏洞。


HN 热度 275 points | 评论 149 comments | 作者:TravisPeacock | 1 day ago #

https://news.ycombinator.com/item?id=42027654

  • 网站设计让人联想到 1970 年代 NASA 的设计风格,但缺少了一些关键的粗野主义元素
  • 粗野主义网站设计更像是一个反设计理论,强调简单和实用,而不是复杂的视觉效果
  • 网站存在一些技术问题,如特殊字符渲染错误、确认链接被标记为垃圾邮件、移动端布局问题等
  • 建议增加每个链接的短名称功能,可以作为 URL 缩短服务使用
  • 网站所有者需要考虑如何处理用户可能占用的 URL 冲突问题
  • 表单验证流程需要优化,提交时应允许用户返回并修正错误
  • 提交链接后,确认页面应提供更明确的反馈信息,包括页面创建成功的链接
  • 网站的确认邮件容易被归类为垃圾邮件,需要提升邮件信誉度

Speed, scale and reliability: 25 years of Google datacenter networking evolution #

https://cloud.google.com/blog/products/networking/speed-scale-reliability-25-years-of-data-center-networking

谷歌数据中心网络演进 25 年:从简单到复杂

谷歌的数据中心网络从简单到复杂,经过 25 年的演进,已经成为全球最大的数据中心网络之一。谷歌的网络基础设施最初很简单,但随着用户数量和服务需求的增长,谷歌意识到需要一个能够处理大量数据和流量的网络。

谷歌的网络演进遵循几个原则,包括:

  • 支持大规模工作负载
  • 可预测的低延迟
  • 软件定义的网络
  • 动态拓扑
  • 流量工程和应用级别的服务质量

谷歌的网络演进包括五代数据中心网络,最新的一代是 Jupiter 网络。Jupiter 网络支持每秒 13 Petabit 的数据传输量,是全球最快的数据中心网络之一。

谷歌的网络演进还包括对光电交换、波分复用和可扩展的 Orion SDN 控制器的集成。这些技术使得谷歌的网络更加高效、灵活和可靠。

谷歌的网络演进为其服务和应用提供了强大的支持,包括搜索、广告、地图、YouTube 和云计算等。谷歌的网络演进也为其用户提供了更好的体验,包括更快的响应时间和更高的可靠性。

谷歌的网络演进是其成功的关键因素之一,谷歌将继续推动网络技术的创新和发展,以满足不断增长的服务和应用需求。


HN 热度 241 points | 评论 59 comments | 作者:sandwichsphinx | 19 hours ago #

https://news.ycombinator.com/item?id=42031169

  • 文章提到的 Jupiter 技术已有 10-15 年历史,但并未详细描述之前的技术,如 Watchtower
  • Google 的网络技术与整个软件栈深度集成,支持高吞吐量和低延迟的服务通信
  • Google 和 AWS 因避免使用 Nvidia 专有的 Infiniband 堆栈而面临 GPU 间通信的高延迟和低带宽问题
  • ConnectX NICs 通过硬件加速 RDMA,使 GPU 间通信无需大量 CPU 介入
  • Nvidia 通过 ConnectX 为超大规模数据中心提供专有网络解决方案,但 Google 可能将其用于特定的 Nvidia GPU 机器类型
  • Nvidia 的网络技术在超级计算机和 AI 训练的 GPU 集群中占据主导地位,而普通数据中心则使用其他品牌如 Cisco 或 Juniper 的以太网设备
  • 行业担忧 Nvidia 可能试图垄断数据中心硬件市场,如 CPU、主板、存储等
  • Nvidia 加入 Ultra Ethernet 联盟的指导委员会,参与开发开源替代方案
  • Nvidia 可能因高利润率而犹豫开发新产品,担心影响其市场资本化

If you need the money, don’t take the job #

https://bitfieldconsulting.com/posts/need-money

本文是作者 John Arundel 关于自己职业生涯的系列文章之一。作者分享了自己从雇员到独立开发者的转变过程中遇到的挑战,特别是关于如何与客户谈判和定价的问题。

作者认为,固定价格的合同不利于双方,因为客户会试图压低价格,而开发者则会试图快速完成项目以获得更多利润。相反,作者建议按小时收费,并提供详细的估算,以便客户了解项目的成本。

作者还分享了自己关于定价的经验,强调不要低估自己的价值,应该设定一个合理的价格,否则会让客户怀疑自己的能力。同时,作者也提到了“Chivas Regal 效应”,即客户往往会认为价格越高,服务质量越好。

最后,作者强调了作为独立开发者的重要性,需要不断学习和改进自己的技能,以便提供高质量的服务,并建立良好的口碑。


HN 热度 236 points | 评论 141 comments | 作者:gus_leonel | 11 hours ago #

https://news.ycombinator.com/item?id=42032638

  • 全职团队更有价值,即使需要支付培训费用
  • 咨询师的胜利往往是解决客户不愿公开的灾难,难以公开宣传
  • 咨询师可以提供技术支持,帮助公司解决技术瓶颈
  • 咨询师通常能获得比全职员工更高的收入,尤其是在某些地区
  • 全职员工可能因为内部政治问题而表现不佳
  • 咨询师能够快速为客户提供有价值的服务,尤其是在特定领域有深厚知识的情况下
  • 全职员工可能随时离开,且离职时难以找到替代者
  • 咨询师缺乏全职员工的福利,如股票、健康保险等,因此需要更高的时薪
  • 在某些市场,全职员工很难达到“富有”的状态,而咨询师则可能实现
  • 咨询师的最佳实践是帮助客户培养全职员工,即使最终会被替代

Matrix 2.0 Is Here #

https://matrix.org/blog/2024/10/29/matrix-2.0-is-here/?resubmit

Matrix 2.0 已经发布,标志着 Matrix 协议的重大升级。Matrix 的目标是提供一个开放、去中心化、安全的通信协议,用于构建出色的通信应用程序。

Matrix 2.0 的四大支柱:

  1. 即时登录、即时启动和即时同步:通过简化的滑动同步(Simplified Sliding Sync)API 实现,即时登录、启动和同步。
  2. 下一代身份验证:采用行业标准的 OpenID Connect 作为身份验证 API,取代 Matrix 的自定义身份验证 API。
  3. 原生 Matrix 加密多方语音/视频:通过 MatrixRTC 实现原生的、端到端加密的多方语音和视频会议。
  4. 隐形加密:通过 MSC4153 和相关规范实现隐形加密。

这些升级使 Matrix 能够构建出色的通信应用程序,具有即时登录、启动和同步的能力,支持下一代身份验证,提供原生加密多方语音/视频功能,并实现隐形加密。


HN 热度 227 points | 评论 91 comments | 作者:ptman | 12 hours ago #

https://news.ycombinator.com/item?id=42032387

  • 如果你想要托管一个 homeserver 但觉得需要托管的服务太多,可以尝试使用 matrix-docker-ansible-deploy,它提供了一种几乎无需干预的部署体验,并且文档详细。
  • 正在编写一个使用 docker-compose 的 Matrix 2.0 快速启动指南,设置环境变量后只需运行 docker compose up 即可完成部署。
  • Ansible 的主要好处是它会迫使你记录所有内容,而使用 docker-compose 工具则容易忘记初始设置。
  • 提供托管服务的 etke.cc 可以帮助管理 Matrix 服务器,无论是本地托管还是云端托管。
  • 对于 Matrix 的 Ansible 部署选项感到不知所措,觉得选项太多,不想尝试。
  • Element X 在 iOS 上的通知支持很好,有头像、分组和可靠的端到端加密消息通知,但 Android 版本缺少快速回复功能。
  • 作为 Element 的 CTO,应该对项目有全面的了解,而不是对功能做出假设。
  • 网络延迟问题在东南亚地区尤为严重,同步时间超过 10 秒,消息发送不畅,影响 iOS 通知。
  • 矩阵加密设置对用户来说非常复杂,Element 客户端在首次登录时会弹出大量模糊的“升级加密”提示,术语使用混乱。
  • Element X 项目团队正在努力改善加密用户体验,标准化术语,减少用户困惑。

Security flaws found in Nvidia GeForce GPUs #

https://www.pcworld.com/article/2504035/security-flaws-found-in-all-nvidia-geforce-gpus-update-drivers-asap.html

Nvidia GeForce GPU 安全漏洞警告

Nvidia 近日发布了一份安全公告,称其 GeForce GPU 驱动程序和其他软件中存在多个安全漏洞。这些漏洞可能允许攻击者

访问用户的系统,执行恶意代码,并窃取个人数据。

受影响的产品

  • Nvidia GeForce GPU
  • Nvidia RTX
  • Nvidia Quadro
  • Nvidia NVS
  • Nvidia Tesla

漏洞详情

  • 共有 8 个安全漏洞被发现,所有漏洞的严重程度均为“高”
  • 漏洞可能允许攻击者访问用户的系统,执行恶意代码,并窃取个人数据

修复措施

  • 更新 Nvidia 驱动程序至最新版本(566.03 for Windows,565.57.01、550.127.05 和 535.216.01 for Linux)
  • 使用 Nvidia Manual Driver Search 工具搜索和下载更新
  • 使用 Nvidia App 和 GeForce Experience 应用程序更新驱动程序

其他信息

  • Nvidia 没有明确说明这些漏洞是否已经被利用
  • 所有 GeForce GPU 用户都需要更新驱动程序以修复漏洞

HN 热度 199 points | 评论 133 comments | 作者:wumeow | 23 hours ago #

https://news.ycombinator.com/item?id=42030463

  • 在 Linux 中,“privileged attacker”可能指已经拥有某些权限(如 video 组成员)的攻击者,但尚未获得 root 权限
  • 这个漏洞可能允许本地 root 用户在共享 GPU 机器上突破虚拟化
  • 如果漏洞可从浏览器利用,那将是一个重大问题,但目前没有具体证据
  • 对于单用户机器且未被入侵的情况,这个漏洞不是问题,主要影响多用户系统、已感染恶意软件的用户和虚拟化主机
  • 使用浏览器或玩多人视频游戏时,可能会有未明确下载的代码运行,这些代码可能利用 GPU 驱动程序的漏洞
  • 浏览器不应扩展其功能范围,而应优先考虑安全性和用户体验
  • WebGPU 和任意套接字 API 的提案可能带来新的安全问题,类似于过去的 Java 和 Flash
  • 现代浏览器已成为主要的应用程序运行时环境,需要平衡安全性和用户体验
  • 一些用户更倾向于使用原生应用程序而不是 Web 应用程序,以获得更好的性能、用户体验和隐私
  • 浏览器作为“一切应用”的运行时,包括简单任务在内,可以避免用户需要切换不同浏览器来处理不同类型的网站和应用
  • 对于只浏览网站的用户来说,使用功能强大的浏览器显得多余,希望有更轻量级的浏览器选择

Eighty Years of the Finite Element Method (2022) #

https://link.springer.com/article/10.1007/s11831-022-09740-9

该网页是一篇关于有限元方法(FEM)的历史回顾文章。文章首先介绍了有限元方法的诞生背景,提到 1941 年 A. Hrennikof 和 R. Courant 分别发表了关于有限元方法的早期论文。文章接着讨论了有限元方法在 1941-1965 年期间的发展,包括早期的应用和理论基础的建立。

文章随后进入了有限元方法的黄金时代(1966-1991),讨论了这一期间有限元方法在结构力学、流体力学和热传导等领域的广泛应用。文章还提到了这一期间有限元方法的理论基础的进一步完善和计算机技术的发展对有限元方法的推动作用。

接下来,文章讨论了有限元方法在 1992-2017 年期间的大规模工业应用和材料建模的发展。文章提到了这一期间有限元方法在航空航天、汽车、建筑等行业的广泛应用,以及有限元方法在材料科学和工程中的重要作用。

最后,文章讨论了有限元方法的当前状态和未来发展方向。文章提到了有限元方法在人工智能、机器学习和数据分析等领域的潜在应用,以及有限元方法在解决复杂工程问题中的重要作用。

总的来说,该文章对有限元方法的历史发展进行了全面回顾,涵盖了从有限元方法的诞生到当前状态和未来发展方向的所有方面。


HN 热度 188 points | 评论 97 comments | 作者:sandwichsphinx | 1 day ago #

https://news.ycombinator.com/item?id=42028569

  • FEM 在实际应用中的进展并不如文章所述那样乐观,许多高级方法在解决实际问题时表现不佳。
  • 机械工程师希望从计算机科学角度重新学习 FEA,寻求更好的计算资源。
  • 建议从 FDM 开始学习,解决梁的伯努利挠度问题。
  • 推荐使用 FEniCs 作为学习起点。
  • 即使是 Arnold 的工作,FEEC 在 FEM 领域也未获得广泛 traction。
  • 神经算子可能在某些 FEM 应用领域发挥作用,但目前准确性不高,仅方向正确且速度快。
  • 建议关注 OpenFOAM 教程,使用有限体积法处理潜在的不连续性,更稳定准确。
  • 希望有人能写一篇关于如何在球体上建模浅水波方程的博客文章,从简单到复杂的方法。
  • 有限体积法通常用于流体流动问题,虽然可以使用有限元法,但较为罕见。
  • AI 语言模型可以生成相关内容,但找到数据集进行验证可能有难度。

Next Generation Out of Band Garbage Collection #

https://railsatscale.com/2024-10-23-next-generation-oob-gc/

Shopify 的 Ruby 团队最近开发了一种新的垃圾回收机制,旨在减少垃圾回收对应用程序延迟的影响。该机制通过禁用主要垃圾回收并在请求完成后手动触发垃圾回收来实现。

该团队最初尝试使用基于平均值的启发式方法来触发垃圾回收,但这种方法并不能完全消除主要垃圾回收对延迟的影响。因此,他们与 Ruby 核心开发者 Koichi Sasada 讨论了新的想法,并在 2024 年 3 月开发了一个概念验证。

新的垃圾回收机制使用了三个新的方法:GC.disable_major、GC.enable_major 和 GC.needs_major?。这些方法允许开发者禁用主要垃圾回收,并在请求完成后手动触发垃圾回收。

该机制已在 Shopify 的生产环境中部署,并取得了显著的效果。延迟的 p95、p99 和 p99.99 值显著降低,中位数延迟也降低了 5%。此外,服务延迟的平均值降低了 5%,p99 延迟降低了 10%。

该团队计划进一步优化垃圾回收机制,包括使用 GC.stat 中的启发式方法来触发次要垃圾回收。然而,由于次要垃圾回收速度较快,因此潜在的收益较小。


HN 热度 159 points | 评论 77 comments | 作者:ksec | 1 day ago #

https://news.ycombinator.com/item?id=42028833

  • Hack/PHP 的无状态函数核心使得每次请求的启动成本几乎为零,且请求结束后会销毁所有临时对象,减少了资源泄漏的风险。
  • Ruby-on-Rails 由于存在持久对象,仍需要垃圾回收机制。
  • 使用外部缓存组件(如 pgbouncer)可以解决语言层面上连接池的问题,减少每次请求建立新连接的延迟。
  • 无进程内缓存可以避免将新创建的对象放入长时间存在的集合中,减少老年代的写入和新旧对象之间的反向引用。
  • 通过显式指定对象的生命周期(请求范围或应用范围),可以创建更高效的垃圾回收机制,减少 GC 开销。
  • Rust 的生命周期概念可以作为解决对象生命周期管理问题的通用方案,但实现起来可能过于复杂。
  • 在 Rust HTTP 服务器中嵌入 Ruby 解释器,使用 Ruby DSL 编写代码,可能是一种结合两者优势的原型方案。
  • 进程内缓存虽然访问速度快,但需要考虑与其他进程共享缓存的问题。
  • 非托管语言可能是解决这类问题的另一种方案。

Ractor – a Rust Actor Framework #

https://slawlor.github.io/ractor/quickstart/

Ractor 是一个 Rust 语言的 Actor 模型库,基于 Tokio 构建。它提供了一种简洁的方式来创建和管理 Actor,支持消息传递、远程过程调用(RPC)和状态管理。

快速入门 #

要使用 Ractor,需要添加以下依赖到 Cargo.toml 文件中:

[dependencies]
ractor = "0.9"

定义 Actor #

创建一个 Actor 需要定义三个类型:State、Msg 和 Arguments。State 表示 Actor 的状态,Msg 表示 Actor 接收的消息类型,Arguments 表示 Actor 启动时的参数。

pub enum MyFirstActorMessage {
    PrintHelloWorld,
}

pub struct MyFirstActor;

#[async_trait::async_trait]
impl Actor for MyFirstActor {
    type State = ();
    type Msg = MyFirstActorMessage;
    type Arguments = ();

    async fn pre_start(&self, _myself: ActorRef<Self::Msg>, _arguments: Self::Arguments) -> Result<Self::State, ActorProcessingErr> {
        Ok(())
    }
}

处理消息 #

Actor 需要实现 handle 方法来处理接收到的消息。

async fn handle(&self, _myself: ActorRef<Self::Msg>, message: Self::Msg, _state: &mut Self::State) -> Result<(), ActorProcessingErr> {
    match message {
        MyFirstActorMessage::PrintHelloWorld => {
            println!("Hello world!");
        }
    }
    Ok(())
}

状态管理 #

Actor 可以维护内部状态,状态类型由 State 类型决定。

远程过程调用(RPC) #

Actor 可以通过 RPC 与其他 Actor 通信,RPC 消息类型需要实现 RpcReplyPort trait。

let hello_world_count = ractor::call_t!(actor, MyFirstActorMessage::HowManyHelloWorlds, 100).expect("RPC failed");
println!("Actor replied with {} hello worlds!", hello_world_count);

总结 #

Ractor 提供了一种简洁的方式来创建和管理 Actor,支持消息传递、远程过程调用(RPC)和状态管理。通过定义 Actor、处理消息、状态管理和 RPC,可以构建复杂的并发系统。


HN 热度 137 points | 评论 67 comments | 作者:todsacerdoti | 22 hours ago #

https://news.ycombinator.com/item?id=42030625

  • 监督机制是 OTP 框架的核心优势,Rust 缺乏这种架构指导
  • 预占式调度、实时系统检查/调试/修改是 Erlang 的亮点,这些特性使得 Erlang 非常酷
  • 使用 Rust 自定义实现类似 Actor 模型时,可以通过结构体和消息枚举来管理内部可变性
  • Rust 的 Actor 框架如 Ractor 使用单独的状态类型而不是可变的 self 引用,以保持安全性和规范性
  • 单一枚举消息模型不如泛型 Handler 特质模型灵活
  • Rust 的 Actor 框架在处理长时间运行的任务和异步调用远程服务器方面不如 Actix 方便
  • Ractor 支持分布式部署,但其集群库尚未达到生产就绪状态
  • Erlang/OTP 提供了强大的分布式功能,节点命名和 PID 唯一性使得跨节点消息传递变得简单
  • 使用 State 类型可以更好地管理 Actor 的状态,而 handle(&mut self)方法则可能失去某些安全性保障

Spann: Highly-Efficient Billion-Scale Approximate Nearest Neighbor Search (2021) #

https://arxiv.org/abs/2111.08566

SPANN:高效的亿级近似最近邻搜索

摘要:

本文提出了一种高效的近似最近邻搜索算法,称为 SPANN。该算法针对大规模数据库,采用内存-磁盘混合索引和搜索系统,实现了高效的近似最近邻搜索。SPANN 将聚类中心点存储在内存中,将大型 posting 列表存储在磁盘中,通过有效地减少磁盘访问次数和检索高质量的 posting 列表,实现了高效的近似最近邻搜索。在索引构建阶段,采用了层次平衡聚类算法来平衡 posting 列表的长度,并通过添加闭包点来增强 posting 列表。在搜索阶段,使用了查询感知的方法来动态地剪枝不必要的 posting 列表。实验结果表明,SPANN 比当前最好的近似最近邻搜索算法 DiskANN 快 2 倍,达到相同的召回质量 90%,同时内存成本相同。SPANN 可以在 32GB 内存成本下,达到 90% 的召回率 @1 和召回率 @10,仅需一毫秒。

关键词:近似最近邻搜索、内存-磁盘混合索引、层次平衡聚类、查询感知剪枝。

相关链接:


HN 热度 116 points | 评论 28 comments | 作者:ksec | 1 day ago #

https://news.ycombinator.com/item?id=42028873

  • SPANN 在生产环境中表现出色,PlanetScale 和 turbopuffer.com 均有使用
  • SPANN 的商业版本价格较高,对于小型项目或自托管需求,Postgres+pgvector 是更经济的选择
  • SPANN 的资源费用实际上是所选配置的三倍,因为默认包含一个主服务器和两个副本,有助于数据持久性和查询负载分担
  • 相比于自托管数据库,使用 SPANN 的成本低于雇佣专职数据库管理员的费用
  • 目前有许多即用型的向量数据库,SPANN 并非唯一选择
  • 对于 300 维的数据,最近邻搜索仍然有效,因为实际数据通常集中在低维流形上,且相对距离依然保持有意义的关系
  • 使用 numpy 进行内存中的精确最近邻搜索对于 100k 项 300 维的数据集来说是可行的,因为数据量较小
  • Annoy 和 Usearch 是两个快速且有效的最近邻搜索库,适用于 ARM Macs
  • Spotify 使用的 voyager 也支持 Mac ARM,是另一个不错的选择
  • 对于 100k 项 300 维的数据集,如果不需要极高延迟要求,pgvector 也能提供良好的性能
  • SPANN 的开源实现可以在 ann-benchmarks.com 上找到,项目名为 ‘sptag’
  • 有需求将 SPANN 打包成易于自托管的 OS 版本,方便独立开发者使用