← 最新论文
💻 computer science

Automating Database-Native Function Code Synthesis with LLMs

本文提出了名为 DBCooker 的 LLM 驱动系统,通过函数特征分析、混合代码生成及三级渐进验证等创新机制,有效解决了数据库原生函数合成中上下文缺失与幻觉问题,在多个主流数据库上显著提升了代码生成的准确率。

原作者: Wei Zhou, Xuanhe Zhou, Qikang He, Guoliang Li, Bingsheng He, Quanqing Xu, Fan Wu

发布于 2026-04-09
📖 1 分钟阅读☕ 轻松阅读

原作者: Wei Zhou, Xuanhe Zhou, Qikang He, Guoliang Li, Bingsheng He, Quanqing Xu, Fan Wu

原始论文采用 CC BY 4.0 许可(http://creativecommons.org/licenses/by/4.0/)。 这是对下方论文的AI生成解释。它不是由作者撰写或认可的。如需技术准确性,请参阅原始论文。 阅读完整免责声明

这篇论文介绍了一个名为 DBCooker 的智能系统,它的核心任务是教人工智能(LLM)如何像数据库专家一样,自动编写数据库内部的“原生函数”代码

为了让你更容易理解,我们可以把数据库想象成一个巨大的、高度精密的“超级厨房”

1. 背景:为什么我们需要 DBCooker?

  • 超级厨房的菜单(数据库函数): 现在的数据库(如 PostgreSQL, SQLite)就像一家拥有成千上万道菜(函数)的超级厨房。比如“计算日期”、“取平方根”、“处理 JSON 数据”等。
  • 新菜的需求: 随着业务发展,厨房需要不断推出新菜(新功能),或者把其他餐厅(旧数据库)的招牌菜搬过来。
  • 人工的困境: 以前,每加一道新菜,都需要一位**顶级大厨(人类专家)**亲自下厨。这非常难,因为:
    • 规则复杂: 厨房有严格的规矩(比如必须用特定的锅、特定的调料顺序)。
    • 依赖众多: 做一道菜可能需要调用其他 10 种半成品(内部函数),如果引用错了,整道菜就废了。
    • 耗时耗力: 人工编写和调试这些底层代码,既慢又容易出错,甚至需要几十个小时。

现状问题: 虽然现在的 AI(如 Claude Code)很聪明,能写普通的代码,但让它直接去这个“超级厨房”里做菜,它经常**“幻觉”(乱编规则)、“找不到锅”(文件路径错误)或者“忘了放盐”**(漏掉关键引用),导致做出来的菜根本没法吃(编译失败或运行报错)。

2. DBCooker 是什么?

DBCooker 就像是一个**“超级智能厨房助理”。它不仅仅是让 AI 瞎写代码,而是给 AI 配备了一套专业的厨房工作流**,让它能精准地做出符合数据库要求的“原生函数”。

它的工作流程分为三个主要步骤,我们可以用**“点菜 -> 备菜 -> 试吃”**来比喻:

第一步:功能画像(Function Characterization)—— “读懂菜单,理清食材”

在动手做菜前,DBCooker 先帮 AI 把任务拆解清楚:

  • 收集菜单(声明收集): 它去查官方文档和数据库内部的“登记簿”,搞清楚这道新菜叫什么、需要什么原料(输入参数)、最后端出来是什么(返回值)。
  • 拆解工序(单元识别): 很多数据库函数其实是由好几个小步骤组成的。比如“截断日期”这个功能,可能对应“处理时间戳”和“处理时间间隔”两个不同的内部小任务。DBCooker 能自动识别出需要写哪几个小任务,而不是让 AI 对着一个巨大的空白文档发呆。
  • 寻找半成品(引用分析): 它会在厨房里找出哪些现成的“半成品”(内部函数、宏定义)可以直接用。比如,它知道“输出结果”可以用一个现成的宏,不用自己从头写。

第二步:代码合成操作(Function Code Synthesis)—— “按图索骥,精准烹饪”

有了清晰的计划后,DBCooker 指导 AI 开始写代码:

  • 写草稿(伪代码计划): 不让 AI 直接写最终代码,而是先写一个“骨架”或“大纲”。比如:“第一步在这里调用 A 函数,第二步在这里处理 B 数据”。
  • 填空模式(Fill-in-the-blank): 这是最巧妙的地方。DBCooker 发现很多代码结构是相似的。它会把 AI 的工作变成**“填空题”**。比如,它已经写好了 90% 的代码框架,AI 只需要把中间最核心的逻辑填进去。这大大降低了 AI 犯错的概率。
  • 动态调整(自适应): 如果 AI 填错了,或者发现之前的计划行不通,系统会自动降低“填空”的概率,让 AI 切换回“从头写”的模式,或者尝试其他路径,就像厨师发现食材坏了就换一种做法。

第三步:三级验证(Three-Stage Validation)—— “层层试吃,确保美味”

代码写完后,DBCooker 不会直接发布,而是进行三次严格的“试吃”:

  1. 语法检查(看卖相): 代码写得通不通?有没有拼写错误?(就像看菜摆盘是否整齐)。
  2. 合规检查(看规矩): 代码是否符合数据库内部的严格规范?有没有用错锅具?(就像检查是否用了违禁添加剂)。
  3. 语义检查(尝味道): 运行测试用例,看结果对不对?(就像真的尝一口,看咸淡适不适合)。
    • 如果有任何一步失败,系统会把错误反馈给 AI,让它**“返工”**,直到完美为止。

3. 为什么 DBCooker 这么厉害?(核心创新)

  • 不是“盲人摸象”,而是“有的放矢”: 普通的 AI 像是一个在厨房里乱翻的学徒,找半天找不到锅。DBCooker 直接告诉 AI:“去那个红色的架子拿那个蓝色的锅”。
  • 不是“从零开始”,而是“站在巨人肩膀上”: 它利用数据库里已有的代码片段(引用),让 AI 只写最核心的部分,既快又准。
  • 不是“一次定生死”,而是“动态进化”: 它有一个“记忆库”,记得以前做类似菜品的成功经验。如果这次做“数学函数”失败了,它会参考以前做“数学函数”的成功路径来调整策略。

4. 成果如何?

论文在三个主流数据库(SQLite, PostgreSQL, DuckDB)上进行了测试:

  • 准确率飙升: DBCooker 的成功率比目前最先进的 AI 工具(如 Claude Code)平均高出 34.55%
  • 能造新菜: 它甚至成功为 SQLite 添加了 4 类原本没有的新函数,这些函数在其他数据库里有,但 SQLite 以前没有,DBCooker 成功把它们“移植”并“适配”过来了。

总结

DBCooker 就像是给 AI 穿上了一套数据库专家的“外骨骼装甲”。它不再让 AI 盲目地猜测和试错,而是通过拆解任务、利用现有资源、严格验证这三步走,让 AI 能够像人类专家一样,高效、准确地为数据库编写底层核心代码。

这不仅仅是让 AI 写代码,更是让 AI理解并遵守复杂系统的规则,从而真正解决数据库开发中的“硬骨头”问题。

您所在领域的论文太多了?

获取与您研究关键词匹配的最新论文每日摘要——附技术摘要,使用您的语言。

试用 Digest →