现代产品往往涉及很多来自不同渠道的用户调查数据,比如访谈、在线客服聊天记录、客户邮件、问卷调查和各种平台上的客户评价等。要整理和理解这些数据非常困难。通常,我们会把这些数据整理得井井有条,并用各种标签进行分类。
但如果我们有一个人工智能聊天机器人,它可以回答所有关于用户研究数据的问题,那该多好呀!这个机器人可以通过查找大量的历史用户研究数据,为我们的新项目、产品或者营销活动提供有价值的见解和建议。
现在,我们只需要简单的几行代码,就可以实现这个目标,哪怕你没有技术背景也没关系。在这篇文章里,我会手把手教你如何去做。
隐私问题 在处理用户数据时,我们会面临很多隐私问题。默认情况下,OpenAI 不会使用通过 API 提交的客户数据来训练 OpenAI 模型或改进 OpenAI 的服务。但当然,可能还有更多的安全限制。请查阅 OpenAI 文档以获取更多信息,并咨询您的法律团队。
定制知识库 我们希望它使用我们研究中的数据,而不仅仅是互联网上的普通知识。我们怎么做?
微调是否可行? 当我第一次面对这个问题时,我认为可以用我们的数据集对模型进行微调。结果发现,微调是通过提供提示-响应示例来训练模型以特定方式回答问题。
例如,微调有助于训练模型识别情感。要做到这一点,您需要在训练数据中提供句子-情感值对,就像下面的例子那样:
{"prompt":"ChatGPT发布的GPT-4令人兴奋! ->", "completion":" 积极"}
{"prompt":"湖人队连续第三晚让人失望! ->", "completion":" 消极"}
但在我们的情况下,我们没有提示-响应示例。我们只有想用来寻找答案的数据。所以,在这种情况下,微调是行不通的。
将上下文发送到提示中 相反,我们需要让模型了解上下文。我们可以通过在提示本身中提供上下文来实现这一点。
就像这样:
.....各种上下文信息
.....各种上下文信息
.....各种上下文信息
.....各种上下文信息
.....各种上下文信息
回答问题: {用户输入的字符串}
不过,有一个问题。我们不能把所有的研究数据都放在一个提示里。这在计算上是不合理的,而且 GPT-3 模型在请求/响应方面有 2049 个“令牌”的硬限制。这大约是请求和响应合在一起的 8k 字符。
我们需要找到一种方法来仅发送有助于我们的聊天机器人回答问题的相关信息,而不是发送请求中的所有数据。
我们需要找到一种方法,只发送与问题相关的信息,以帮助我们的聊天机器人回答问题,而不是将所有数据都放在请求中。
有一个库可以实现这个功能
好消息是,有一个名为 GPT Index 的开源库,由 Jerry Liu 创建,使用起来非常容易。
这是它的工作原理:
- 创建文本块索引
- 找到最相关的文本块
- 使用最相关的文本块向 GPT-3 提问
- 这个库为我们完成了所有繁重的工作,我们只需要编写几行代码。让我们开始吧!
动手实践
代码只有两个函数:第一个函数从我们的数据中构建索引,第二个函数将请求发送到 GPT-3。以下是伪代码:
构建索引
首先,我们需要构建一个索引。索引就像一个数据库,以便于查找的方式存储文本片段。
为了做到这一点,我们需要将所有数据收集到一个文件夹中。然后,我们要求 GPT Index 获取文件夹中的所有文件,并将每个文件分成小的、顺序的片段。接着,我们将这些片段以可搜索的格式进行存储。