当前位置: 首页 > news >正文

代码库知识库系列(04):三种 Chunking 策略对比——AST 精确分割反而输了?

一个几乎所有人都会犯的错

要把代码切成块(chunk)喂给向量模型,最"专业"的做法是什么?

大多数工程师的第一反应是:按 AST(抽象语法树)切,一个函数一个 chunk。理由很硬——函数是最自然的语义单元,AST 精确对齐了语义边界,不会把一个函数拦腰截断。相比之下,按固定行数硬切(比如每 20 行一块)显得又土又蠢,会把函数切得七零八落。

听起来无懈可击。可实验数据把这个直觉打了个响亮的耳光。

在同一份 266 行的 Python 代码上,我跑了三种 Chunking 策略。结果是:AST 函数级分割的得分最低。那个"又土又蠢"的固定行分割,反而拿了满分。

这不是随机噪声,背后有一个非常值得挖的机制。


三种策略

数据集:266 行 Python 代码,涵盖认证、数据库、缓存、支付、通知 5 个模块,共 27 个函数。Embedding 模型统一用bge-large-zh-v1.5,评估用 12 个自然语言查询。

三种切法:

策略 1:固定行分割(每 20 行,overlap=3)

不管代码结构,每 20 行切一刀,相邻 chunk 重叠 3 行防止边界信息丢失。

Chunk 1: 第 1-20 行 Chunk 2: 第 18-37 行 ← 和上一块重叠 3 行 Chunk 3: 第 35-54 行 ...

策略 2:文件级分割(整个文件一个 chunk)

简单粗暴,整份代码就是一个 chunk。

Chunk 1: 第 1-266 行 ← 全塞进去

策略 3:AST 函数级分割(一个函数一个 chunk)

用 Python 的ast模块解析语法树,按函数定义精确切割。

Chunk 1: def validate_jwt_token(...) 第 9-18 行 Chunk 2: def hash_password(...) 第 20-28 行 Chunk 3: def create_payment_intent(...) 第 ... ...

先看一眼固定行分割"土"在哪里。以validate_jwt_token这个函数为例(第 9-18 行,共 10 行):

函数 'validate_jwt_token'(第 9-18 行,10 行) 被切进 2 个 chunk: Chunk 第 1-20 行: 包含函数第 9-18 行(10/10 行) Chunk 第 18-37 行: 包含函数第 18-18 行(1/10 行) 问题:没有任何一个 chunk 包含完整的函数。 一个关于 'validate_jwt_token' 的查询会检索到一段残缺的实现。

看到没?函数的最后一行(第 18 行)被切到了下一个 chunk 里。这正是固定行分割最被诟病的地方——它不认识函数边界,说切就切。

按理说,这种残缺应该会拖累检索效果。AST 分割每个函数都完完整整,怎么看都该赢。


运行结果

Strategy Chunks AvgLen R@3 R@5 vs AST R@5 ──────────────────────────── ─────── ─────── ─────── ─────── ────────── 1_fixed_lines_20 16 755 0.917 1.000 +0.042 2_file_level 1 10270 1.000 1.000 +0.042 3_ast_function 27
http://www.jsqmd.com/news/1317674/

相关文章:

  • Stata数据处理核心:destring与encode命令实战指南
  • Kaggle数据科学平台:从竞赛到生产力引擎的实战指南
  • BetterGI终极指南:5大核心功能彻底解放你的原神游戏时间
  • 2026 年现阶段,惠山正规的麦田压地机供应商有哪些,收麦季没人再用脚踩?这玩意儿为啥能让麦粒产量再提一成? - 品质体验官
  • 2026优选:江苏峡谷漂流玻璃滑道怎么选?景区全维与避坑指南 - 装修教育财税推荐2026
  • React Native鸿蒙跨平台开发:消息详情页实战指南
  • 2026精选:抚州成人学历提升机构哪家专业?靠谱品牌深度解析 - 装修教育财税推荐2026
  • 电梯门开关控制原理:从机械结构到安全逻辑的深度解析
  • 2026 年现阶段,万安专业的吉安土灶油烟机定做厂家哪家好,炒完一整桌菜,厨房居然没沾半点油?吉安人新发现的这玩意儿太顶了。-腾米厨电 - 行业甄选官
  • 从零构建临床预测模型:Python实战术后并发症风险预测
  • 2026年武汉地区华为AIDC与数据中心建设服务商甄选参考 - 优质品牌商家
  • ZenlessZoneZero-OneDragon:基于事件驱动状态机的《绝区零》全自动框架深度解析
  • Jetson边缘AI设备管理实战:Allxon Agent安装与Portal配置指南
  • 2026 年至今,永德专业的学校食堂订餐小程序工厂有哪些,再也不用挤破头抢饭,它让高校师生用餐效率翻了三倍,你试过吗? - 企业推荐管【认证】
  • 2026年优选:哈尔滨清洁能源取暖企业怎么选才靠谱 - 装修教育财税推荐2026
  • 2026年平板瓦厂家怎么选?四川地区实力厂商推荐与选购指南 - 优质品牌商家
  • 安克140W氮化镓充电器深度拆解:PD 3.1协议与GaN技术如何支撑高端溢价
  • 免费开源Gerber查看器gerbv:你的PCB设计质量守护神
  • PID参数整定实战:从核心原理到工程调试的完整指南
  • 2026年川西南流体输送设备市场观察:雅安、乐山、眉山等地水泵厂家怎么选? - 优质品牌商家
  • Unity UGUI Toggle与Toggle Group实战:构建高效单选/多选交互系统
  • OBS Studio色彩校正终极指南:3个简单步骤打造专业直播画面
  • GPT-5.6推理优化与API成本控制实战指南
  • Python实战学习路径:从环境搭建到爬虫、数据分析与AI项目落地
  • 2026 年现阶段自贡评价高的吊车出租优质厂家找哪家,租设备竟能省出一辆小货车的钱?这玩意儿的门道,懂行的人都这么玩。 - 品质体验官
  • 碳核算标准化:全球企业减排的数据基石
  • S7-300 PLC与组态王实现工业恒压供水系统设计
  • AI 七宗罪全网最全审判指南:从入门到榨干
  • Get cookies.txt LOCALLY技术架构深度解析:安全本地Cookie管理的现代实现方案
  • 2026 年更新:扎赉特旗正规的铣床防护罩公司找哪家,你工厂里藏着的这个“隐形保镖”,竟能帮你省下月超万元的运维费? - 企业推荐官【认证】