最近有两件事让我注意到了“递归”这个词。
首先,Meta FAIR 研究总监田渊栋加入一家starup公司RSI,公司全名 Recursive Superintelligence——直译过来是"递归超级智能"。这家成立才四个月、不到三十人、连产品都还没有的公司,拿了 6.5 亿美元融资,估值约 46.5 亿美元,GV 和 Greycroft 领投,英伟达和 AMD 都进去了。它要做的事,用他们自己的话说,是造一个能"自主发现知识、持续优化自己、在一个开放的循环里不断进化"的 AI 系统。
另外我最近在学 RAG(检索增强生成),学习到一种文档切块的方法叫递归切分(recursive chunking)。
一个是切文档的小工具,一个是 46 亿美元押注的"造神"野心。可它们都用了同一个词:递归。
一、递归,先理解递归
程序员圈子里有个老笑话:
「如何理解递归?」 「先理解递归。」
听起来像废话,但它精准地戳中了递归的内核——一个东西,用它自己来定义自己。
它有两个缺一不可的零件:
少了第二个零件,你会查字典查到天荒地老——程序里这叫栈溢出(stack overflow)。
这里要划清一条最容易混淆的界线:递归不是循环。
往下交的过程在"挖坑",触底之后是在"填坑"。坑挖多深,答案就要往回传多少层。这个一层层传回来的动作,是递归真正的灵魂,也是后面所有故事的关键。
二、递归的三张面孔
把这个内核放大,你会在 AI 里看到递归的三种长相,从浅到深。
第一张:算法递归。 最字面的那种——一个函数,在执行过程中调用了它自己。
第二张:结构递归。 数据本身长得"自相似":一份文档由章节构成,章节由段落构成,段落由句子构成,句子由词构成。文件夹里套着子文件夹,评论下面挂着回复的回复。同一种结构在不同尺度上重复出现,这种数据天生就该用递归来处理。
第三张:元级递归,也就是"自指"。 这是最深的一层。前两种是"函数处理数据",而这一种是系统把自己当成处理对象——不是改进某个东西,而是去改进"改进自己的那个能力"。
三、RAG 为什么要"递归地"切
先说 RAG。它的原理一句话:让大模型回答问题前,先去一个知识库里检索相关资料,再带着资料作答,这样能少胡说。
但知识库里的长文档,必须先切成小块(chunk)才能建索引、做检索。最笨的切法是按固定字数硬切,比如每 500 字一刀。问题立刻就来:语义根本不尊重字数边界——一刀下去,一句话被劈成两半,一个完整的论证被拦腰截断。检索出来的,是残缺的语义碎片。
递归切分就是来解决这个"粒度"问题的。它的逻辑是分层降级——以 LangChain 那个经典的 RecursiveCharacterTextSplitter 为例:
先试着按段落(空行)切; 块还是太大?对这个块,递归地改用换行再切; 还太大?再递归地用空格切; 实在不行,最后才按单个字符硬切。
每一层都优先保住最大的语义单位,撑不住了才退到更细的粒度——这是不折不扣的递归。
更漂亮的是它的进阶版,比如 RAPTOR 这类层级式 RAG(对应第二张面孔):把原始小块聚类、自动摘要,生成"段落级摘要";再把这些摘要聚类、再摘要,生成"章节级摘要";一直往上,直到一个"全文摘要"。摘要的摘要,聚类的聚类,层层向上,长成一棵树。检索时从粗到细导航:先用顶层摘要定位到大致区域,再下钻到具体段落。
它的妙处在于:"检索得精确"和"上下文给得完整"这对老矛盾,被拆解到了树的不同层级上——你可以用最细的小块去精确命中,再把它所在的大块整段返回。一个长期困扰 RAG 的难题,被递归的层级结构化解了。
四、AI 自进化
现在回到田渊栋加入的RSI。把它的野心写成一行,就是:
模型[n+1] = 改进(模型[n])新一代模型,由当前这一代模型亲手造出来。模型以自己为操作对象,生产出更强的自己。 这就是递归自我改进(Recursive Self-Improvement, RSI)。公司的名字,本身就是它要做的事。
这事并非凭空。受控的、局部的版本,业界早就跑通过:
这些都是开在笼子里的"自我进化"。而 Recursive 想做的,是把笼子拆掉,让这个循环自己跑起来、开放地跑下去。他们的路线图甚至放话:第一阶段先造一个相当于"五万名博士"算力的系统,去自动化 AI 科研本身。
值得玩味的是这支团队的气质。CEO 是 You.com 创始人 Richard Socher,联合创始人里有 ViT(Vision Transformer)的作者,还有 Jeff Clune——他恰恰是"开放式进化"(open-endedness)这一研究方向的旗手;顾问是写了那本 AI 圣经《人工智能:现代方法》的 Peter Norvig。公司愿景里那个词,"evolve in an open-ended loop",不是随口一说。
那么,为什么一提到这种"自己改进自己"的 AI,安全研究者就高度紧张?
答案,藏在第一节里那个被我反复强调的细节上。
还记得吗:递归的灵魂,是一层层把答案传回来。这意味着,每一层的结果,都建立在下一层结果的正确之上。递归要想最终正确,每一层调用都必须守住某个不变量——一旦中间某一层悄悄破坏了它,后续每一层都会在错误的地基上继续盖楼,而且越盖越快。
对自我进化的 AI 来说,这个必须守住的不变量,就是对齐——模型的目标和价值观,是否始终和人类的预期一致。
每一轮自我改进,就是一次递归调用。如果某一轮改进,在变强的同时悄悄偏离了对齐,那么接下来的改进不仅不会纠偏,反而会在偏离的方向上加速狂奔。没有守住的不变量,没有可靠的"触底条件",这个递归可能收敛到一个极其强大、但目标早已面目全非的系统。
1965 年,数学家 I.J. Good 给这个过程起了个名字——"智能爆炸"。他写道:第一台超越人类的智能机器,将能设计出更好的机器;而这,"是人类需要做出的最后一项发明"。这,就是今天这场 46 亿美元豪赌背后,那条幽深的历史伏线。
五、同一个动作,两副面孔
递归的全部力量和全部凶险,都来自同一处:每一层的输出,成为下一层的输入,而且每一层施加的操作完全相同。
正因如此,它能把庞大的复杂性层层分解——这是它的力;也能把微小的错误层层放大——这是它的险。
同一个动作,在一份文档上跑,和在一个会思考的系统上跑,是两件分量截然不同的事。
六、最后,听个故事
道理讲到这儿,其实还是抽象。我把"递归"这个概念,喂给了卡神那套专门写寓言的 prompt——它的规矩是:全程不许出现术语,要靠一个具体场景把意思裹住,临到结尾才让你隐约反应过来讲的是什么。
它写出来的故事是这样的:
星期二下午,那封信送到了她手上。十一页,机打,墨迹还有点新。委托人要周五拿到译稿。
她读到第三页停下来。页脚附近有一句:依照事故前的约定处理。她查行业词典,查那个年代那个地区的专用术语汇编。什么也没有。这个短语不存在于任何参考书里——它只存在于某段她尚不知晓的往来里。
她给档案处打了电话。两家公司已经通信十一年。她申请调取全部信件。
两天后,一只箱子送到。里面是四十一封按时间排好的旧信。她从最开头读起。
第一封信几乎什么都不是。两个陌生人,一份措辞谨慎的提案。她四十分钟就译完了——译完时,她清楚地知道这两个人想从对方那里得到什么,也只知道这些。
第二封,引用了第一封的内容。手边有第一封,引用之处便迎刃而解。第三封,引用了前两封。到第十封时,信里已经长出一套私有的缩写和暗语——它们在任何词典里都查不到,唯一的定义就藏在前面九封信里。可到第十封时,她手里正好已经攥着那九封了。每读完一封,它都变成了读懂下一封的前提。
第三十五封信里,那次事故第一次出现。没有任何解释。也不需要解释。她已经知道了。
第三天傍晚,她把第四十二封——那封被委托的信——在两小时内译完了。
委托人周五上午来取。"三天,"他看了眼费用。
她把译稿放到那摞旧信最上面。信按顺序叠着,最旧的压在最底下。"第一封,"她说,"花了我四十分钟。"
他拿起最上面那封,扫了一行:"这封倒写得清楚,语言很平白。"
"是的。"
他看着那一摞信,看着压在最上面那封下面的四十一封,以一种刚刚明白了什么的神情沉默着。
"你从哪儿开始的?"他问。
她指了指最底下。
他点点头,拿起第四十二封信——小心翼翼地,像是它比一分钟前更重了——走了。
如果你跟着前面的内容读到这里,应该已经会心一笑了。这个故事里,每样东西都对得上号:
尾声
递归之所以迷人,是因为它用同一个动作,把"大"和"小"接到了一起:切一份文档,和造一个超级智能,剥到最底层,是同一句话——
把自己交给更小的自己,直到小到能直接回答,再一层层带回来。
上面的寓言故事之所以能有结局、那位译者之所以能在第三天交稿,只因为存在一封"不必再往下查"的第一封信。
但今天我们还不知道的是:在一个不断自我进化的 AI 那条往下挖的链条上,到底有没有那样一封"第一封信"。
夜雨聆风