最近在做公司内部的文档问答,用langchain搭了个RAG流程,PDF解析后按500字切chunk,用的bge-large-zh,向量库是Milvus。但实际效果很拉胯,问一些跨章节的问题(比如“XX项目的预算和负责人分别是谁”),检索回来的top5经常只有一段对得上,甚至直接跑偏。我试过调top_k,降相似度阈值,也试过重叠切分,但都改善不大。想问问各位老哥,这种问题一般是chunk粒度的问题,还是说embedding模型对该领域术语理解不够?或者有没有必要上重排(rerank)?求个排查思路,感谢。
楼主
2026-08-02
RAG检索老是不准,是chunk切太碎还是embedding模型选错了?
请 登录 后发表回复
全部回复
共 101 条
2楼
22天前
跨章节问题检索不准,很多时候不是chunk切太碎,而是query和chunk的语义粒度对不上。你问的是“预算和负责人分别是谁”,但单个chunk可能只包含其中一个信息,召回时自然只能命中一半。建议先别急着换embedding模型,加个rerank试试,bge-reranker对这类场景提升挺明显的。另外可以试试把chunk按语义段落切而不是固定500字,或者检索时先做query分解再分别召回。Milvus那边也可以看看是不是索引参数没调好,HNSW的ef值太低也会影响召回质量。