Redis之父:AI 水平不错,但远落后人类智能,开发者跟评:业界存在大量能力较弱的开发者,许多情况下,AI可以超越他们
Redis 之父 Salvatore Sanfilippo 近日分享了自己的一次研发经历并直接表达了自己的观点:人类程序员仍比大模型更出色。
“因为我们能够真正打破常规、设想出一些奇特且并不精确、但就是更有成效的解法,而这对大模型来说则极其困难。”
Antirez 的分享迅速引发广大开发者的激烈讨论,博客地址:https://antirez.com/news/153
Antirez:AI 水平不错,但远落后人类智能
“今天我要分享一个人类为何仍比大语言模型更有优势的小故事。
我并不反对 AI 或者类似的技术成果,持续关注我的朋友都知道。我经常用大模型,现在也一样。
之所以会有这段故事,是因为我想测试自己的想法、进行代码审查、看看 AI 会不会有比我更好的灵感、探索点专业范围内的更多可能性之类。”
Antirez 在开篇写道,并直接抛出了结论:
总之,我得出的结论是:虽然目前的 AI 水平不错、颇具实用性,但仍然远远落后于人类智能。我知道这是个很有争议的结论,容易在网上挨喷,但……我的感受就是如此。
但即便如此:当前 AI 水平虽然实用且出色,却仍与人类智能有着惊人差距。鉴于近来已无法进行理性讨论,我认为有必要强调这一点。
并且他还给出自己使用 AI 的经历……
最近 Antirez 正在为 Redis 开发 Vector Sets,打算修复一个复杂的 bug:在离开 Redis 期间,Antirez 的同事们引入了防止数据校验通过但 RDB 和 RESTORE 负载损坏的功能。
此功能会默认关闭,只是为需要的人多提供一层更强的安全保障。
但有一个比较大的问题:为了让 HNSW 能够快速保存到 Redis RDB 并加载回来,Antirez 序列化了 graph 表示,而非元素—向量对,否则就得把数据重新插入 HNSW,这会把速度拖慢 100 倍!总之,Antirez 将各节点与其他节点间的所有链接存储成整数,然后把它们解析成指针。
这是个很实用的技巧,效果也不错。然而,在将这种处理方法跟表示的随机损坏、还有 Antirez 对于 HNSW 的改进结合起来,强制各节点间建立互换链接(Antirez 自己编写了 HSNW 实现,其中包含许多有用的功能,但不少功能的实现都离不开互换链接)时,则可能发生以下情况:
- 加载损坏的数据,该数据表明 A 链接到 B,但 B 不再链接到 A(节点 ID 损坏)。
- 删除掉节点 B:由于互换性发生违反,Antirez 和同事们不会清除从 A 到 B 的链接。
- 之后在扫描该 graph 时,一旦到达 B 时就会遇到 A:释放后重用……
因此在加载数据之后,Antirez 需要检查每个链接是否互换。在一般情况下,结果应该是 O(N^2),代表着对于每个节点,开发人员需要扫描所有层级、在每个层级上扫描该节点的全部邻居,再通过扫描该层级的链接来检查其是否同样链接至该节点。
“这显然不好。尽管如此,在验证自己思路的可行性过程中,Gemini 仍然发挥了重大作用。所以……我或许应该把它当成一位‘足够聪明的副手’看待,在讨论中逐步摸索出更好的答案。”
开发者:盲目自信的“AI 橡皮鸭”
“这与我的体验相符。实际上,我觉得大模型助手对我来说很大一部分价值在于,它像一个有一定智能的‘橡皮鸭’一样可以与我交流。
现在这个‘鸭子’偶尔还会提出异议,甚至有时还能帮我完善思路。”
小黄鸭调试(rubberducking)是一种通过用口头或书面自然语言清晰描述问题来调试代码的方法。
其名称来源于《程序员修炼之道》中的一个故事,故事中程序员会随身携带一只小黄鸭,强迫自己逐行向鸭子解释代码,以此来调试代码。
“我也有过类似的想法”有其他开发者赞同道,“在结对编程时,有一个 AI 橡皮鸭可以让你倾诉和交流想法会很棒(这样你就不会在同事面前显得很笨,也不会浪费他们的时间)。
”这个开发者做了一个支持自带 API key 的 VSCode 插件,它使用了 OpenAI 的实时 API,可以和一个橡皮鸭进行互动式语音对话。
可以看出,一些开发者已经可以把大模型当编程助手看待,但这个助手仍然让人“闹心”。
“这是一只极其自信的鸭子,其自信程度与它的能力完全不成比例。
我已经看到太多的人因为与它交谈而误入歧途。”开发者 marcosdumay 指出。
有人跟贴赞同道,“这正是我很快关掉 JetBrains AI 助手的原因:多行补全功能严重干扰了我的思路,尤其是当它提供看起来正确、实际错误的建议时。
为了判断这些建议是否正确而停下来分析,会彻底打断我的思路。”
还有开发者表示,大模型对其来说不是“橡皮鸭”,而是“错误答案”。
“我让大模型做一些简单但繁琐的事,它却错得离谱。然后我被气得不行,都有劲儿自己动手干了。”
如下是一些开发者对博客的评论:
在这里,码哥也分享一个同事使用 AI 学习 Redis 的经历。
张无剑居安思危,想系统化的学习 Redis 技术,提高自己的竞争力。网络上铺天盖地的宣传 ChatGPT 强大,就计划用 ChatGPT 来梭哈一把。
在询问之前,张无剑花了很多时间研究如何更好的给出提示语,因为没有好的提示语,ChatGPT 给出的答案可能有点智障。
张无剑再次绞尽脑汁想了一个提示语喂给 ChatGPT。
假如你是一个资深 Redis 7.0 技术培训老师,我是你的学生。我根据上文你列出的学习目标 “Redis 基础入门”,学习内容为“Redis 数据类型 List 底层实现原理和实战技巧” ,我的目标是掌握这些数据类型的底层实现原理和实战技巧,原理讲解要深入一些,我的目标是成为 Redis 高手。
张无剑内心嘀咕道:这也太简单了,看起来好像说明了底层原理,但就总觉得好像还不够深入,只能大概了解 Redis 的 List 数据类型,根本成不了 Redis 高手,花了这么多时间,就这???
不要过度依赖 AI
张无剑遇到的问题在于以下几点。
- 无图无真相,无法理解 List 底层有两种数据结构(Linkedlist、Ziplist)到底是啥样的。
- 无法理解为什么 List 要用两种数据结构(Linkedlist、Ziplist)保存数据。
- 语言生硬,也就是从我们说的 AI 味太冲,学习本就是件痛苦的事情,在这样的枯燥文字中还如何学得下去。
- 最大的问题在于不知 ChatGPT 的回复到底是不是对的。
- 还要花费大量时间来调教 ChatGPT 纠正错误,可本身自己是来学习的,如何做到纠正呢……
看到张无剑使用 ChatGPT 来学习 Redis,快急死了。因为 ChatGPT 回复的内容存在错误!再继续学习下去的话怕是容易走火入魔!