最近在搞一个基于本地文档的问答机器人,用的bge-large-zh加milvus,分段大概512字符带overlap。现在的问题是:用户问“合同违约金怎么算”,我明明文档里写了具体的违约金比例,但召回的前10条里就是没有最相关的那个片段,反而是一些讲合同生效、终止条款的内容排前面。我已经试过调top_k、换相似度算法(cosine和IP都试了),也加了MMR做多样性重排,效果都不太理想。有点怀疑是不是embedding模型对这类业务术语不敏感,还是说我的分段粒度有问题?或者干脆需要上重排模型(比如bge-reranker)?有没有大佬分享一下调优路径,先谢过了。