0

为 OpenAPI 规范构建搜索/RAG - Nick Khami | Vector Space Talks

Demetrios Brinkmann

·

2024年4月11日

Building Search/RAG for an OpenAPI spec - Nick Khami | Vector Space Talks

“使用 Trieve 和 Qdrant 这样的工具,在 OpenAPI 规范之上构建搜索非常非常简单。我认为这里真正值得强调的是,使用 Qdrant 的基于群组的系统有多么棒。”
— Nick Khami

Nick Khami 是一位经验丰富的全栈工程师,自 Qdrant v0.11.0 于 2022 年 10 月问世以来,他就一直深入参与向量搜索和 RAG 应用的开发。他的专业知识和对创新的热情促使他创立了 Trieve,一家致力于帮助企业采用尖端向量搜索和 RAG 技术的公司。

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

主要收获

Nick 展示了 Trieve 和搜索技术的进步,并使用 Qdrant 演示了如何通过开放的 API 规范轻松构建精确的搜索功能,用于发现色彩鲜艳的运动鞋,同时阐述了改进搜索体验和分析对于立法类应用程序等多样化应用的潜力。

我们将深入探讨搜索和推荐应用的机制。无论您是开发者还是仅仅是爱好者,本期节目都保证能让您深入了解如何利用行业最新进展创造无缝的搜索体验。

以下是本期节目的五个主要收获

  1. 理解 Open API 规范:探索 Open API 规范背后的魔力,以及它们如何服务于您的开发需求,尤其是在处理 REST API 路由时。
  2. 使用 Trieve 和 Qdrant 简化:Nick 将通过一个使用 Trieve 和 Qdrant 基于群组系统的实际应用,向我们演示如何轻松构建搜索功能。
  3. 提升搜索结果:学习 Qdrant 中分组和推荐的力量,以微调您的搜索结果,并以色彩斑斓的运动鞋世界为例进行说明!
  4. Trieve 的基础设施变得简单:了解利用 Trieve 如何使创建数据集、获取 API 密钥和启动搜索变得比您想象的更简单。
  5. 使用 Tantivy 增强向量搜索:如果您对其他搜索引擎感兴趣,可以了解 Tantivy,它如何补充 Qdrant,以及它在生态系统中的作用。

趣味事实:Trieve 成立于 2023 年,其名称是“retrieve”一词的谐音。

节目笔记

00:00 Vector Space Talks 介绍 Nick Khami.
06:11 Qdrant 系统简化了复杂的构建过程。
07:09 使用 Qdrant 组织和管理内容。
11:43 创建群组:搜索结果可能不分组。
14:23 使用 Qdrant 搜索:利用系统路由。
17:00 Trieve 完成了 YC W24 批次。
21:45 彻底改变公司搜索。
23:30 下次更新:用户跟踪、分析和交叉编码器。
27:39 Qdrant 支持稀疏向量。
30:09 最后问题和总结。

Nick 的更多语录

“您可以在大约 10-15 分钟内完成这个 RAG、这个搜索和数据上传,这真的很酷,也是 Trieve 之所以能够构建这一切的唯一原因,得益于 Qdrant 优秀团队的杰出创造。”
— Nick Khami

“Qdrant 还提供群组推荐功能,这真的很酷……您不仅可以搜索群组,还可以推荐群组,这我认为很棒。是的,您可以上传所有数据,进入搜索 UI,进行搜索,测试推荐功能如何工作,在很多情况下,您还可以解决搜索中的问题。”
— Nick Khami

“通常进行推荐时,您会根据想要进行推荐的结果构建一个平均向量,然后用它进行搜索。Qdrant 现在提供了一种更先进的推荐模式,您可以遍历图谱,查看正向点的相似度,以及负向相似度。”
— Nick Khami

文字记录

Demetrios:大家好,这是 Vector Space Talks 的另一期节目。我今天很高兴和大家在一起。一如既往,我们有一位非常特别的嘉宾。我们请来了 Trieve 的创始人兼工程师 Nick。正如你们所知,我们喜欢以一些建议来开始这些环节,希望能让生活变得更好。所以当 Sabrina 在这里时,我会把话筒交给她,问她最近有什么推荐。但她现在正在旅行,所以我只分享我自己的一些建议,关于我一直在听并享受的东西。对于想要好听音乐的人,我推荐一首老歌,但仍然很棒。

