最近在做一个企业知识库问答,用的langchain+openai的pipeline,检索用的faiss,embedding是text-embedding-ada-002。问题是我按固定chunk_size=500切分文档,重叠设了50,但用户问的问题稍微绕一点(比如“去年Q3的报销流程和今年比有啥改动”),召回的前几段经常命中无关内容,导致生成答案东拼西凑。我试过调top_k从4改到8,效果反而更差。也想过用父子分块或者加metadata过滤,但感觉越改越乱,不知道是不是应该先换embedding模型,还是干脆上重排序?有没有做过的朋友说说,RAG调优到底先调哪里?
楼主
2026-08-17
RAG召回老是不准,是不是我分块方式有问题?求大佬指点
请 登录 后发表回复
全部回复
共 43 条
2楼
29天前
先加个rerank试试,比换embedding便宜多了,top_k别乱动。
3楼
29天前
先别急着换embedding,加个重排序试试,一般能救回来不少。
4楼
24天前
你这个问题我踩过,固定500切分确实容易把跨段落的逻辑切碎,尤其涉及时间对比的查询,单靠调top_k只会塞进更多噪声。建议先加个rerank模型试试,bge-reranker或者cohere的都行,召回质量能明显提一档,比换embedding划算。另外你那类问题其实更适合先做metadata过滤,把年份和流程类型抽出来,别让向量检索硬扛。父子分块也值得搞,小块检索大块喂给模型,能缓解上下文断裂。