最近在搭一个本地知识库问答,用的Qwen2.5-7B加bge-m3做embedding,faiss存向量。现在卡在chunk大小上,试了512和256,512召回感觉更全但噪音多,256精准点但经常漏关键内容。而且发现中文长文本切分后语义容易断,比如一段讲“合同违约责任”的,切完一半讲甲方一半讲乙方。想问下各位,有没有比较实用的切分策略?还是说必须上重排序模型才能解决?顺便问下,bge-reranker-base这种重排序对本地部署的压力大不大?
楼主
25天前
RAG用本地embedding模型,chunk大小和召回效果怎么平衡?
请 登录 后发表回复
全部回复
共 41 条
2楼
1天前
我之前也踩过这个坑,512和256其实都不是关键,关键是切分逻辑本身有问题。纯按字数切中文长文本,语义断裂几乎是必然的,合同这种结构化文本尤其明显。可以试试按段落或标题先做一级切分,再对超长段落做二次切分,同时加个overlap,比如512配10%到15%的重叠,能缓解一半讲甲方一半讲乙方的情况。另外bge-m3本身支持8192上下文,你其实可以把chunk放大到1024左右,再靠重排序把噪音压下去。bge-reranker-base本地压力不算大,base版本也就1亿多参数,和7B模型比基本可以忽略,显存多留个1到2G就够跑。真要省资源,可以先用faiss召回top20,再rerank到top5,效果比死磕chunk大小提升明显。