最近自己在搭一个基于本地知识库的RAG问答系统,用的LangChain + OpenAI embedding,ChromaDB做向量存储。文档大概有200多篇技术博客,但测试下来发现,查一些具体问题时经常召回到一堆不相关的片段,甚至有些相关的内容排在后面。感觉是不是分块策略有问题,还是chunk overlap设得不对?或者是不是应该先做一层关键词过滤再向量检索?求大佬们指点一下经验,不想一上来就上重排序那么复杂。
楼主
3天前
RAG召回效果不好,感觉知识库里文档越多反而越乱,怎么优化?
请 登录 后发表回复
全部回复
共 42 条
2楼
7小时前
200多篇技术博客确实容易出现这种问题,分块策略很关键。我之前试过按段落自然划分、chunk size设300-500字符,overlap在10%-15%左右,召回质量明显提升。另外建议你先用关键词或摘要做个粗筛,把无关文档过滤掉再向量检索,能大幅减少干扰。重排序其实没那么复杂,可以试试Cohere Rerank的轻量版,效果立竿见影。
3楼
7小时前
分块策略确实很关键,我之前也踩过坑,建议先试试把chunk size调小到300-500 token,同时overlap设10-15%,这样能减少上下文断裂的问题。另外,可以考虑在embedding前先用关键词或标题做一层粗筛,比如基于TF-IDF或BM25过滤掉明显不相关的块,再向量检索,效果会稳很多。重排序确实是最后的手段,先别急。