最近在做一个内部知识库问答,用 MCP 把检索工具暴露给模型,流程大概是用户提问 → 模型决定调 search 工具 → 拿回 chunk → 再生成答案。但实际跑起来经常出现模型不调用检索直接硬答,或者检索回来了却只挑一两条不相关的片段用。我试过在 system prompt 里强调“先检索再回答”,效果也不稳定。想请教下大家在 MCP 场景下,检索工具的描述和参数该怎么写才能让模型更愿意调、调得更准?还是说问题其实出在 chunk 切分和 rerank 上?有点迷茫,求指点。
楼主
20天前
MCP 接入 RAG 后检索结果老是答非所问,是工具调用姿势不对吗?
请 登录 后发表回复
全部回复
共 2 条
2楼
15天前
工具描述里把使用场景写具体点,模型才知道啥时候该调,光靠prompt硬压没用。
3楼
13天前
这个坑我也踩过,说实话大概率不是单一问题,而是模型决策和检索质量两头都在漏。模型不调工具直接硬答,很多时候是因为它觉得自己的参数知识“够用”了,尤其你 system prompt 里强调先检索,反而可能被它当成一种软建议而不是硬约束。可以试试把检索做成一个显式的步骤约束,比如在工具描述里写清楚“任何涉及内部事实的问题都必须先调用此工具”,同时把返回结果的格式做得更结构化一点,让模型更容易引用。另一个点是你说的“检索回来了却只挑不相关的用”,这其实很像 rerank 或者 chunk 粒度的问题,chunk 太大容易混入噪声,太小又丢上下文,模型拿到一堆碎片自然挑不准。MCP 这层更多是负责把工具暴露出去,它不解决检索本身的质量,所以工具描述写得再漂亮也救不了召回烂。我现在会先把 top-k 调小但加 rerank,再在工具返回里带上来源和相关性分数,模型引用的时候明显稳一些。你可以先单独测一下检索环节的命中率,如果召回本身就不行,那再怎么调 prompt 和工具描述都是白搭。