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

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

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