Demetrios:它来自那个我现在想不起名字的不可思议的乐队,但它叫做 'this must be the place'。实际上,它来自 Talking Heads。绝对推荐这首,是开始一天的好方式。我们会把那首歌的链接放在聊天中,但我们今天不仅仅要谈论好的音乐推荐。我们要请 Nick 上台谈谈搜索和 RAG。而且 Nick 的处境非常有趣,因为他从 2022 年就开始使用 Qdrant 的向量搜索了。让我们请这位嘉宾上台,看看他有什么要说的。伙计,你好吗?

Nick Khami:嗨。

Demetrios:嗨。

Nick Khami:很高兴认识你。

Demetrios:你好吗?

Nick Khami:很好。

Demetrios:很高兴你能来。

Nick Khami:是的,是的。今天看起来旧金山会是个晴天,这很好。整个一月都在下雨,但终于迎来了一些好天气,这很棒。

Demetrios:很高兴你这么早起床来做这个。我很感激你从旧金山过来和我们谈论搜索和推荐系统。抱歉,是 RAG 应用。我脑子里一提到搜索就自动联想到推荐,因为它们有点相似,但这次不是。你要谈论的是搜索和 RAG 应用,特别是关于 Open API 规范。我知道你准备了一个演讲。你愿意开始吗?我会监控聊天。所以如果任何人有问题,请在聊天中提出,我会再次出现在屏幕上提问。

Nick Khami:是的,是的,我很乐意。我这就开始了。好的。

Nick Khami:好的。所以我想我要谈的第一件事是到底什么是 Open API 规范。这是 Qdrant 的 Open API 规范。我觉得这是一个很好的话题示例,适合 Vector Space Talk。你可以在这里看到,Qdrant 在他们的 API 上提供了很多不同的 REST API 路由。这些都存在于这个巨大的 JSON 文件中,称为 Open API 规范。

Nick Khami:有很多项目都有 Open API 规范。Stripe 有一个,我想 Sentry 也有一个。这有点像一种事实上的 API 文档方式。

Demetrios:你能把你的屏幕或者字体放大一点吗?也许放大?

Nick Khami:我想我可以,是的。

Demetrios:好的,太好了。这样我的视力就好了。哦,太棒了,太棒了。

Nick Khami:好的,我们这里做得很好吗?好的,太棒了。是的。希望这对大家来说更易读。是的。所以这是一个 Open API 规范。如果你在一个 JSON 文件里看它,它看起来有点像这样。如果你去顶部,我可以展示结构。有一个列表,或者说有一个对象叫做 paths,包含 API 的所有不同 API 路径。然后还有一个对象叫做 security,解释了认证方案。

Nick Khami:然后你有一个漂亮的 info 部分,我将忽略,这两个并不是那么重要。然后你有一个这样的标签列表,这真的很酷,因为这是组织事物的方式。如果我们回去看,你可以看到这些以标签的形式存在。所以这里的这些项目就是 Open API 规范中的标签。有一件有点有趣的事情是,如果在 OpenAPI 规范之上构建搜索相对简单就好了,因为如果你不知道自己在找什么,那么这个搜索栏并不总是很好用。例如,如果你在群组内搜索。哦,这个实际上工作得很好。哇,这看起来像是增强的 Open API 规范搜索栏。

Nick Khami:我本应在演示前检查一下的。所以这个很不错。我们的 Trieve 搜索栏,举例来说,实际上没有,哦,它有相同的搜索,但我真正感兴趣的是,我想解释一下如何增强它或将其连接到向量搜索以进行 RAG 审计。我想在这里强调的是。Qdrant 有一个非常有趣的功能叫做群组。您可以一次性搜索一组点,并以面向群组的方式返回结果,而不是只搜索一个单一的路由。对于 Open API 规范来说,这非常有趣。因为它意味着您可以搜索一个标签,同时查看每个标签的单独路径。

