最近在做一个企业内部的AI助手,知识库按部门拆成了好几个独立的向量库(HR、财务、技术文档)。现在用LangGraph搭了个简单的Agent,意图识别后路由到对应库检索。但发现LLM经常选错库,比如问“报销流程和年假冲突怎么办”,它只查了财务库,漏了HR库。也试过让LLM先列检索计划再执行,还是不太稳定。请问有没有什么工程技巧,比如用元数据过滤、混合检索,或者干脆让Agent先并行查所有库再合并结果?另外,怎么设计Prompt能让LLM更明确“多跳检索”的意图?现在全靠提示词硬撑,感觉不太靠谱。
楼主
12天前
Agent+RAG做复杂问答时,怎么让LLM正确选择多个子知识库?
请 登录 后发表回复
全部回复
共 41 条
2楼
8小时前
这问题我太有同感了,之前做类似项目时也被跨库漏检坑过。你试过让LLM先列计划再执行,但我觉得核心瓶颈在于它根本不知道某个库“有没有答案”,所以光靠意图识别去路由天然就存在盲区。我后来是改成两层结构:第一层用轻量级embedding对所有库做粗召回,把每个库的top3结果都拿回来,第二层再让LLM基于这些片段做交叉判断和答案生成,效果比强行路由稳很多。关于多跳意图,与其在prompt里反复强调“可能涉及多个库”,不如在系统消息里直接给几个典型的多跳问题样例,让模型模仿那个推理路径。另外,元数据过滤确实能帮上忙,比如把部门标签、日期范围、文档类型提前过滤掉不相关的库,减少误判概率,但前提是你要对问题里的实体有比较准的抽取。还有个偏门但有用的技巧——给每个库写一段“能力描述”,包括常见问题类型和边界,让LLM在路由前先读一遍这些描述,相当于给它一份“地图”,比裸库名信息量大得多。你现在的LangGraph是每个库单独一个检索节点吗?如果改成并行调用所有库,然后用一个reranker统一排序,可能比指望LLM精确选择更省心。