乐趣区

关于人工智能:向量嵌入AutoGPT的幻觉解法

起源|Eye on AI
OneFlow 编译
翻译|贾川、杨婷、徐佳渝

“不苟言笑胡言乱语”的幻觉问题是 ChatGPT 等大型语言模型(LLM)亟需解决的通病。尽管通过人类反馈的强化学习(RLHF),能够让模型对谬误的输入后果进行调整,但在效率和老本上不占优势,况且仅通过 RLHF 并不能彻底解决问题,由此也限度了模型的实用性。

因为大型语言模型的实质是基于语言的“统计概率”,幻觉景象表明,LLM 并没有真正了解它所生成的内容,也不具备对错的概念。

此前,OpenAI 首席科学家 Ilya Sutskever 谈到,他心愿通过改良强化学习反馈步骤来阻止神经网络产生“幻觉”,他对解决这一问题十分自信,但只说了一句“让咱们刮目相待”。

不过,向量嵌入(vector embeddings)看上去是解决这一挑战的更为简略无效的办法,它能够为 LLM 创立一个长期记忆的数据库。通过将权威、可信的信息转换为向量,并将它们加载到向量数据库中,数据库能为 LLM 提供牢靠的信息源,从而缩小模型产生幻觉的可能性。

最近,爆火的 AutoGPT 就集成了向量数据库 Pinecone,能够让它进行长期内存存储,反对上下文保留并改良决策。

Pinecone 是 OpenAI、Cohere 等 LLM 生成商的合作方。当初,用户能够通过 OpenAI 的 Embedding API 生成语言嵌入,而后在 Pinecone 中为这些嵌入建设索引,以实现疾速且可扩大的向量搜寻。

“嵌入(embedding)”一词最后由 Yoshua Bengio 于 2003 年提出。捷克计算机科学家 Tomas Mikolov 在 2013 年提出了文本向量示意的工具包 word2vec,可用于上游深度学习工作。

Pinecone 创始人 Edo Liberty 在亚马逊工作期间就负责向量嵌入,在来到亚马逊后开始研发 Pinecone 向量数据库。他是耶鲁大学计算机科学博士学位,曾负责雅虎的技术总监,并负责管理 AI 实验室。随后在 AWS 构建了包含 SageMaker 机器学习平台和服务。2019 年年中,他意识到大型语言模型具备非凡意义,通过深度学习模型表示数据的新办法将成为数据和 AI 的根本组成部分。

近期,在 Eye on AI 播客的主持人 Craig S. Smith 与 Edo Liberty 的对话中,他介绍了如何通过向量嵌入解决 LLM 的幻觉问题,并分享了技术细节和构建流程。

