最近在做一个内部知识库的 Agent,用的 LangChain + Chroma。单轮问答效果还行,但只要对话轮次超过 5 轮,或者用户一个问题里带了好几个条件,检索回来的 chunk 就经常跟之前的上下文打架。比如用户先问了“报销流程”,再问“那电子发票呢”,系统经常会去检索“电子发票”的通用知识,而不是结合上一轮提到的“报销”去过滤。我试过把历史记录全部塞进 retriever 的 query 里,结果检索结果反而更杂。也试过用 LLM 重写 query,但有时候改写完和原意差挺多。想知道大家是怎么处理这种多轮上下文与 RAG 检索的融合的?是切窗口、加 rerank,还是干脆换 GraphRAG?