Code Intepreter 这类插件是怎实现的?

最近在做一个数据分析的AI,类似Code Interpreter上传数据后的分析效果,但是有几个明显的问题没想通怎么解决,找大家请教下:

比如100辆车型参数数据分析,很容易超出4K Token限制。

  1. 使用API没法直接给到ChatGPT,但是ChatGPT3.5网页版确能把数据拷贝进去,然后分析。这是为何,网页版怎么突破的限制?
  2. 如果采用的向量数据库的方式分拆,每个拆分的数据是独立的,只能回答比如宝马3系有多长的问题。GPT获得的不是全量数据,只是向量检索后的片段数据,无法回答数据相关性问题,比如轴距最长的车是那一款。
  3. Code Interpreter的插件会是什么原理,怎么保障整个数据都能传递给GPT,然后处理?

所以,核心问题是

  1. 超Token的数据怎么给到GPT
  2. 怎么保障数据的完整性和相关性不丢失

大家有什么想法?

1 个赞

这是一个很好的问题,涉及到如何高效地在知识问答类LLM应用中处理大量数据。

  1. 对于超过4000个token的输入,Web版本的GPT-3.5(非16K版本)并没有真正突破这个限制。相反,它可能通过在用户交互过程中保存和管理聊天历史来实现这一点。这样,虽然每次输入都被限制在4000个token内,但可以通过连续的聊天交互,保留和引用以前的信息,来处理更大的数据集。然而,这种方法可能会有一些问题,比如处理大量数据时可能会导致数据丢失,因为不是所有的数据都能在4000个token的限制内得到处理。

  2. 现在gpt-3.5-turbo-16k已经推出,你可以使用此API来做处理,我了解到最近Web版ChatGPT应该有使用16K版本。

  3. 如何给GPT提供超过token限制的数据?一个可能的解决方案是将数据分割成多个段落,然后在每次交互时提供一部分数据。然而,这种方法的缺点是可能会丧失数据的整体性和相关性。那如何保证数据的完整性和相关性不丢失?一种可能的解决方案是预处理数据,将相关的信息组合在一起,然后在每次交互时提供。比如,你可以创建一个数据摘要,包含所有车辆的关键信息,然后让GPT使用这个摘要进行分析。另一种可能的解决方案是使用一个外部的知识图谱或数据库,将数据储存在那里,然后让GPT查询这个数据库。

  4. 至于Code Interpreter,它可能有一个外部的存储系统来存储代码,然后在每次交互时提供一部分代码。然后,它可能使用了一些预处理技术来优化代码,使其更适合GPT的处理。

2 个赞

感谢上边朋友的答复。

将相关信息组合在一起依旧有相关性丢失的问题,你无法穷举,同时数据量越大,丢失的概率越大。我现在考虑另一种方案,分析数据的表头而非数据本身,先基于表头形成一个预处理规则,再去处理数据。

有兴趣做这个方向的朋友可以加我微信一起讨论

感谢答复,感谢答复