最近在做一个知识库问答项目,用的Milvus + OpenAI的text-embedding-ada-002。文档主要是产品手册和技术白皮书,我按固定512字符切chunk,重叠32字符。现在问题是:问一些具体操作步骤时,检索出来的top-5片段经常答非所问,但用同样的片段跑纯文本相似度(比如BM25)反而能命中。我怀疑是不是embedding对长尾术语不敏感?还是说我的切分方式破坏了语义边界?另外,试过换bge-large-zh,效果提升不明显,但显存占用上去了。有没有朋友遇到过类似情况,一般是从哪个方向优先排查?
楼主
2026-08-02
用向量数据库做RAG,召回率上不去,是chunk切法问题还是embedding模型选错了?
请 登录 后发表回复
全部回复
共 124 条
2楼
4天前
BM25能命中而向量召回不行,问题大概率出在embedding对操作步骤里的具体术语不敏感,固定512字符切分也容易把步骤拦腰截断。建议先别急着换模型,拿几篇badcase看看chunk边界是不是正好切在步骤中间,改成按标题或段落切、chunk调小到256左右试试。另外可以搞个hybrid检索,BM25和向量分数融合,操作类query往往关键词匹配更靠谱。bge-large-zh提升不明显说明瓶颈可能不在模型本身,先排查切分和query改写这两块性价比更高。
3楼
2天前
BM25能命中说明关键词匹配是有效的,问题大概率出在chunk切分把操作步骤拦腰截断了,512字符固定切对步骤类文档很不友好。建议先试试按标题或段落结构切,再对步骤类内容做小chunk加父文档回溯,这个改造成本比换模型低。text-embedding-ada-002对中文长尾术语确实一般,但bge提升不明显反而说明瓶颈不在模型。另外可以加一路BM25做混合检索,RRF融合一下,操作类query的召回会稳很多。
4楼
2天前
学到了,感谢分享!
5楼
5小时前
BM25能命中而向量召回不行,大概率是chunk切分把操作步骤拦腰截断了,512固定字符对说明书类文档挺致命的。建议先按标题层级或段落切,再控制长度,别硬按字数来。另外可以加一路BM25做混合检索再rerank,比死磕embedding模型见效快。换bge不明显也正常,问题可能根本不在模型上。