0

如何用 Cheshire Cat AI 应对长尾问题?- Piero 和 Nicola | 向量空间对话

Demetrios Brinkmann

·

2024 年 4 月 9 日

How to meow on the long tail with Cheshire Cat AI? - Piero and Nicola | Vector Space Talks

“我们热爱 Qdrant!它是我们的默认数据库。我们支持三种不同的形式:基于文件的、基于容器的以及基于云的。”
— Piero Savastano

Piero Savastano 是开源项目 Cheshire Cat AI 的创始人兼维护者。他从纯粹的深度学习研究起步。19 岁时,他从零开始编写了他的第一个神经网络。在拉萨皮恩扎大学 (La Sapienza) 和意大利国家研究委员会 (CNR) 担任研究员一段时间后,他在机器学习和深度学习领域提供国际咨询、培训和指导服务。他在 YouTube 和 TikTok 上普及人工智能知识。

“另一个特性是量化,因为借助 Qdrant 的这一特性,我们在性能上提高了准确性。我们使用标量量化,因为我们是模型无关的,也使用二进制量化等其他量化方法。”
— Nicola Procopio

Nicola Procopio 在数据科学领域拥有超过 10 年的经验,曾在电信到医疗保健等不同行业和市场工作。目前,他在媒体市场工作,专注于语义搜索、向量空间和 LLM 应用。他曾在研发领域参与数据科学项目,并且一直并目前是 Cheshire Cat 等一些开源项目的贡献者。他是专业博客上数据科学科普文章的作者。

在  Spotify、Apple Podcast、Podcast addicts、Castbox 上收听本期节目。你还可以在 YouTube 上观看本期节目。

主要收获

您知道吗?意大利、德国和美国的许多公司已经在利用 Cheshire Cat 的强大功能来实现各种巧妙的目的?它不仅仅是好看而已;它已经从一个简单的教程发展成为一个有影响力的框架!

是时候学习如何“喵喵”了!在本期向量空间对话中,Piero 讨论了社区和开源特性如何促进了框架的成功和扩展,而 Nicola 则揭示了 Cheshire Cat 如何利用 Qdrant 和量化在混合模式下提高搜索准确性和性能。

本期节目的亮点如下

  1. 嵌入的艺术: 了解 Cheshire Cat 如何使用带有嵌入器的集合,并通过标量量化和其他方法对其进行微调,以提高准确性和性能。
  2. 向量和谐: 了解如何在混合模式下存储量化向量——这关乎在不牺牲速度的情况下节省内存。
  3. 内存很重要: 深入了解如何在 Qdrant 中管理不同类型的内存,Qdrant 是 Cheshire Cat 首选的向量数据库。
  4. 社区编年史: 谈论正在塑造 Cheshire Cat 发展的不断壮大的社区——从爱好者到核心贡献者!
  5. 展望未来: 他们正在酝酿 Cheshire Cat 的云版本宏大计划。想象一个充满用户生成插件的热闹市场。这就是他们正在描绘的未来!

有趣事实:Discord 上的 Cheshire Cat 社区在框架的开发和用户支持中起着至关重要的作用,Piero 幽默地将其描述为“一团糟”,因为它庞大且活跃。

节目笔记

00:00 强大的开源框架。
06:11 教程、代码定制、对话式表单、社区挑战。
09:09 探索 Qdrant 的内存特性。
13:02 Qdrant 进行文档量化实验。
17:52 探索细节、导出和记忆。
20:42 应对确保 Cheshire Cat 可靠性的挑战。
23:36 利用酷炫特性带来了巨大挑战。
27:06 基于插件的方法是 CAT 框架的特色。
29:28 总结

Piero 和 Nicola 的更多语录

“我们与 Qdrant 有一点合作关系,因为这个框架中的原生数据库就是 Qdrant。”
— Piero Savastano

“我们探索了 Qdrant 的一个特性,即 Qdrant 别名(aliases)特性,我们称这个话题为‘醉猫效应’,因为如果我们有多个嵌入器,例如两个模型、两个具有相同维度的嵌入器,我们可以将来自两个具有相同维度的不同嵌入的因子放入情景或声明性集合中。但对于相同的句子,这些点是不同的,对于猫来说就像人类混合饮品一样,它会头痛得很厉害,不明白检索到了什么。”
— Nicola Procopio

“这是一个经典的语言模型助理聊天界面,对于每条消息,你都有可解释性,你可以上传文档。所有这些都是自动处理的,我们从新功能开始。你有一个内存页面,可以在其中搜索猫的记忆、删除、探索集合,来自 Qdrant 的集合。”
— Piero Savastano

