最近在搭一个简单的RAG问答系统,用的是LangChain加OpenAI的embedding。遇到一个很头疼的问题:我把PDF文档切成512个token的chunk,结果用户问“这个项目的截止日期是什么”,系统返回的片段里只有“截止日期是下周五”这种孤立信息,但用户其实需要上下文里提到的具体年份和项目名。试过把chunk调大到1024,检索召回率上来了,但回答又容易混进不相关的细节。想问下大家,chunk大小、overlap长度这些参数一般怎么调才比较通用?还是说要根据文档类型(比如合同、技术文档)动态调整?另外,有没有什么办法能判断当前chunk是否已经包含了完整的语义段落?
楼主
22小时前
RAG系统里文档切得太碎反而答不准,怎么控制chunk大小?
请 登录 后发表回复
全部回复
共 1 条
2楼
18小时前
我最近也在折腾这个,感觉chunk大小真不能一刀切。你512和1024都试过的话,我建议试试按段落边界切,配合100-150的overlap,这样能保留上下文又不至于太碎。另外可以加个语义完整性判断,比如正则检测chunk末尾是不是完整句子,或者用LLM判断下是否包含核心实体(像项目名、日期这些)。文档类型影响确实大,合同类我习惯用768带200 overlap,技术文档反而切小点更准。