(以下内容经受权后由 OneFlow 编译公布,译文转载请分割 OneFlow 取得受权。原文:https://www.eye-on.ai/podcast-117;sponsored by Netsuite,netsuite.com/eyeonai)

1

“幻觉”的解决办法

CRAIG:什么是 Pinecone?

EDO:Pinecone 是一个向量数据库,但其并未采纳构造或语法树等文本示意形式,而是应用一种数值模式的外部示意形式,这种形式被用于深度学习模型、语言模型或聊天引擎等文本处理工作中。

机器学习模型是一种数值引擎,解决的是数字对象,因而惟一可能示意数据的形式就是应用数字列表,这些列表被称为向量或嵌入。如果你想为深度学习模型提供长期记忆(long-term memory)和上下文(context),真正记住事物并理解世界的能力,就须要应用这些数值对象来示意数据。

但存储层、查询语言、拜访模式以及咱们想从数据库失去的所有对这些对象并不实用,你须要特定的硬件和软件能力实现。而 Pinecone 提供的服务就能够大规模地实现这一点。比方,如果你想加强 ChatGPT 的上下文能力,以便取得更好的答复,就能够将本人的数据存储在一个特定的数据库中。这些数据能够是用户手册、历史记录、图片、文本、Jira 票据或邮件等。

Pinecone 当初还公布了本人的检索引擎插件,用户能够将这些货色插入到底层,让 ChatGPT 实时搜寻 Pinecone,从而取得更精确的答案,并且不须要进行太多的连线设置。

Pinecone 的长处是你不用成为机器学习专家,只需按教程复制粘贴代码,进行调整来训练模型,无需与咱们分割,也无需向咱们领取费用。

CRAIG:这有助于解决 ChatGPT 的幻觉问题吗?

EDO:齐全能够。如果当初问 ChatGPT 如何敞开 C70X 车型主动反向刹车灯,它会给出一个十分纯粹、连贯的答案,但这其实只是它的幻觉。它答复得十分自信,但毫无价值。在阐明如何解决幻觉问题之前,我想先强调一下这项技术自身的冲破。

我并不是想要贬斥语言模型。对于从事该畛域 15-20 年的人来说,这项技术无疑是很令人震惊的。ChatGPT 在语言的连贯性、组合形式以及所吸纳的数据量方面都让人眼前一亮,但就因幻觉的存在,其价值大打折扣。如果将沃尔沃的用户手册作为向量嵌入输出到 Pinecone 中,让 ChatGPT 实时搜寻并获取正确的上下文来答复问题,那么 ChatGPT 就能失去正确的答案。

CRAIG:Ilya Sutskever 关注点是用人类反馈的强化学习(RLHF)形式来训练模型,以防止幻觉。但这种办法的效率仿佛不是很高,很多人对模型是否学会贴合事实也存在疑虑。我还曾和 Yann LeCun 探讨过建设一个世界模型(world model),以供语言模型参考。而你所讲的是通过 Pinecone 来构建一个特定畛域的“世界模型”。

EDO:比方学医,人们学习的是一整个常识体系,而不是医学英语。实际上,在进入医学院前人们就曾经把握了英语,因而咱们学到的是一些常识、记忆和事实,当初你能够将这些常识清晰地表达出来。你学到的不是将自然语言模型微调到医学畛域,而是将常识注入到语言中。

其实,将 OpenAI 和 Pinecone 配对也与之相似。咱们把数据和常识存储到 Pinecone 中,这些数据和常识能够是任何畛域的专业知识,比方 Jira 票证、销售电话等等。而后语言模型就能够把这些常识转化成语言,并进行总结、了解问题等。

这些都是齐全不同的性能,所以不应该应用雷同的机制。比方“了解你说的话”和“确定你说的内容是否正确”就是两个齐全不同的机制。前者对于语言解决,后者则对于记忆。

比方我说能够用木棍推动某些货色,也能够说用绳子推动某些货色。但事实上,咱们只能能用绳子拉货色,而不能推货色。这是世界常识的一部分,也是记忆的一部分,既须要了解,也须要判断。人们会以一种事实可行的形式议论世界,因而不会应用“用绳子推货色”这样不切实际的词汇来表白。

所以,如果训练的语言模型足够大,它就能像失常人类一样来议论世界。但这并不代表模型真的就了解任何货色,也有可能会像《猫鼠游戏》中的主人公一样来“假冒”医生。比方,如果你只是在医院待了五年,可能会接触到很多专业术语,因而在议论相干常识和技能时,你就像一个经验丰富的医生,但实际上并没有任何理论教训。

有些所谓的“幻觉解决方案”就像这样,它们仿佛能够让人看起来领有某种技能或常识,但实际上并没有真正了解这些内容。对我来说,这就是幻觉。就像是听医生讲述了很多医学术语,咱们能够用英语说出这些术语,但却基本不懂医学。

CRAIG:所以减少记忆能力就是 Pinecone 目前正在做的事件。是否有其余用于减少记忆或畛域常识的机制呢?据我所知,能够用无监督形式预训练大型语言模型,但最初会有一个监督层训练。咱们是否在监督训练时将畛域常识给到大型语言模型呢?

EDO:我会辨别可能做的事和常常做的事。咱们能够做很多事,并用各种形式进行训练,且已做过大量尝试。不过在我看来,AI 畛域真正值得兴奋的点是,AI 终于真正走进了人们的生存。当初一般工程师、用户等终于可能理论利用 AI,并在 AI 的根底上构建利用。

就拿 Pinecone 和 OpenAI 的联合来说,咱们无需从新训练或创造任何货色,也无需微调,更不用收集数据标签。基本上只需用向量嵌入的模式将数据输出 Pinecone 就能够,网上有很多相似范例。咱们能够实时向 OpenAI 发问,让它在 Pinecone 上查找相干信息。

比方,我是一个销售员,并且曾经将所有的销售对话输出了 Pinecone。那么我能够进行发问,“我是否给某个顾客打折?如果打折了,折扣又是多少?”当初咱们能够用 OpenAI 或其余大型语言模型供应商,基本上咱们只需输出查问,找到与答案相干的对话局部,就能失去答案,并且还能取得明确起因。比方给顾客发的无关折扣信息的邮件,内容显示打了八折等等。

总之,咱们不须要再从新训练任何货色,只需在大型语言模型中输出它所需的上下文,当咱们调用聊天 API 时,它们会蕴含查问(即发问),咱们也能提供与答案相干的上下文,以便获取更多信息。

如果咱们能提供正确的上下文,就能够失去更好的答案。就像对别人发问一样,比方问销售员某个问题,如果他们晓得问题的相干信息,就能进行整合,从而给出答复;如果不晓得相干信息,人类会如实答复不晓得,但当初聊天机器人却可能假造答案。

2

如何将信息转换为向量嵌入

CRAIG:OpenAI 曾示意 ChatGPT 会利用在医学畛域,但目前还不太牢靠。如果没有医生审核,咱们就不能依赖 ChatGPT 给出的任何医学倡议。但如果能让大型语言模型参考可信的医疗文件或教科书,那么不须要医生,间接参考大型语言模型给出的答案了。所以,如何能力将实用医学文本导入 Pinecone 呢?

EDO:首先,我不倡议就医学问题参考大型语言模型给出的答案,尤其是当本身或所爱之人面临衰弱危机时。但我也了解想要敢于尝试的想法,毕竟有总比没有好,相比没有医生,技能不精的医生也并非不能承受。总之,我并不提倡这一行为。

其实要做到这一点非常简单。咱们能够获取医学畛域教科书或医学笔记,将它们分成句子或段落,而后将分好的句子、段落喂入嵌入模型,这些语言模型以深度学习模型表示文本的形式来示意语言,这种数字示意模式称为向量或嵌入。

而后将它们保留到 Pinecone,保留的时候,咱们能够将有用的材料一起保留,比方文本起源,或者源文本,但数字示意才是可操作局部。在理论查问的时候,比方咱们有一些症状或者医学问题时,基本上就是在做雷同的事。你能够嵌入问题、搜寻嵌入、要求提供相干文件或者与查问主题雷同或类似的内容。查问当前,比方咱们失去了一百个文件或一百个段落句子,将它们作为上下文增加到查问中,输出聊天引擎,之后就能够对聊天引擎说“这些是我的症状,我想理解这些方面的信息”。

如果搜进去 50 个与答案相干的不同起源数据,咱们能够在短时间内将这些数据整合起来,就像旧金山、纽约等地举办的黑客马拉松那样,参赛人员能够在一天内整合这些信息。要整合这些信息其实非常容易,因为咱们不必从新训练任何货色,所有都能够交给托管服务,不用启动硬件,也不用解决大量废话,只需调用 API,让它们解决并调整数据。这样一天内就能实现一项大工程。

CRAIG:我对 pipeline 比拟好奇,如果我想把一本权威历史书籍喂入 Pinecone,应该怎么做?如何将信息转换为向量嵌入?

EDO:首先,必须将文本数据化,你能够通过扫描或其余形式,也能够间接用 PDF、word 等格局的数据文本。而后咱们须要将这些文本拆分成更小的局部,比方句子、段落等连贯的模式。也就是不能间接喂入一整本书或者只喂入一两个单词,而是有意义、人类可能浏览且逻辑连贯的精炼内容。

在实现文本拆分当前,就能够将其嵌入到深度学习模型中。此外,线上有很多收费的文本资源能够应用,人们只需简略编写几行 Python 代码,便能够将这些文本导入到计算机中,而后应用这些资源进行训练或者你也能够应用 API 在云上进行训练。

如此一来,你会失去模型返回的向量嵌入以及蕴含大量成千盈百数字的列表。随后,再将向量传递给 Pincone 数据库,并通知它哪些是有用信息,比方历史书上拿破仑入侵的介绍在第 712 页,这个过程等同于建设了本人的数据库。当初,你能够在此基础上构建机器模型,并将该历史书内容用作模型对话的常识源。

CRAIG:Pincone 是否能提供前端来实现所有操作?或者说用户需提前备好向量嵌入将其融入 Pincone?

EDO:目前,咱们公司只负责数据库,因而抉择何种机器学习模型或语言模型的决定权仍在用户手中,咱们只提供最便当的工具,以便用户能毫不费力找到该模型。咱们与 OpenAI、Hugging Face、Cohere、Google、Amazon 和 Azure 等公司有单干,独特构建新型语言模型。约有 50 或 60 家初创公司取得咱们的反对,旨在构建更好的语言模型。

CRAIG:如果 Pinecone 将信息转换为向量嵌入,是否波及版权问题?

EDO:客户应用 Pinecone 的形式相似于 MongoDB、Elasticsearch、Redis、Dynamo DB、Spanner 等其余数据库服务。作为客户的数据基础设施,咱们通过 Pinecone 来存储和治理客户数据,但作为服务提供商,咱们不会接触、应用、分享这些数据,也不会用作模型训练。

人们之所以更偏向于应用相似向量数据库的工具来创立上下文,而不是从新训练或优化模型,最理论的起因是前者能够删除数据。举个例子,若须要删除某些数据以满足 GDPR 相干规定,你能够说:“针对已有数据,进行明确操作,即删除数据点 776。”随后便能够执行删除操作,实现数据点永恒删除。

若将这些数据点输出优化后的模型,并尝试利用这些数据点来改善工作的执行,那么这些数据点就会保留在模型中,因为不存在能够将其删除的机制。

CRAIG:你们目前遇到的挑战是什么?

EDO:最大挑战是启动足够的硬件来反对所有训练需要,这也简直是咱们外围工程师团队每天都须要解决的问题。以后的硬件应用需要微小,而 ChatGPT 的呈现,使其需求量更是猛增。

欢送 Star、试用 OneFlow 最新版本:https://github.com/Oneflow-Inc/oneflow/

退出移动版