“因为我是一名研究员,一名数据科学家,我喜欢尝试像二进制量化这样奇怪的特性,但我们需要把重点放在用户需求和用户行为上。”
— Nicola Procopio

文字记录

Demetrios:互联网上的各位朋友,大家好!我们又来参加一次向量空间对话了,我得说今天是个特别的日子。今天 Cheshire Cat 的朋友们将全力登场,我想马上开始,因为我知道他们有很多话要说。而且今天我们还能享受买一送一的折扣。这将是你前所未有的体验。也许这些话说得有点大。我正在把他们捧得很高。Piero 将现场登场。你在哪儿,Piero?Piero,创始人。

Demetrios:他在那儿,Cheshire Cat 的创始人。今天和你一起的是 Nicola,他是核心贡献者之一。很高兴见到你们两位,非常激动。你们今天将和我们聊聊你们诗意地描述的如何用 Cheshire Cat 应对长尾问题。我知道你们准备了一些幻灯片。我知道所有这些有趣的东西现在都准备好了,我这就让你们开始,这样我们就不会浪费任何时间了。准备好了吗?谁先分享屏幕?是 Nicola 还是?

Piero Savastano:我来。谢谢。

Demetrios:开始了。伙计,你应该现在就能看到了。

Piero Savastano:是的。

Demetrios:砰。

Piero Savastano:开始吧。谢谢,Demetrios。很高兴能做客向量空间对话。我们来聊聊 Cheshire Cat AI。这是一个开源框架。我们与 Qdrant 有一点合作关系,因为这个框架中的原生数据库就是 Qdrant。这是一个 Python 框架。在开始深入细节之前,我先给你看一个小视频。

Piero Savastano:这是网站。所以你看,这是一个经典的语言模型助理聊天界面,对于每条消息你都有可解释性,你可以上传文档。所有这些都是自动处理的,我们从新功能开始。你有一个内存页面,可以在其中搜索猫的记忆、删除、探索集合,来自 Qdrant 的集合。我们有一个插件系统,你可以发布任何插件。你可以出售你的插件。已经有一个庞大的生态系统了,我们还会解释内存。我们有适用于大多数常见语言模型的适配器。

Piero Savastano:暗色主题,你可以用这个框架做很多事情。这就是它的呈现方式。我们有一个包含教程的博客,但回到我们的数据上,它是开源的,GPL 许可。我们有一些不错的数据。我们主要在意大利以及很大一部分欧洲地区(东欧)活跃,在美国也有一些社区。已经有很多贡献者了,我们的 Docker 镜像已经被下载了很多次,所以启动和运行真的很容易,只需要运行 docker run 就可以了。我们还有一个拥有数千名成员的 Discord 服务器。如果你想加入我们,会很有趣的。

Piero Savastano:我们喜欢梗图,喜欢围绕代码构建文化,所以它不仅仅是代码,这些是猫的主要组成部分。你有一个常规的聊天界面。“兔子洞”是专门用于文档摄取的模块。你可以扩展所有这些部分。我们有一个代理管理器。Meddetter 是管理插件的模块。我们有一个向量数据库,顺带一提,它原生就是 Qdrant。我们使用基于文件的 Qdrant、容器版本以及云版本。

Piero Savastano:所以如果你正在使用 Qdrant,我们支持整个栈。现在,通过这个框架,我们有一个嵌入器和一个大型语言模型,它们都支持嵌入器和语言模型。你可以使用任何你想要的语言模型或嵌入器,无论是闭源 API、开放的 Ollama,还是自托管的任何东西。这些是主要特性。所以猫的第一个特性是它已经准备好战斗了。它已经“狗化”了(指变得健壮易用)。它是模型无关的。在终端中输入一条命令,你就可以“喵喵”了。

Piero Savastano:另一方面是,它不仅有一个检索增强生成系统,还有一个行动代理。所有这些都是可定制的。你可以插入任何你想要的脚本作为代理,或者定制现有的默认代理。我们的一大特色是,我们不仅像大家一样在文档上做检索增强生成,我们还在对话上做增强生成。我听到你的键盘声了。我们在对话和程序上做增强生成。所以我们的工具和表单对话形式也被嵌入到数据库中。我们有一个庞大的插件系统。

