我们识别出分块(将文档划分为可搜索单元的过程)的问题,该问题在基于检索增强生成 (RAG) 的大规模代码生成中起着至关重要的作用,并提出了一种利用抽象语法树 (AST) 的结构感知分块方法来解决这个问题。该方法在遵循大小约束的同时,以递归方式拆分 AST 节点并合并兄弟节点,从而创建跨语言和任务语义一致的自包含单元。该方法在各种代码生成任务中均展现出性能提升,例如在 RepoEval 检索中将 Recall@5 提升了 4.3 个百分点,在 SWE-bench 生成中将 Pass@1 提升了 2.67 个百分点。