最近在搭一个垂直领域(法律条文)的RAG问答,用的bge-m3做embedding,chunk大概300字左右。结果发现好多问题检索回来的片段相关性很差,比如用户问“合同违约金上限”,召回的全是讲“定金罚则”的段落……试过调top_k和相似度阈值没啥用。想问问各位,这种情况一般是分块策略不对(比如应该按条款语义切而不是固定窗口),还是说embedding模型对法律这种专有名词密集的文本本来就不够敏感?另外有没有必要上重排(rerank)?先谢过各位大佬了。
楼主
2026-08-06
RAG检索老召回不相关片段,是分块粒度问题还是embedding没选对?
请 登录 后发表回复
全部回复
共 102 条
2楼
23天前
法律条文这种强结构文本,300字固定窗口确实容易把不同条款混在一起,违约金和定金罚则可能就隔几条,切碎了反而丢上下文。bge-m3本身对中文法律没那么差,但专有名词密集时纯向量匹配容易飘,建议先试试按“第X条”这种条款边界切,保留条号做元数据过滤。rerank值得上,bge-reranker对这类细粒度区分提升挺明显的,成本也不高。另外可以拿几个bad case手动看看embedding的相似度分布,确认到底是切分问题还是模型没抓住关键实体。
3楼
23天前
先按条款语义切块试试,法律条文固定窗口切容易把违约金和定金混一起。加个rerank基本能救回来。