Piero Savastano:它真的很容易使用,并且有不同的原语。我们有钩子(hooks),也就是事件,类似 WordPress 的事件。我们有工具、函数调用,而且我们刚刚建立了一个对话式表单的规范。所以你可以使用你的助手来点披萨,例如,多工具对话并点一个披萨,预订航班。你可以做操作性的事情。我已经说过了,再重复一下,它不仅仅是一个运行器,而是一个功能完备的框架。所以我们构建它不是为了使用语言模型,而是为了在语言模型之上构建应用程序。有一个详细的文档,描述了所有的事件。

Piero Savastano:你可以找到教程,用几行代码就可以改变提示词。你可以使用受 Long Chain 启发的工具,而且,这也是我们刚刚构建的重要部分,你可以使用对话式表单。我们在 GitHub 和我们的 Discord 上直接发起了一个披萨挑战赛,我们挑战社区成员构建原型来支持多轮对话式的披萨点单。这个挑战赛的结果就是这个规范,你可以在 Python 中定义一个严谨的模型,然后继承框架中的披萨表单或猫表单,你可以提供触发表单、停止表单的语句示例,并且可以自定义提交函数和与表单相关的任何其他函数。所以通过一个简单的子类,你就可以处理实际的、操作性的多轮对话。我真的相信我们是世界上最早构建出这种规范的之一。我们有很多插件。很多是由社区自己构建的。

Piero Savastano:很多人已经在托管私有插件。有一个独立的小型插件市场。所有这些插件都是开源的。有很多方法可以定制猫。这里最大的优势是没有供应商锁定。所以,既然框架是开放的,插件系统也是开放的,你就不需要通过科技巨头的审查。这是未来按照开源价值观推动框架发展的最佳关键点之一。我们计划添加多模态能力。

Piero Savastano:目前我们只支持文本,但有生成图像的插件。我们希望在框架中原生支持图像和声音。我们已经实现了对话式表单。在稍后的演讲中,我们可以更详细地讨论这一点,因为它非常酷,我们希望将知识图谱集成到框架中,以便我们能够同时处理符号向量表示和符号网络表示,比如链接数据,例如维基数据。这些东西将会非常有趣。是的,我们热爱 Qdrant。它是我们的默认数据库。我们支持三种不同的形式:基于文件的、基于容器的以及基于云的。

Piero Savastano:从现在起,我想把时间交给 Nicola,他对向量搜索这个话题更为了解,并且他编写了大部分与数据库相关的部分。谢谢大家。Nicola 请。

Nicola Procopio:谢谢 Piero。谢谢 Demetrios。我非常荣幸能在这里做客,因为我是向量空间对话的粉丝。好的,Qdrant 是猫的向量数据库,现在我将尝试探讨我们在 Cheshire Cat 上使用的特性。第一张幻灯片解释了猫的记忆。因为 Qdrant 是我们的记忆。我们有三个部分的长期记忆。情景记忆,用于存储和管理对话、聊天记录;声明性记忆,用于存储和管理文档;以及程序性记忆,用于存储和管理工具,以及如何使用多个嵌入器管理这三种记忆,因为用户可以选择他们喜欢的嵌入器并更改它。

Nicola Procopio:我们探索了一个特性,Qdrant 的别名(aliases)特性,我们称这个话题为“醉猫效应”,因为如果我们有多个嵌入器,例如两个模型、两个具有相同维度的嵌入器,我们可以将来自两个具有相同维度的不同嵌入的因子放入情景或声明性集合中。但对于相同的句子,这些点是不同的,对于猫来说就像人类混合饮品一样,它会头痛得很厉害,不明白检索到了什么。对我们来说,现在流程是这样的。我们用名称创建集合,然后使用别名来。

Piero Savastano:标记。

Nicola Procopio:用所使用的嵌入器的名称来标记这个集合。当用户改变嵌入器时,我们检查嵌入器是否具有相同的维度。如果维度相同,我们也会检查别名。如果别名相同,我们就不做任何改变。否则,我们会创建另一个集合,这就是醉猫效应。这是我们在猫中使用的第一个特性。另一个特性是量化,因为借助 Qdrant 的这一特性,我们在性能上提高了准确性。我们使用标量量化,因为我们是模型无关的,也使用二进制量化等其他量化方法。

