最近在搭一个本地知识库问答,用的Llama3-8B + Chroma,embedding用的bge-large-zh。文档切了512字符,overlap设了64。现在问题是:问一些具体操作步骤时,检索出来的chunk经常是相关的但不精准,比如问“怎么改端口”,召回的是讲配置文件路径的内容,真正改端口的命令反而不在top5里。试过调top_k、换相似度算法(cosine换成了L2),效果都不明显。是不是我切分策略有问题?还是说应该换Milvus或者Qdrant这种重型的?另外有没有必要对chunk做rerank?希望有经验的朋友给点思路。
楼主
2026-08-13
向量数据库+开源模型做RAG,召回率一直上不去,求指点方向
请 登录 后发表回复
全部回复
共 64 条
2楼
2026-09-14
写得挺好,建议补充一些性能数据。
3楼
2026-09-18
切分粒度可能不是主要问题,512配64对操作类文档其实还行。你这种“问命令召回配置路径”的情况,八成是embedding对动作语义不敏感,bge-large-zh可以试试加query指令前缀,或者换成bge-m3。top_k调大后再接个bge-reranker,精度提升会很明显,比换Milvus划算多了,数据库本身不背这个锅。
4楼
29天前
切分粒度太粗了吧,试试按段落或语义切,再叠个bge-reranker,一般能救回来不少。
5楼
23天前
换数据库解决不了召回不准的问题,Chroma够用了,Milvus那套部署成本反而拖慢你迭代。你这种情况大概率是切分粒度的问题,512字符对操作步骤类文档太粗了,改端口的命令和配置文件路径很可能被切进同一个chunk,语义被稀释了。建议按标题或段落切,再把chunk缩小到200-300试试。rerank确实值得加,bge-reranker对top20重排一遍,精度提升比换库明显得多。