最近在做一个企业知识库问答的Agent,用LangChain搭的RAG流程。现在卡在chunk切分上——按固定字符(比如500字带overlap)切,检索出来的片段经常断在句子里,LLM回答起来前言不搭后语;试了按段落/标题切,又感觉粒度太粗,小问题召回率明显下降。还试过用embedding做语义切分,但效果不太稳定,而且处理几百个PDF时耗时感人。想请教下各位实际项目里是怎么平衡的?有没有比较成熟的切分策略或者工具?另外像表格、代码块这类特殊内容是不是应该单独处理?先谢过各位大佬了。
最近在做一个企业知识库问答的Agent,用LangChain搭的RAG流程。现在卡在chunk切分上——按固定字符(比如500字带overlap)切,检索出来的片段经常断在句子里,LLM回答起来前言不搭后语;试了按段落/标题切,又感觉粒度太粗,小问题召回率明显下降。还试过用embedding做语义切分,但效果不太稳定,而且处理几百个PDF时耗时感人。想请教下各位实际项目里是怎么平衡的?有没有比较成熟的切分策略或者工具?另外像表格、代码块这类特殊内容是不是应该单独处理?先谢过各位大佬了。
这个思路不错,收藏了。
我们之前也踩过这个坑,后来发现纯按字符切确实容易断句,但语义切分又太慢。现在折中方案是用递归切分按标点优先,再设个最小长度兜底,效果还行。表格和代码块一定要单独抽出来,不然embedding出来全是噪音。你们PDF里表格多吗?那种跨页表格处理起来更头疼。
表格代码块真得单独切,混在文本里召回全是坑,别问我怎么知道的。