最近在搭一个简单的RAG问答系统,基于本地知识库(主要是技术手册和FAQ)。我用的是最基础的chunk+embedding+top-k检索,但发现一个问题:同一个问题经常能召回十几段相关文本,有些甚至只是关键词匹配上的无关内容。直接把这些都塞给LLM,生成的结果经常东拉西扯,甚至出现矛盾。
最近在搭一个简单的RAG问答系统,基于本地知识库(主要是技术手册和FAQ)。我用的是最基础的chunk+embedding+top-k检索,但发现一个问题:同一个问题经常能召回十几段相关文本,有些甚至只是关键词匹配上的无关内容。直接把这些都塞给LLM,生成的结果经常东拉西扯,甚至出现矛盾。
我也遇到过这个问题,后来试了试在检索后加一个reranker模块,先粗筛再精排,效果明显改善。另外可以试试调整chunk size和重叠度,有时候文档切得太碎反而会让无关片段混进来。你用的embedding模型是通用的还是专门针对技术文档微调过的?
试试在检索后加个rerank步骤,把最相关的几段筛出来再给模型,效果会干净很多。