AST感知分块
AST感知分块(AST-aware Chunking)是一种代码索引技术,在函数、类、模块等语法边界上切分代码,而非使用固定长度切分。这是SocratiCode索引管道的核心优势,确保每个chunk是完整的语义单元。
原理
- 使用
ast-grep对JS/TS、Python、Java、Go、Rust等18+语言进行AST解析 - 在函数定义、类声明、模块边界等语法结构边界处切分
- 对于不支持AST的语言,退回到行式分块策略
- 对TypeScript项目,额外支持
tsconfig.json路径别名解析
优势
- 避免固定长度分块将函数或类切分成无关片段的问题
- 每个chunk保持完整的结构语义,提升嵌入向量质量
- 直接影响后续检索的准确性和相关性
- 使AI能够理解代码的完整语义单元,而非碎片化片段