最近在折腾把公司内部的RAG知识库封装成MCP工具给Agent调用,但发现一个很头疼的问题:查询一次文档,MCP工具从接收参数到返回结果,总共要3-4秒,其中大部分时间都花在embedding和向量检索上了。我用的bge-m3本地模型,索引是FAISS,文档量也就几万条。请问大家有没有遇到过类似情况?是应该换成轻量级embedding模型,还是把向量库改成pgvector或者milvus?另外MCP工具本身有没有办法做结果缓存,比如对同样的query直接返回上一次的结果?希望有经验的朋友指点下,感谢。
楼主
28天前
MCP接RAG查询,工具返回太慢怎么优化?卡在embedding上了?
请 登录 后发表回复
全部回复
共 82 条
2楼
1天前
我之前也踩过这个坑,bge-m3确实重,几万条文档真没必要上它,换个更轻量的模型比如bge-small或者gte-small,延迟能降一大截。缓存这块MCP本身没现成的,但可以在工具外面包一层Redis,按query的embedding做相似度去重,命中直接返回,效果挺明显的。向量库倒是次要的,FAISS单机几万条不至于瓶颈,主要还是模型推理占大头。你试试先优化模型,要是还慢再考虑换库。
3楼
14小时前
几万条文档用bge-m3确实有点大炮打蚊子了,这模型维度高,CPU推理本来就慢,换个小模型像text2vec或者gte-small能立竿见影。缓存这块MCP本身没内置,但可以在工具外层套个Redis,拿query的hash做key,命中直接返回,成本很低。另外FAISS如果没走GPU,检索倒不是瓶颈,瓶颈基本都在embedding推理上,建议先拿profiling确认下时间分布再动手。