OpenAI Fine-tuning API: 为什么我会选择使用LlamaIndex或LangChain而不是微调模型?

我刚开始接触大型语言模型(LLMs),特别是OpenAI和其他开源模型。网上有很多关于使用LlamaIndex来创建文档存储并对其进行查询的指南。我尝试了一些样本文档,但发现每次查询的成本很快就变得非常高。我使用了一份50页的PDF文档,进行一次摘要查询就花费了大约1.5美元。我注意到每次查询发送了大量的tokens,所以我猜测每次查询都发送了整个文档。考虑到有人可能想要使用数百万条记录,我不明白像LlamaIndex这样的工具在成本效益方面如何真正有用。

另一方面,我看到OpenAI允许你训练一个ChatGPT模型。使用这种方法,或者使用其他定制训练的LLMs,是不是在自己的数据上进行查询时更便宜、更有效呢?为什么我还要设置LlamaIndex呢?


回答:

简而言之:使用LlamaIndex或LangChain可以从现有数据源中获取特定问题的精确答案(即事实)。

为什么选择LlamaIndexLangChain而不是微调模型?

答案很简单,但你自己无法回答,因为你只关注了成本。还有其他方面,不仅仅是成本。看看这个问题可用性的一面吧。

微调模型会给模型增加额外的通用知识,但微调后的模型不会对特定问题给出精确答案(即事实)。

人们用一些数据训练OpenAI模型,但当他们问与微调数据相关的问题时,他们惊讶地发现模型并没有用微调获得的知识来回答。请看官方OpenAI论坛上的一个示例解释:

我微调了一本7万字的书。我最初的期望是得到所需的问答,当时我还不了解更好的方法。但这次微调让我看到了这种方法的局限性。它只是学会了风格,并且大致保持在语料库内,但幻觉很多。

然后我将书分成句子,并通过嵌入向量逐步处理,现在我有了一个非常不错的书籍问答系统,但仅限于狭窄的问题。对于需要整个书籍上下文的问题,它就不那么好了。

另请参阅官方OpenAI文档

微调可以改善结果的一些常见用例:

  • 设定风格、语气、格式或其他定性方面
  • 提高产生所需输出的可靠性
  • 纠正未能遵循复杂提示的失败
  • 以特定方式处理许多边缘情况
  • 执行难以在提示中表达的新技能或任务

LlamaIndex或LangChain使你能够将OpenAI模型与现有数据源连接起来。例如,一家公司有一堆内部文档,包含各种指令、指南、规则等。LlamaIndex或LangChain可以用来查询所有这些文档,并为需要答案的员工提供精确的答案。

OpenAI模型(GPT-3、GPT-3.5、GPT-4等)无法查询其知识。查询需要从资源中计算嵌入向量,然后计算余弦相似度,这是OpenAI模型无法做到的。OpenAI模型只是根据前一个词后面应该跟哪个词的统计概率来给出答案。

我强烈建议你阅读我关于语义搜索的之前的回答。你会更好地理解这个答案。

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注