Nicola Procopio:如果你查阅 Qdrant 文档,会发现它不仅对所有嵌入器都进行了实验,也对 OpenAI 和 Coere 进行了实验。如果我没记错的话,标量量化(scalar quantization)用于存储步骤。向量经过量化并以混合模式存储,原始向量在磁盘上,量化向量在 RAM 中,通过这个过程,我们可以使用更少的内存。对于 Qdrant 的标量量化,float32 元素被转换为 int8,单个元素需要减少 75% 的内存。对于像 Gina embeddings 或 Mistral embeddings 这样包含 1000 多个元素的大型嵌入,这是一个巨大的改进。第二部分是检索步骤。我们使用量化查询与量化向量计算余弦相似度,并得到前 N 个结果,就像一个简单的语义搜索管道。

Nicola Procopio:但是如果我们想要量化模式下的前 N 个结果,量化模式的信息质量较低,所以我们使用过采样(oversampling)。过采样是一个简单的乘法。如果我们想要前 N 个,N 为十,使用过采样,评分比如 1.5,我们就会得到 15 个结果,即量化结果。当我们得到这 15 个量化结果后,我们也会检索同样的 15 个未量化向量。然后,在这些未量化向量上,我们根据查询重新评分并过滤出最好的十个。这是一个改进,因为检索步骤非常快。是的,通过使用这些技巧,Cheshire Cat 量化后的向量实现了最高。

Piero Savastano:四。

Nicola Procopio:内存占用减少四倍,性能提升两倍。使用 Qdrant 的这一特性,我们非常快。最后但同样重要的是,我们将深入探讨内存。这是 Piero 之前展示的可视化效果。这是我们使用的 2D 向量空间可视化,与 Qdrant 云的可视化非常相似。对于嵌入,我们有搜索栏,可以选择要检索多少个向量。我们可以选择内存和其他过滤器。我们可以按内存过滤,可以清除一个或所有内存,清理我们的所有空间。

Nicola Procopio:我们可以通过细节深入了解。我们可以点击点,就会出现一个气泡,或者使用细节视图,我们就会看到每个内存中靠近我们查询的前 N 个结果列表。最后但同样重要的是,我们可以通过两种模式导出和分享我们的记忆。第一种是从 UI 中使用导出按钮导出 JSON。如果你非常好奇,可以导航到项目文件夹,分享包含所有记忆的长期记忆文件夹。或者实验性功能是“唤醒睡鼠”(wake up the door mouse)。这个功能很简单,就是下载 Qdrant 快照。这是实验性的,因为快照很容易下载,我们将研究更快速的方法来使用它。

Nicola Procopio:但现在它可以工作了,有时我们(指开发者),有些用户也会使用这个功能。对我来说就到这里了,谢谢。

Demetrios:好的,太棒了。时间刚刚好。我知道聊天里已经有一些问题了,其中一个是我问的。Piero,我想你已经回答了。不过我们什么时候能吃到由可爱的 Cheshire cat 制作的开心果冰淇淋呢?

Piero Savastano:所以计划是让猫通过可以实现的 API 服务订购冰淇淋。这样我们就可以在哪里见面或者在我们家,冰淇淋会通过猫送来。猫能够接受订单,我们每个人都可以点不同的口味,但至于制作冰淇淋本身,我们还需要等待更多的开源机器人技术出现。然后我们才能在那方面进展。

Demetrios:然后我们就能实现它,就能得到完整的程序了。这多酷啊?好了,我再给一分钟时间,让聊天里的任何人提问。这真的太酷了,我很感谢你们的深入讲解。不仅讲解了这个领域和你们正在做的事情,还讲解了你们使用 Qdrant 的不同方式以及背后的挑战和架构。在大家打字提问的时候,我特别想问你,Nicola,在努力让 Cheshire Cat 变得更可靠、更有信心执行任务方面,你遇到过哪些挑战?

Nicola Procopio:挑战主要在于如何将 Qdrant 的许多特性与用户需求结合起来。因为我是一名研究员,一名数据科学家,我喜欢尝试像二进制量化这样奇怪的特性,但我们需要把重点放在用户需求和用户行为上。有时我们会去掉 Cheshire cat 上的一些特性,因为它现在对用户不重要,而且这可能会引入一些 Bug,或者更确切地说,给用户带来误解。

Demetrios:你能听到我说话吗?好的。很好。现在我在聊天中看到一个问题,问你们是否正在考虑猫的云版本。就像 SaaS 一样,它会来的。它正在开发中。

Piero Savastano:正在开发中。你不仅可以自由地自行托管猫,有些人甚至把它安装在树莓派上,所以它非常轻量。我们计划推出托管版本,以及一个包含小型市场的更大插件生态系统。用户也可以上传甚至可能出售他们的插件。所以我们想建立一个——我们的愿景是一个 WordPress 风格的生态系统。

