这周只收一条。
不是没别的动静。是其它几条我都讲不成一句话,硬收进来就是凑数。
先看这组数:CodeBLEU,两种方法,都是 91%。
一边是普通 RAG,把代码切碎按相似度捞片段。一边是论文提的 HCRG,把代码之间的结构关系也一起带上。按 91 分这个读数,两者做得一样好。
往下再翻三页:API 幻觉率,一个 56.4%,一个 16.2%。
同一个任务,一个超过一半的 API 调用是模型自己编的,另一个不到六分之一。指标说它们差不多。
这篇论文值得收,就是因为它把这层窗户纸捅破了。CodeBLEU 量的是字面重叠,不是这段代码能不能用。语法漂亮的废话,它照样给高分。
顺带交代一下来历:九月十一号挂到 arXiv,cs.AI,11 页,两张图三张表,七个人。一小时能读完。信息量不大,省得有人问。
论文自建了 7 项指标
现成的指标测不出区别,作者就自己搭了一套,7 项,全落在软件工程那一侧。三个我最关心的:API 幻觉率、依赖解析质量、父子节点一致性。
三项全部大幅变动。对比之下 CodeBLEU 一动不动。
一个指标在你最在乎的维度上一点反应都没有,它就不该出现在验收标准里。这条比论文本身有用。
56.4% 是什么概念
白话说,超过一半的接口名看着像真的,编译才知道没有。它不是语法错,是"这个函数根本不存在"。
对普通人就一句提醒:AI 写的代码别裸交,尤其是接外部接口那部分。它编得越像真的,你越不容易发现。
普通 RAG 是怎么断链的
结构化代码有个坑。按相似度捞回来的片段是孤立的,继承链、调用关系、父子关系,向量那一层不管这些。捞回来一堆单看都对、拼起来接不上的函数块,编译就挂。
白话版:依赖解析质量从 34.8% 到 65.9%。原来捞回来的片段里大概三分之一能接上,现在过了六成。父子一致性从 26.7% 到 45.5%,涨了,但还不到一半。
这两个数才是这期真正该记住的。
代价那一栏
复杂度一致性:71.6% 掉到 46.7%。
Docstring 保留率:67.0% 掉到 61.0%。这个是小数,先忽略。
第一个不能忽略。论文的解释是,上下文铺得太满,模型开始防御性过度工程。翻成白话,把整棵结构树都塞给它,它不踏实,自己加一堆多余的判断分支。
这里我偏一句。我不太认这是 Graph RAG 的固有代价。上下文塞太满、模型自作聪明,这现象在别处见得多了,本质是喂料的问题,不是方法的墙。论文老实把这数列出来反而加分,但谁要拿它当"这条路走不通"的证据,那就是读反了。
AST 到 Spanner 那一段我只看懂一半
流程大致是:用 tree-sitter 抽语法树,把架构边映射到 Spanner 的 Property Graph,再序列化进 Gemini 的 Context Cache,翻译时按父节点优先的顺序来。
中间那步的映射规则,论文给了三张表,我没细读。先放在这里,等我吃透了再补一句。
这套东西的主场在哪
遗留单体拆微服务,翻译量按几十万行算。这种活里,"少瞎编"比"翻得漂亮"值钱得多。拿代码的整洁度换正确率,这笔账划算。论文自己也是这个结论。
我一开始想把这期写成"Graph RAG 是更强的 RAG"。写到一半觉得不对。它不是更强,它是另一种取舍。
所以你只是让 AI 帮你写个小脚本,这套东西用不上,别为了追新去折腾图数据库和上下文缓存。工具是好工具,用错场景一样白搭。
本周就这些。
上面有任何一条你试过、或者觉得我讲错了,欢迎告诉我。讲错的我补,没讲清的我改。
下周见。
