lvyonghuan/GoATuber

[问题]关于记忆匹配模式

Opened this issue · 0 comments

我现在使用的是pinecone向量库的免费计划,最多只能拥有一个indexs。利用这一个indexs倒是也能进行很多构造了。

现目前的记忆存储就是单纯把每条记忆存储进pinecone向量库里,没有特别多的修饰了。倒是存储里的一些细节我设计过,比如分类——只是现在还没有很特别的去使用。

现目前记忆的调用流程是:

  • 让gpt利用function call的能力判断用户的发言是否需要利用到过往的消息记录。——这里的函数描述还要做进一步修正。
  • 如果需要记忆调用,则把记录传入记忆模块。接下来:
  • 向OpenAI发送请求,调用Embeddings去生成embedding。
  • 携带生成的embedding去向pinecone进行query请求消息。如果我没猜错,这个操作允许利用一个大的分类标签和一系列小的分类标签进行限定。我觉得关键在于怎么利用好着一系列分类,但是我现在卡在这里,不知道该怎么去设计一套分类。这些分类的标签在存储的时候就附着在每条要存储的消息上了,而请求的话则根据设定好的标签去过滤库里的消息。
  • 返回请求得到的消息,然后把得到的消息拼接到向OpenAI的gpt模型发送的请求当中去。

我目前的问题是假如我一昧去存储,那么当用户发送一句你好的时候,它大概率是会和以前存储过的另一个用户发送的你好匹配到。这样很没意思。虽然我现在利用函数调用让gpt过滤掉一些和记忆无关的问题了,但是还是有必要设计一套程式来规范记忆的标签。

目前的思路是用gpt给每个要被存储的消息打标签。问题是该怎么去设计这个标签体系,这是我没头绪的。或者还有一个方法——直接预设记忆,这样要方便得多,但是效果会差一些。