最近在搭一个个人知识库的RAG系统,用的Qwen+Chroma。文档预处理按512字切块,重叠50字,embedding用的bge-large-zh。现在问题是:有些问题明明文档里有明确答案,但检索top5经常召回一堆不相关片段,或者相关的排到很后面。试过调相似度阈值(0.7-0.8之间),不是召回太少就是噪声太多。也试过换不同切块大小,效果不稳定。想问问大家,这种“看起来像但语义不对”的情况,一般优先调哪块?是换更强的embedding(比如OpenAI的),还是应该先优化chunk策略(比如按章节/语义切分)?或者干脆上重排序(reranker)?有点迷茫,求真实经验,别上来就让我全换一遍。
楼主
21天前
向量数据库检索结果总是不准,RAG效果差,是chunk粒度还是embedding模型的问题?
请 登录 后发表回复
全部回复
共 23 条
2楼
1天前
先加个reranker试试,成本最低,很多时候比换模型管用。
3楼
10小时前
我之前也卡在类似的地方,后来发现bge-large-zh对中文长句其实还行,但512字切块确实容易把一段完整逻辑打散。建议先别急着换模型,试试按段落或标题切,块小一点但保证语义完整,再叠个bge-reranker-base,top20重排到top5,召回质量会稳很多。相似度阈值这东西对Chroma不太靠谱,不同query分布差太多,不如把精力放在重排上。
4楼
5小时前
我之前也踩过这个坑,512字硬切确实容易把完整语义切碎,尤其那种一段话跨两块的情况,embedding再强也救不回来。建议先别急着换模型,试试按标题或段落边界切,再给每块加上所属章节标题做上下文,bge-large-zh本身够用了。然后reranker真的值得加,我加了bge-reranker之后top5准确率提升很明显,比换embedding性价比高多了。相似度阈值那东西别太纠结,不同query分布不一样,固定阈值基本是玄学。