Nick Khami:这很难在没有像 Qdrant 这样的系统的情况下构建,这可以说是它相比 PG vector 或使用 face 或 yousearch 进行暴力搜索的主要特色之一。我的目标是找出哪个端点最适合我正在做的事情。在很多情况下,特别是 Qdrant 的 Open API 规范这个例子。为了做到这一点,我使用了 JavaScript 的脚本运行时 Bun。我非常喜欢它。它通常工作得很好。它的性能很高,而且易于使用。我在这里首先加载了 Qdrant Open API 规范的 JSON 文件,然后我导入了 Trieve 中的一些东西。

Nick Khami:Trieve 在底层使用了 Qdrant 来提供许多功能,这正是我在这里要做的方式。所以我从 Trieve SDK 客户端包中导入了一些东西,实例化了一些环境变量,设置了 Trieve API 的配置,现在有趣的部分来了。我从 Qdrant Open API JSON 规范中提取标签,这就是这个数组,然后我遍历每个标签,检查我是否已经创建了群组。如果已经创建了,我就不做任何事情。但如果没有,我就创建群组。对于每个标签,我创建这些群组,这样当我创建它们作为单个点时,就可以将每个路径插入到其相关的群组中。好的,我完成了所有群组的创建,现在对于下一部分,我遍历路径,这些是单独的 API 路由。对于每个路径,我提取它拥有的标签、摘要、描述和 API 方法。

Nick Khami:所以 POST、GET、PUT、DELETE 等等,然后我创建点。在 Trieve 的世界里,我们称每个点为一个 Chunk,有点像使用 RAG 术语。对于每个单独的路径,我创建 Chunk,通过在 group tracking ids 请求体键中包含其标签,它将自动添加到其相关的群组中。我这里有一些 try-catch,但这真的是整个脚本。使用 Trieve 和 Qdrant 这样的工具,在 Open API 规范之上构建搜索非常非常简单。我认为这里真正值得强调的是,使用 Qdrant 的基于群组的系统有多么棒。如果您能想到一个电商商店,有时一个商品有多种颜色版本。

Nick Khami:您会有一个红色版本的运动鞋、白色版本、蓝色版本等等。当有人进行搜索时,您不仅要找到相关的鞋子,还要找到该鞋子相关的颜色版本。群组允许您在 Qdrant 中做到这一点,因为您可以将每个颜色版本作为单独的点,或者在 Trieve 的世界里,作为 Chunk 放入一个给定的群组中,然后当有人搜索时,他们会在给定群组的顶部得到相关的颜色版本。这真的很不错,真的很酷。您可以看到运行这个非常简单。如果我想通过再次运行这个来更新整个数据集,我可以这样做,这只会继续创建 Qdrant 提供的所有路由的相关 Chunk。如果您正在观看并有兴趣复制这个实验,我创建了一个开源的 GitHub 仓库。

Nick Khami:我们这里会放大一下,您可以在 GitHub.com/devflowinc/OpenAPI/search 引用。您可以按照 readme 中的说明复制整个过程。好的,但我上传了所有数据。让我们从 UI 的角度看看这是如何工作的。是的。Trieve 内置了一个非常好的 UI,用于在您添加所有数据后进行搜索。所以如果我回到主页,您可以看到我正在使用 Qdrant Open API 规范数据集。这里的组织就像我使用的电子邮件地址一样。

Nick Khami:Nick.K@OpenAPI Trieve 的一个优点是,就像我关于添加数据的简单性一样,我们使用了 Qdrant 的多租户功能,提供了在一个给定组织内拥有多个数据集的能力。所以您可以拥有,我拥有 Open API 组织。您可以创建具有不同嵌入模型的数据集,以便在搜索时进行测试和实验。好的。但今天不打算介绍所有这些功能,我只想重点介绍我们刚刚构建的 Open API 搜索。所以我想进行比较和对比,我将使用之前使用的完全相同的查询,也会放大。

