OpenAI官方教程:如何解决GPT无法处理长文本和最新数据的问题( 二 )


通过将问题首先转换为假设的答案然后再进行嵌入的技术 , 如HyDE , 也可以提高问答检索的性能 。同样 , GPT还可以通过自动将问题转换为一组关键词或搜索术语来潜在地改善搜索结果 。
四、如何建立基于embeddings的搜索系统来解决问题
总的来说 , 这样的系统包含3个步骤:准备需要检索的知识、检索、提问即可:
 

  • 准备搜索数据(仅一次)收集:即获取你要用的数据 , 例如OpenAI的案例是下载几百篇有关2022年奥运会的维基百科文章切块:将文档分成短小的、大多是自包含的部分以进行嵌入嵌入:使用OpenAI API对每个部分数据获得embeddings结果存储:存储embedding是(对于大型数据集 , 可以使用向量数据库)
  • 搜索(每次查询一次)给定用户问题 , 从OpenAI API生成查询的embeddings使用embeddings , 按照与查询相关性对文本部分进行排序
  • 提问(每次查询一次)将问题和最相关的部分插入到发送给GPT的消息中返回GPT的答案
 
简单总结一下就是将原始数据用嵌入的方式存储 , 然后针对问题获取embeddings结果 , 再利用这个结果检索最相似的内容 , 把这个提问和最相似的结果发给GPT , 获得GPT的回答即可 。也就是说 , 这是另一种解决GPT无法回答最新数据和长文本内容的方法!
成本
这个方法比原始的方法来说多了几个步骤 , 但是成本并不一定更多 , 因为GPT的接口比embedding的接口更贵 。如果系统中查询次数比较多 , 那么成本主要在步骤上面的步骤3(提问) 。有个简单的计算方法:
 
  • 对于使用gpt-3.5-turbo来说 , 每次查询假设1000个tokens , 那么每次查询成本0.002美元 , 约等于1美元查询500次
  • 对于gpt-4接口来说 , 假设每次查询依然1000个tokens , 那么每次查询成本0.03美元 , 一美元可以查询30次!
 
但是这只是简单估算 , 具体的成本可能还要看系统什么样子 。
总结
这是一个非常棒的idea 。可以解决目前GPT或者其它大模型没有最新数据或者输入限制的问题 。在AutoGPT中 , 作者也有一个思路 , 就是每次都把最近的问题以及最相关的目标一起发送给GPT , 获得答案 , 以此来获得更长记忆的能力 。但是从实现效果来说 , OpenAI这种利用Embeddings先获取最相关文本再提问的方式可能是比较优雅的 。而且也可以控制输入和输出的tokens 。
官方有代码实现案例参考原文末尾链接:OpenAI官方教程:如何使用基于embeddings检索来解决GPT无法处理长文本和最新数据的问题 | 数据学习者官方网站(Datalearner)

【OpenAI官方教程:如何解决GPT无法处理长文本和最新数据的问题】


推荐阅读