GPTCache 增强:根据系统提示使用返回不同的缓存输出

wsewodh2  于 2个月前  发布在  其他
关注(0)|答案(7)|浏览(47)

你希望添加什么?
支持指定一个类似于pre_embedding_func的处理器,它返回用于请求的系统提示的版本/唯一标签,并与缓存数据和嵌入数据一起存储。在搜索嵌入数据和获取最终缓存数据时,也应考虑此版本/唯一标签。

为什么需要这个?
我正在进行一个项目,根据手头的任务从同一用户提示中提取不同类型的信息。例如,一个API调用将用于识别用户意图,下一个API调用将用于使用上一个请求中识别的意图生成YAML。现在,在这个场景中,尽管两次用户提示的时间相同,但系统提示却不同。由于系统提示比用户提示大得多,因此在这种情况下需要为相似性评估设置非常高的阈值(缓存嵌入是针对组合的系统提示+用户提示文本计算的),这通常比仅对用户提示执行相似性评估要差得多。

还有其他问题吗?

  • 无响应*
7vux5j2d

7vux5j2d1#

你好,@transhapHigsn 你使用过很多不同的系统提示吗?

nfs0ujit

nfs0ujit2#

是的,通常我使用两套系统提示,并且这两套系统提示都有不同的响应结构定义。一套用于识别用户意图(有很多可以执行的操作,但我不能将所有这些信息包含在一个系统提示中,所以我采用了这种方法),另一套用于执行实际任务,即从用户提示生成YAML。
此外,还有修复系统提示中问题的情况。在这种情况下,我必须从向量数据库中删除所有内容,以确保它不会返回无效的模型响应。
编辑:

  • 我们为应对这个问题提出的解决方案是基于目标使用多个缓存示例。
g9icjywg

g9icjywg3#

我们为了解决这个问题,提出了使用基于目标的多个缓存示例的解决方案。这也是我能想到的一个临时方法。我将计划如何开发这个功能。

vfh0ocws

vfh0ocws4#

感谢您考虑这个问题。如果您能指导我如何开发,我很乐意在这里提供帮助。

lnlaulya

lnlaulya5#

你好!我是Sweep的创始人之一,Sweep是一款GitHub应用,通过编写pull请求来解决问题。

这看起来是一个适合Sweep尝试的好问题。我们这里有入门指导,我也很乐意直接帮助你入门:)

lpwwtiir

lpwwtiir6#

嘿,我们遇到了一个类似的事情:

根据地区(locale),我们只有在用户发起请求时才知道这个信息,它是地区的一部分。我们需要动态地决定从qdrant获取哪个上下文(context)。每个地区都有自己显著不同的上下文,例如每个国家的税率。

  1. 我在尝试使用一种基于装饰器的方法,每次处理请求时都需要重新初始化缓存,并在qdrant存储中动态更改集合名称。
  2. 为所有地区预先分配缓存,并将它们永久保留在内存中,每个地区都有一个不同的集合名称。
  3. 我觉得最hacky-buggy的方法是:在请求前面添加地区的哈希值,这样相似度就会降低,即使它们在同一个集合中,也不会被获取。

对我们来说,理想的解决方案是能够动态地更改gptcache在qdrant中使用的集合名称。我很乐意帮助实现并分享我的发现。

iqjalb3h

iqjalb3h7#

对我们来说,理想的解决方案是能够动态地改变gptcache在qdrant中用于查找的collection_name。这类似于多个cache对象。当然,我也期待着您的实施计划。

相关问题