Nick Khami:那个查询是:我如何创建群组?这并不是一个 Gen AI RAG 搜索。这只是一个通用搜索。好的,对于“我如何创建群组”,我们将得到所有这些顶层结果。在这种情况下,我们没有进行群组导向搜索。我们只是返回相关的 Chunk。有时,或者很多时候,我认为人们会想要一个更群组导向的搜索,结果按标签分组。所以在这里我将看到,在 Qdrant 的 Open API 规范中最相关的端点或标签理论上是 Collections,而在 Collections 内部,它认为这三个路由最相关:推荐点群组、发现批处理点、推荐批处理点。这些都不是我想要的,也就是“我如何创建群组”?但这对于 Cluster 来说没问题,你可以看到创建分片键、删除。

Nick Khami:所以对于 Cluster,这有点有趣。它认为 Cluster 是相关的,很可能是因为 Cluster 是一种群组,并且在很大程度上与查询匹配。然后我们还有 Points,它关注分片系统和快照系统。当下一个版本发布时,Qdrant 将有滚动快照,这非常令人兴奋。如果有人对这个功能感到兴奋。我当然是。然后它提取指标。对于搜索可能更容易工作的另一件事。

Nick Khami:您可以输入“我如何通过群组搜索点?”,现在它会重点关注我认为是一个更好的结果。您可以在这里看到,我们对请求进行了非常漂亮的子句高亮。它将响应中最相关的句子加粗,在这种情况下是第二和第三段。是的,请求的描述和摘要。Trieve 的另一个方便之处在于,在我们的默认搜索 UI 中,您可以包含指向资源的链接。如果我点击这个链接,我将立即到达 Qdrant 重定向规范中的正确位置。这就是整个搜索体验。对于 Jedi 侧的搜索,我做的优化少得多,但我们可以实验看看效果如何。

Nick Khami:我再放大一下,各位。好的,假设我想创建一个新的 RAG 聊天,我要在这里问:我如何使用 Qdrant 以群组导向的方式搜索点?它将代表我进行搜索查询,再次得益于 Qdrant 的奇妙力量。一旦它执行了搜索查询,我就能够获取引用,并看到模型是怎么想的。模型的第一个回应做得相当不错,它说要使用 Qdrant 以群组导向的方式搜索点,我可以使用系统提供的路由和端点,我要首先使用的是 points search groups。如果我点击这里的 Doc 1,查看路由,这实际上是正确的。方便的是,您可以在...中打开链接。哦,好吧,这个 env 是错的,但方便的是,如果我粘贴并修正系统中错误的部分,将 chat 改为 search,您应该能够加载搜索 UI 的单个 Chunk 并在这里阅读,然后您可以更新它以包含文档扩展,更改索引内容的实际副本等等。

Nick Khami:这就像一个非常方便的方式来优化和增强你的数据集,而无需编写大量代码。是的,它将继续写答案。我不会详细介绍整个过程,但这确实概括了我想要展示的内容。这非常简单。你可以在大约 10-15 分钟内完成这个 RAG、这个搜索和数据上传,这真的很酷,也是 Trieve 之所以能够构建这一切的唯一原因,得益于 Qdrant 优秀团队的杰出创造。是的,各位,希望这很酷。

Demetrios:太棒了。我有几个问题。Woo,无限旋转的场。所以我想了解 Trieve,我想深入了解你们在那里做的事情。然后我想稍微谈谈你这些年看到的 Qdrant 的演变,因为你已经使用它一段时间了。但首先,你能大概介绍一下你在做什么以及你如何致力于创造你正在创造的东西吗?

Nick Khami:是的。在 Trieve,我们刚刚完成了 Y Combinator W24 批次,我们的 fundogram,这很酷。我们花了一年的时间。所以 Dens 和我于 2023 年 1 月创立了 Trieve,我们一直在持续构建,在这个过程中,我们最初尝试构建一个应用程序,让你在工作中进行 AI 驱动的辩论。这并不是最好的主意。这有点像我们最初使用 Qdrant 的原因,在构建那个应用程序的过程中,我们认为要获得像 Qdrant 这样的产品提供的出色下一代搜索非常困难,因为对于一个典型的团队来说,他们必须在本地机器上运行一个 Docker compose 文件,添加 Qdrant 服务,docker compose up D 启动 Qdrant,设置一个 env,下载 Qdrant SDK。所有这些事情在你索引所有数据后变得非常非常困难,然后你必须创建一个 UI 来查看它,因为如果你不这样做,就很难判断性能。

