codefuse-ai / ModelCache

A LLM semantic caching system aiming to enhance user experience by reducing response time via cached query-result pairs.
Other
874 stars 43 forks source link

cache是基于prompt的缓存? #20

Closed ArachisTong closed 8 months ago

ArachisTong commented 8 months ago

看了一遍文章,没理解这块缓存是怎么优化的; 问题1.缓存是针对query,还是针对的prompt? 问题2:faiss中存的向量是历史的query吗?如果是的话对于那些同query会时间更新改变answer的case又是如何处理的?比如同样问现在几点了,模型每次都应该再算一次吧 问题3:下图这个分支是如何理解?能给个例子吗

image
peng3307165 commented 8 months ago

感谢关注ModelCache项目,下面是针对上述问题的逐条回复:

问题1:

Cache会同时缓存query和prompt(如果存在), 在多轮对话中甚至会缓存LLM的回答(因为对话存在连续性)。

问题2:

对于“现在几点了?”这样的问题,大模型不会直接回答,举例:

因此,Cache不会影响回答效果,如果在你的项目中使用了tools api来解决此类问题,调整Cache的位置(例如:Cache能力放在时钟tools后),也不会产生影响。

问题3:

考虑到向量数据库特点和检索性能等因素,将query-result pairs中的result存储到关系数据库(OceanBase,也可以是mysql、sqlite等),以code场景为例:

关系数据库中存储的是result内容,当新的用户query与缓存的query一致或相似时,会从关系数据库中检索到对应的result,直接返回给用户,而无需调用大模型,从而节省推理资源并提升响应速度。