Demetrios:太酷了。噢,那太棒了。所以基本上,从 Nicola 谈论的一些挑战中我听到的是,嘿,Qdrant 中有一些非常酷的特性,但这几乎就像你必须盯着目标,确保你在为人们的需求和意愿而构建,而不是仅仅因为可以使用酷炫特性就使用它们。然后 Piero 你说,嘿,我们真的想让人们能够构建更多酷炫的东西,并使用所有这些酷炫的不同特性以及他们想使用的任何风格或工具。但我们想成为生态系统的创造者,这样任何人都可以基于这个生态系统带来并创建应用,然后还能获得报酬。所以不仅仅是 Cheshire cat 获得报酬,还有创造酷炫东西的贡献者。

Piero Savastano:是的。社区是第一主角,没有社区就没有一切。我告诉你,猫最初只是一个教程。当 chat GPT 出来时,我决定做一个小的 RAG 教程,我选择了 Qdrant 作为向量数据库。我用了 OpenAI 作为语言模型,然后我构建了一个小教程,然后从一个教程到演示如何在 GitHub 上构建一个代理,它完全失控了(指发展超出了预期)。所以整个框架是自然生长的?

Demetrios:是的,那是最好的。这真的很酷。Simone 正在问是否有公司已经在用 Cheshire cat 了,你能提几个吗?

Piero Savastano:好的,没问题。在意大利,至少有 10 到 15 家公司,分布在教育、客户服务、典型的聊天机器人使用领域。其中一家特别在尝试为公共管理部门构建应用,这在国际层面真的很难做。我们在德国看到一些情况,比如一些网络代理公司开始在美国稍微使用猫。大多数他们都在尝试使用猫和 Ollama 作为运行器来构建代理。还有一家公司特别是在拉斯维加斯的会议上展示了一个关于 3D 头像的方案。在这个头像里面,猫作为一个语言设备存在。

Demetrios:噢,不错。

Piero Savastano:老实说,我们在跟踪公司方面有点问题,因为我们还没有遥测系统。目前我们决定不进行遥测。所以我希望公司能做出贡献并展现自己。如果不是这样,我们会稍微多跟踪一些。但使用猫的公司至少有 50、60、70 家。

Demetrios:是的,不错。所以如果有人正在使用猫,但还没和 Piero 聊过,请告诉他,这样他就能很好地了解你们在做什么以及如何做的。还有一个关于市场分析的问题。是否有竞争对手?

Piero Savastano:有很多竞争对手。当你深入了解猫与其他许多正在出现的框架的区别时,我们会发现从一开始我们就决定采用基于插件的操作代理模式。目前,大多数框架都是检索增强生成框架。我们既有检索增强生成,也有工具和表单。工具和表单也被嵌入了。所以猫可以拥有两万个工具,因为我们也嵌入了工具并对函数调用进行了召回。因此,我们同时扩展了文档、对话、工具和对话式表单,到目前为止我还没看到有人这样做。

Piero Savastano:所以如果你想构建一个实际的、操作性的应用程序,用来购买产品、点披萨、做事情,或者有一个公司助手。猫目前在这方面做得很好。

太棒了。

Nicola Procopio:而且猫在 Discord 上有一个非常庞大的工作社区。

Piero Savastano:我们的 Discord 社区很热闹。

Demetrios:你们有最棒的梗图。如果这还不能吸引人加入 Discord,我就不知道什么能了。

Piero Savastano:Nicola 请。抱歉打断了你。

Demetrios:没关系。

Nicola Procopio:好的。社区是 Cheshire Cat 的一个优势,因为我们在 Discord 上有很多开发者用户,对于一个开源项目来说,社区是百分之百的基础。

Demetrios:各位伙计们,这真是太棒了。我非常感谢你们来到向量空间对话分享关于猫的一切,希望所有感兴趣的人都能去看看,加入你们的社区,分享一些梗图,并参与进来,甚至可能回馈并创造一些工具。那会非常棒。所以 Piero 和 Nicola,我非常感谢你们的时间。我们下次再见。

Piero Savastano:谢谢。

Nicola Procopio:谢谢。

Demetrios:如果有人想来参加向量空间对话,分享你们如何使用 Qdrant 的最新情况,我们非常乐意聆听。只需联系我们,我们会安排时间。下次再见。各位再会。再见。

免费开始使用 Qdrant

开始使用