Nick Khami:我的意思是,你总是可以做这些基准测试,但搜索和推荐有点像启发式的事情。你可以总是有基准测试,但数据是动态的,它会变化,而且你真的需要,在我们当时经历的情况中,我们需要一种快速评估系统运行情况的方式。我们放弃了我们的 RAG AI 应用程序辩论应用,转而尝试为其他人构建基础设施,让他们从 Splade for sparse 或稀疏编码提供的质量搜索中受益。我的意思是,Elastic 的 LSR 模型,非常酷。有所有的密集嵌入向量模型,我们想提供一套托管的基础设施,用于构建这类东西。这就是 Trieve 的样子。所以,使用 Trieve,你...

Nick Khami:这更像是一种托管体验。你进入仪表板,创建一个账户,创建数据集,获取 API 密钥和数据集 ID,然后进入你的小脚本(我用于 Open API 规范的脚本只有 80 行),添加所有数据,然后砰、嘭、叮咚,你就可以开始搜索了,而且你可以。我们还提供推荐功能。也许我应该在我的演示中展示这些,比如,你可以打开一个单独的路径,并获取类似路径的推荐。

Demetrios:有推荐功能,所以我离题不远。看,搜索和推荐,它们在我脑子里占据同一个位置。

Nick Khami:Qdrant 还提供群组推荐功能,各位。这真的很酷。比如,您不仅可以搜索群组,还可以推荐群组,这我认为很棒。是的,您可以上传所有数据,进入搜索 UI,进行搜索,测试推荐功能如何工作,在很多情况下,您还可以解决搜索中的问题。一个很好的例子是,我们为 Y Combinator 公司构建了搜索功能,以便他们能做得更好。Algolia 使用的是一种较旧的搜索算法,不提供语义能力。这意味着你去 Y Combinator 公司搜索栏,输入哪个公司提供短期租赁,你找不到 Airbnb。

Nick Khami:但是使用 Trieve,是的,就是这样。但是使用 Trieve,它的神奇之处在于,即使信不信由你,有很多 YC 公司提供短期租赁,Airbnb 自然不会出现在首位。所以使用 Trieve,我们提供了一个商品化 UI,你输入那个查询,看到 Airbnb 的排名比你想要的要低一些。你可以立即调整你索引的文本,甚至添加一个重新排序权重,让它在结果中出现得更高。再做一次,它就奏效了。你也可以实验和玩弄 RAG。我认为在我们的 API 中,RAG 算是第三类公民。

Nick Khami:事实证明,搜索和推荐在我们的客户和用户中更受欢迎。但是,是的,用一句话概括 Trieve,它是一个为团队构建搜索、推荐和 RAG 的一体化基础设施套件。我们结合了像 Qdrant 这样的数据库和下一代搜索 ML AI 模型的力量,以及用于精细调整结果排名的 UI。

Demetrios:伙计,我喜欢这一点是因为你可以用做得好的搜索做很多事情,这对很多公司来说非常有价值,而且我认为很多人都忽略了它是一个已经解决的问题,但事实并非如此,而且它并不像你刚刚解释的那么容易。

Nick Khami:是的,我的意思是,我们对此充满热情。我的意思是,即使你们去 YC.Trieve.AI,那就是 Y Combinator 公司搜索,你可以与 Algolia 或 Elasticsearch 提供的老式搜索算法进行 A/B 测试。对我来说,这是神奇的。它绝对是人类智慧和伟大之处的体现,你可以输入“我应该在哪里找 Airbed?”,然后它找到了 Airbnb,尽管没有任何关键词匹配。我担心现在我们的大脑已经习惯了去 Google。在 Google 搜索栏,你可以提问,你可以输入抽象的想法和概念,并且它能工作。但是每当我们去电商搜索栏或者,哦,它们太糟糕了。

