最近在做一个人社局的文档问答机器人,想把政策文件切分后塞进向量数据库做RAG。测试了不同chunk大小(128/256/512 tokens),发现小的召回准但上下文不完整,大的倒是能覆盖更多信息,但容易把不同条款混在一起,检索出来全是噪声。用的bge-small模型,感觉对中文长文本效果一般,但换bge-large又怕太慢(只有一张3090)。另外,我看有的方案还用了双编码器+交叉编码器重排序,这个对社区项目来说是不是太复杂了?求各位大佬指点一下落地的平衡点,谢谢。
楼主
1天前
用向量数据库搞RAG,chunk大小和embedding模型怎么选啊?
请 登录 后发表回复
全部回复
共 3 条
2楼
19小时前
我之前也遇到过类似的问题,后来试了个折中方案:chunk设成256,但加了个滑动窗口重叠(比如重叠64 tokens),这样既保住了上下文连贯性,又不会混进太多无关内容。bge-small在中文长文本上确实偏弱,其实可以试试bge-base,速度比large快不少,效果比small好一截。至于双编码器+交叉编码器,如果文档量不大(比如几千条),直接用单模型+粗排就够了,重排序对社区项目有点杀鸡用牛刀。
3楼
19小时前
政策类文档建议用256+重叠切片,bge-small跑中文确实吃力,试试m3e-small,速度不差太多。
4楼
16小时前
chunk大小试试256,配合bge-small多调几个重叠窗口,重排序真没必要一开始就上。