Demetrios:它们太糟糕了。每个人都有过那种经历,你甚至不搜索。你只是说,好吧,或者你会去 Google,专门在 Google 上搜索那个网站,你知道,然后加上括号。

Nick Khami:我们对此感到兴奋。我的意思是,我们想,我们正在努力让使用最新的 GenTech 为这些搜索体验提供动力变得更加容易,并帮助解决这个问题。特别是如果 AI 继续改进,人们将越来越习惯于事情能够正常工作,而无需通过分面和过滤来使其工作。是的,我们只是很高兴能让公司更容易处理和构建这些。

Demetrios:聊天中有一个问题,问我们可以在哪里获取实际的搜索指标。

Nick Khami:是的,这就是我们计划添加的下一项功能。基本上,现在在 Trieve,我们不跟踪您的用户查询。我们正在 Trieve 构建的下一项功能是一个用于跟踪这些查询的系统。您将能够在那个搜索商品化 UI 中,或者可能是一个新的 UI 中分析您数据集上使用的所有搜索,并像现在一样调整您的排名,修复问题,但借助分析的力量。我们很快还将提供的另一项功能是动态可调的交叉编码器。交叉编码器是这种神奇的神经网络,可以将全文和语义结果压缩成一个新的排名顺序。它们被低估了,但也很难随时间进行调整。我们将提供 API 端点,用于上传,用于测量您的搜索结果点击率,然后动态地在批量计时器上调整交叉编码器以调整排名。

Nick Khami:这应该会在接下来的两到三周内发布。但是,是的,我们现在才刚解决分析这个难题。我们刚刚也解决了速度问题。所以现在速度很快。正如大家在演示中可能看到的,大多数查询都在 50 毫秒以下。P95 大约是 80 毫秒,这非常酷,顺便说一下,多亏了 Qdrant。Qdrant 非常重要,我的意思是,它支持了所有这一切。但是,是的,分析功能将在接下来的两到三周内上线。

Nick Khami:我们对此很兴奋。

Demetrios:聊天中还有另一个问题,他们问,我想知道大型语言模型(LLMs)是否可以基于 Schema 建议 GraphQL 查询,因为它不像端点那样紧密耦合。

Nick Khami:我认为它们可以。在我们为这种情况构建的系统中,我实际上没有使用响应体。如果大家去 GitHub 上的 devflowinc Open API search,你们可以自己创建一个示例来解决这个问题。在 Open API JSON 规范的响应查询中,你有结构。如果你将其作为另一个段落标签嵌入到 Chunk 中,然后再进行 RAG,它很可能可以做到。我看不出有什么理由不行。

Demetrios:我已经把链接放在聊天里了,提供给任何有兴趣的人。现在让我们花几分钟谈谈使用 Qdrant 的旅程。你说你从 2022 年就开始使用它了。这些年来,产品发展了很多。你看到了什么?从一开始到现在,给你带来最大价值的是什么?

Nick Khami:我的意思是,有很多,比如,好的,我脑子里突出的想谈论的一件事是,我记得在 2023 年 5 月,有一个 GitHub issue,上面有一个 Algora 悬赏,关于 API 密钥。我记得 Dens 和我,我们已经用了一段时间了,我们知道没有 API 密钥的东西。我们总是开玩笑说:哦,我们这么早,连我们的数据库都没有 API 密钥。你必须在你的 VPC 或子路由中有访问权限才能安全地使用它。我不确定这是不是最有价值的。

Nick Khami:我会谈论其他一些更有价值的事情,但我只是记得,那有多酷。是的,是的,是的。

Demetrios:你发现它时的“国家状况”。

Nick Khami:它太令人兴奋了,API 密钥添加了,我们当时想:哇,这太棒了。这有点像一件简单的事情,但对我们来说,这就像:哦,哇,这是。我们现在在安全方面舒服多了。但是,伙计,Qdrant 添加了好多很酷的东西。有几件事我想我可能会重点提及,比如群组系统。它添加时真的很棒。我的意思是,我认为这是我最喜欢的功能之一。然后在那之后,新版本对稀疏向量的支持非常重要。

Nick Khami:我们有一个完整的疯狂子系统,使用了 Tantivy。如果正在观看的任何人知道 crate Tantivy,它是一个全文搜索。它是一个用 Rust 编写的 Lucene 替代品。而且我们构建了这个完整的疯狂子系统,然后 Qdrant,呃,支持了稀疏向量,我们当时想:哦天哪,我们可能应该就稀疏向量的事情和他们合作一下,我们甚至不知道你们想做这个,呃,因为我们花了所有这些时间来构建它,本来可能可以帮助那个 PR。我们当时感觉有点不好,呃,因为那真的很好。当它添加进来时,相关的性能修复也非常酷。还有一些其他事情,比如,我们在使用 Qdrant 时添加的,非常棒。哦,多种推荐模式,我想我忘了它们都叫什么了,但是,对于正在观看的人们来说,尝试 Qdrant 绝对值得,它太好了,太好了,太好了,与你在 PG vector 中能做的很多事情相比。

Nick Khami:有这个推荐功能很棒。通常进行推荐时,您会根据想要进行推荐的结果构建一个平均向量,然后用它进行搜索。Qdrant 现在提供了一种更先进的推荐模式,您可以遍历图谱,查看正向点的相似度,以及负向相似度。如果负向点的相似度高于正向点,它将忽略该边缘推荐。至少对我们以及我们的客户来说,当他们使用负样本时,这大大提高了他们的推荐质量。我们甚至没有发现这个功能。它在版本发布说明中,我们没注意到。一两个月后,我们有一个客户联系我们,说他们想要更高质量的推荐。

Nick Khami:我们当时想,好吧,我们是否使用了所有可用的功能?结果没有。这很酷。

Demetrios:你现在理解这一点,并且能够向我解释得几乎比我向人们解释得更好,这真的很酷。这表明你一直在深入研究,并且看到了一个强大的用例,因为有时情况是,好的,这个功能有了。需要以最好的用例方式进行沟通,以便人们能够理解。似乎在那个电商用例中,它确实很突出。

Nick Khami:这个实际上是为一个做美国立法搜索的公司提供的,很有趣,我们希望 Trieve 有更多的电商客户。我们现在的大部分客户都是 SaaS 应用。这个特别的客户,我认为他们不介意我提及他们。它叫做 Bill Track 50。如果大家想搜索美国立法,可以试试他们。他们非常好。是的,他们是真正使用这个功能的团队。但是,是的,我认为像 Qdrant 这样的基础设施还有另一个很酷的地方,它非常非常强大,以至于很多时候值得找一个实施伙伴。

Nick Khami:即使你打算使用 Qdrant,Qdrant 的团队也非常乐于助人,你应该考虑联系他们,因为他们可能会帮助任何打算构建搜索推荐功能的人弄清楚提供了哪些功能以及哪些可以在高层次上提供帮助,而不是 GitHub issue 代码层面上,而是在高层次上。思考你的用例。再说一次,搜索是一个如此启发式的问题,并且在某种程度上非常人性化,与非常熟悉搜索推荐的人一起讨论你的解决方案总是值得的。

Demetrios:是的。他们知道最好的功能和最好的工具,能让你达到想要的结果。所以。好的,Nick,最后一个问题。是关于 Trieve 的。我有一个关于你们为什么叫它这个名字的理论。是不是 retrieve?你们是不是把 Re 去掉了?

Nick Khami:是的。去掉了 re。更简洁。这就像 Facebook 的那句名言,但用在了 Trieve 上。

Demetrios:我第一次读到它的时候,我以为它一定是我不熟悉的一个法语单词。所以这很酷,因为它像法语一样。你只需要在一个或两个 e 上加上一个重音符号,然后它就更酷了。它就像最高级的奢侈品牌一样。所以感谢你来这里。感谢你向我们讲解这些并谈论它,伙计。这太棒了。

Nick Khami:是的,谢谢邀请。我很感激。

Demetrios:好的。对于其他想要参加 Vector Space Talks 的人,欢迎加入我们。你知道在哪里找我们。一如既往,再会。

免费开始使用 Qdrant

立即开始