0

Indexify 揭秘 – Diptanu Gon Choudhury | 向量空间讲座

Demetrios Brinkmann

·

2024年1月26日

Indexify Unveiled - Diptanu Gon Choudhury | Vector Space Talks

“我们有像 Qdrant 这样的东西,它非常专注于向量搜索。所以我们现在了解了存储系统的形态。”
— Diptanu Gon Choudhury

Diptanu Gon Choudhury 是 Tensorlake 的创始人。他们正在构建 Indexify——一个开源的、可扩展的非结构化数据结构化提取引擎,用于为 AI/代理驱动的工作流和查询引擎构建近实时知识库。在构建 Indexify 之前,Diptanu 在 Hashicorp 创建了 Nomad 集群调度器,在 Netflix 发明了 Titan/Titus 集群调度器,领导了 FBLearner 机器学习平台,并在 Facebook 构建了实时语音推理引擎。

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

主要收获

Diptanu 将深入探讨 Indexify 如何彻底改变数据基础设施以彻底改变 AI 代理工作流,将原始数据转换为实时知识库,并分享关于优化基于 RAG 的应用程序的专家见解,所有这些都置于不断发展的 Spark 环境中。

您将发现什么

  1. 创新数据基础设施:Diptanu 深入探讨了 Indexify 如何通过今年更专注于数据基础设施和对生成式 AI 进行更精细的抽象来彻底改变企业界。
  2. 呼叫中心的 AI 协驾:了解 Indexify 如何通过实时知识库简化客户服务,改变代理的互动和问题解决方式。
  3. 扩展实时索引:发现系统强大的实时索引内容能力,支持多个提取器同时运行。这一切都与正确的模型和即时内容生成的计算能力有关。
  4. 革新开发者体验:Diptanu 与 Demetrios 探讨了 Spark 的未来,重新构想 Spark 以适应当今的技术能力,这与两年前截然不同!
  5. AI 代理工作流洞察:了解 AI 代理驱动工作流的核心,模型动态地对数据做出反应,在实时环境中做出协调的决策。

趣闻:Diptanu 开发 Indexify 是受大型语言模型在应用程序中日益增长的使用以及随后对更好数据基础设施以支持这些技术的需求所推动的。

节目笔记

00:00 AI 对模型生产和工作流的影响。
05:15 构建代理需要索引以进行持续更新。
09:27 早期 RaG 和 LLM 采用者忽视数据基础设施。
12:32 设计合作伙伴为呼叫中心创建副驾驶。
17:00 使用可扩展模型进行高效索引和生成。
20:47 Spark 功能多样,适用于许多用例。
24:45 关于 RAG 的最新调查论文涵盖了技巧。
26:57 数据生成各个方面的评估。
28:45 平衡事实准确性中的信任和成本。

Diptanu 的更多引言

“2017 年,当我开始学习机器学习时,我们需要六个月才能在生产中发布一个好的模型。而今天,在 2024 年 1 月,每周都有新模型问世,人们正在将其投入生产。”
– Diptanu Gon Choudhury

“随着时间的推移,您希望从现有数据中提取新信息,因为模型正在不断改进。”
– Diptanu Gon Choudhury

“我们正处于演示的黄金时代。LLM 演示的黄金时代。我认为,几乎任何具有一些编程知识的人都可以使用 OpenAI API 或嵌入模型等来编写演示。”
– Diptanu Gon Choudhury

文字记录

Demetrios:我们直播了,宝贝。就是这样。欢迎回到另一期向量空间讲座。我今天和我的老朋友 Diptanu 在这里。他是 Tenterlake 的创始人兼创建者。他们正在构建 Indexify——一个开源的、可扩展的非结构化数据结构化提取引擎,用于为 AI 代理驱动的工作流和查询引擎构建近实时知识库。如果听起来我只是把书中的每一个流行词都扔进了那个句子,你可以说,对了,我们在这里,我们将在接下来的 30 分钟内剖析这一切意味着什么。所以,伙计,首先,我必须让所有在场的人知道,你是个狠角色。

Demetrios:你有一些成就。我们可以说,在你创建 Tensorlake 之前,我们只是让人们知道你曾在 Hashicorp 工作,你创建了 Nomad 集群调度器,你是 Netflix 的 Titus 集群调度器的发明者。你领导了 FB learner 机器学习平台,并在 Facebook 构建了实时语音推理引擎。你可能是我们节目中,也是我有幸与之交谈过的人中,成就最多的人之一,这说明了很多。我一生中和很多人交谈过,所以我想深入探讨一下,伙计。我要问你的第一个问题,这是一个大问题。你所说的 AI 代理驱动工作流是什么意思?你是在谈论自主代理吗?你是在谈论,比如语音代理吗?那是什么?

Diptanu Gon Choudhury:是的,我本来想说过去几年对 AI 来说是多么棒。我的意思是,上下文学习改变了人们在生产中做模型、访问模型和使用模型的方式,就像在 Facebook。2017 年,当我开始做机器学习时,我们需要六个月才能在生产中发布一个好的模型。而今天,在 2024 年 1 月,每周都有新模型问世,人们正在将其投入生产。这有点像 Yolo,我觉得人们已经停止衡量模型做得有多好,只是将其投入生产,但我们就是这样。但我认为所有这一切的基础是,模型能够在一定程度上对数据和非参数知识进行推理。我们现在看到的是工作流不再完全是启发式驱动的,或者正如人们所说,是软件 10 驱动的。人们正在将模型置于其中,模型对工作流所看到的数据做出反应,然后人们使用模型对数据的行为,并让模型决定工作流应该做什么?我认为这几乎就是,对我来说,代理是什么,即代理响应世界的信息和外部信息,并对信息做出反应,并协调某种业务流程或某种工作流,某种工作流中的决策。

Diptanu Gon Choudhury:这就是我所说的代理。它们可以是自主的。它们可以是编写电子邮件或编写聊天消息之类的东西。这里的范围很广。

Demetrios:太棒了。那么下一个问题,也是一个合乎逻辑的问题是,我也会附和你的说法。就像我们去年看到的进步,哇。时代在变,我们正在尝试在生产中进行评估。我喜欢这个词,是的,我们只是 Yolo 了它,或者正如现在的小孩所说,或者我听说,因为我不是其中之一,但我们只是为了剧情而做。所以我们正在推出这些模型,我们正在看看它们是否有效。我想你看到了雪佛兰聊天机器人的一些有趣的引语,它在雪佛兰支持页面上是一个聊天机器人,它被问到特斯拉是否比雪佛兰更好。它说,是的,特斯拉比雪佛兰更好。

Demetrios:所以是的,我们现在就是这么做的。这是 2024 年,宝贝。我们只是把它放出去,然后测试和生产。总之,回到正题,让我们谈谈 Indexify,因为我说了你所做的一切有很多术语,给我一个直截了当的答案。给我解释一下,就像我五岁一样。是的。

Diptanu Gon Choudhury:因此,如果您今天正在构建一个依赖于增强生成(如检索增强生成)的代理,并且鉴于这是 Qdrant 的节目,我假设人们非常熟悉 Arag 和增强生成。因此,如果人们正在构建应用程序,其中数据是外部的或非参数的,并且模型需要始终查看更新的信息,因为假设应用程序用于其知识库的底层文档正在更改,或者有人正在构建一个聊天应用程序,其中新聊天消息一直在传入,并且代理或模型需要了解正在发生的事情,那么您需要一个索引或一组索引,它们会持续更新。而且,随着时间的推移,您还希望从现有数据中提取新信息,因为模型正在不断改进。另一件事是,AI 直到现在,或者直到几年前,都是非常面向领域或面向任务的,其中模态是模型背后的关键。现在我们正在进入一个世界,其中以任何形式编码的信息,文档、视频或其他,对人们正在构建的这些工作流或这些代理都很重要。因此,您需要能够摄取任何类型的数据,然后从中构建索引。在我看来,索引不仅仅是嵌入索引,它们可以是半结构化数据的索引。假设您有一张发票。

Diptanu Gon Choudhury:您可能希望将该发票转换为半结构化数据,其中包含发票来源或商品项目等信息。简而言之,您需要良好的数据基础设施来存储和提供这些索引。此外,您还需要一个可扩展的计算引擎,以便在新数据传入时,能够对其进行适当的索引和更新。同时,您还需要能够进行实验,将新的提取器和模型添加到您的平台中。Indexify 可以帮助您实现所有这些,对吧?因此,将 Indexify 想象成一个带有 API 的在线服务,开发人员可以上传任何形式的非结构化数据,然后一堆提取器在集群上并行运行,从这些非结构化数据中提取信息,然后持续更新 Qdrant 或 Postgres 等系统上的索引,以存储半结构化数据。

Demetrios:好的。

Diptanu Gon Choudhury:您基本上可以在一个应用程序、一个二进制文件中获得这些功能,该二进制文件分布在您的集群上。除了存储系统之外,您不需要任何外部依赖项,即可为您的 Rag 应用程序或 LLM 代理提供一个高度可扩展的数据基础设施。

Demetrios:太棒了。那么跟我谈谈创建这个的灵感。你看到了什么,让你产生了火花,你知道吗?市场上需要有能处理这个的东西。是的。

Diptanu Gon Choudhury:今年早些时候,我在这里与一家生成式 AI 初创公司的创始人合作。我看着他们在做什么,我在帮助他们,我看到了这一点。然后我环顾四周,看看正在发生什么。不是今年早些时候,而是 2023 年的某个时候。2023 年初,我正在研究开发人员如何使用 LLM 构建应用程序,我们正处于演示的黄金时代。LLM 演示的黄金时代。我认为,几乎任何具有一些编程知识的人都可以使用 OpenAI API 或嵌入模型等来编写演示。我主要看到这些演示或应用程序的数据基础设施部分非常基础,人们会进行一次性数据转换,构建索引,然后进行操作,在其上构建应用程序。

Diptanu Gon Choudhury:然后我开始与企业中 RaG 和 LLM 的早期采用者交谈,我开始与他们讨论他们如何为 LLM 构建数据管道和数据基础设施。我觉得人们大多对应用程序层感到兴奋,对吧?很少有人考虑数据基础设施,它几乎是临时搭建的,对吧,管道,比如 RabbitMQ,比如 x、Y 和 z,非常定制化的管道,它们擅长一次性数据转换。所以你把一些文档放在队列中,然后文档以某种方式被嵌入并放入 Qdrant 之类的东西中。但是没有人考虑如何重新索引?如何向你的管道添加新功能?或者如何保持整个系统在线,对吧?在重新索引时保持索引在线等等。所以从经典的意义上讲,如果你和一位分布式系统工程师交谈,他们会说,你知道,这是一个 MapReduce 问题,对吧?所以有 Spark 这样的工具,有 Ray 这样的工具,它们会经典地解决这些问题,对吧?如果你去 Facebook,我们使用 Spark 来做类似的事情,或者像 Presto,或者我们有大量的大数据基础设施来处理类似的事情。我认为在 2023 年,我们需要一个更好的抽象来做这样的事情。世界正在走向无服务器,对吧?开发人员理解函数。开发人员将计算机视为函数,将函数视为分布在集群上的函数,并且可以将内容转换为 LLM 可以消费的东西。

Diptanu Gon Choudhury:这就是灵感,我当时在想,如果我们在 2023 年为生成式 AI 重新设计 Spark 或 Ray,它会是什么样子?我们如何让它变得如此简单,以至于开发人员可以编写函数来从任何形式的非结构化数据中提取内容,对吧?你不需要考虑文本、音频、视频或任何其他形式。你编写一个可以处理特定数据类型并从中提取内容的函数。现在我们如何扩展它?我们如何透明地为开发人员提供管理和提供生产中索引的所有能力?这就是它的灵感。我想为生成式 AI 重新构想 MapReduce。

Demetrios:哇。我喜欢你发给我的关于不同用例的想法,我很乐意深入探讨,并将其转化为你所看到的实际有形的东西。以及你如何将其插入到这些不同的用例中。我想我首先想看的是为呼叫中心座席构建一个副驾驶,以及它在实践中到底是什么样子。是的。

Diptanu Gon Choudhury:我举这个例子是因为它与我的心非常贴近,因为我们有一个设计合作伙伴正在做这个。你会看到,在一个呼叫中心,进入呼叫中心的信息或呼叫中心的人类座席处理的信息非常丰富。在一个呼叫中心,你有电话进来,你有聊天消息进来,你有电子邮件往来,然后还有文档,它们是人类座席回答问题或做出决策的知识库。对。所以他们正在处理大量数据,然后他们总是拉出大量信息。所以我们的一位设计合作伙伴正在为呼叫中心构建一个副驾驶。他们正在做的是,他们希望呼叫中心的人类座席能够根据与用户发生的对话或通话的上下文轻松回答问题,或者拉取有关公司政策的最新信息等等。所以他们使用 indexify 的方式是,他们将所有内容,例如进入 indexify 的原始内容,视频,不,实际上是音频电子邮件、聊天消息。

Diptanu Gon Choudhury:然后他们有一堆提取器来处理不同类型的模态,对吧?一些提取器从电子邮件中提取信息。例如,他们会进行电子邮件分类,他们会嵌入电子邮件,他们会从电子邮件中进行实体提取。因此,他们正在从电子邮件中创建许多不同类型的索引。语音也是如此。对吧?通过电话传入的数据。他们首先使用 ASR 提取器对其进行转录,然后语音将被嵌入,并且整个文本管道将被调用到其中,然后语音将可搜索。如果有人想找出发生了什么对话,他们将能够查找内容。有一个摘要提取器,它会查看电话,然后总结客户打电话的目的等等。

Diptanu Gon Choudhury:所以他们基本上正在建立一个关于客户正在发生什么事情的近实时知识库。他们还在从他们的文档中提取信息。所以这是一个经典的用例。现在他们唯一的依赖本质上是一个 blob 存储系统和索引服务基础设施,在这种情况下,例如 Qdrant 和 postgres。他们自己编写了一堆提取器,我们编写了一些提取器,他们直接使用它们,并且他们可以将系统扩展到他们需要的程度。它为他们提供了一个高级抽象,用于构建索引并在 LLM 中使用它们。

Demetrios:所以我真的很喜欢你拥有非结构化数据和半结构化数据以及它们如何几乎协同工作的想法。我认为非常清楚的一点是,你拥有你正在做的转录、嵌入,但你也有非常结构化的文档,也许它们来自上次通话,并且它们在某种数据库中。我想我们可以说,无论是 Salesforce,它都在 Salesforce 中,你拥有所有这些。所以这些数据有一些结构。现在你希望能够插入所有这些,并且你希望能够,特别是在这个用例中,呼叫中心座席,人类座席需要快速做出决策。对。所以实时方面确实起到了作用。

Diptanu Gon Choudhury:没错。

Demetrios:你不能让它成为一个 30 秒后才能回复你的东西,或者也许 30 秒是可以的,但实际上时间越短越好。所以传统上,当我想到使用 LLM 时,我通常会把实时性排除在外。你有没有成功地让它更实时?是的。

Diptanu Gon Choudhury:所以它有两个方面。您的索引更新速度有多快?截至昨晚,我们可以在 AWS 上在五分钟内索引整个维基百科。我们可以使用 Indexify 同时并行运行多达 5000 个提取器。我觉得我们已经解决了索引部分。除非您显然正在使用 API 背后的模型,我们无法控制。但假设您正在使用某种嵌入模型或某种提取器模型,对吧,比如命名实体提取器或语音到文本模型,您可以控制并且您了解 I/O 操作,我们可以将其扩展,我们的系统可以处理快速索引的规模。现在在生成方面,这就有点微妙了,对吧?生成取决于生成模型的大小。如果您正在使用 GPD 4,那么显然您将受制于 OpenAI 提供的延迟预算。

Diptanu Gon Choudhury:如果您正在使用其他形式的模型,例如混合 MoE 或某种经过高度优化并且您已努力进行模型优化的模型,那么显然您可以将其缩短。所以这取决于端到端堆栈。它不是一个单一的软件。它不是一个单一的整体软件。因此,它取决于许多不同的因素。但我可以自信地说,我们已经解决了实时方面的索引问题,只要人们使用的模型合理并且他们的集群中有足够的计算能力。

Demetrios:是的。好的。现在再次谈论重新思考开发者体验并几乎重新构想如果今天创建 Spark 会是什么样子。

Diptanu Gon Choudhury:没错。

Demetrios:你认为你所构建的东西有哪些体现,是只有因为你今天创建它才能发生,而不是两年前就能发生的事情?

Diptanu Gon Choudhury:是的。所以我想,例如,以 Spark 为例,Spark 诞生于大数据时代,也就是 2011、12 年的大数据时代。事实上,我曾是 Apache Mesos 的提交者之一,Spark 长期使用的集群调度器。后来我在 Hashicorp 时,我们试图为 Spark 中的 Nomad 贡献支持。我想说的是,Spark 归根结底是一个任务调度器,它使用底层调度器。所以今天管理 Spark 或任何其他类似工具的团队,他们有十几或十五个人,或者他们正在使用托管解决方案,这管理起来非常复杂。对。一个 Spark 集群并不容易管理。

Diptanu Gon Choudhury:我并不是说这是一件坏事或什么。任何时候编写的软件都反映了它诞生的世界。所以它显然是那个时代系统工程等的产物。从那时起,系统工程已经取得了很大的进步。我觉得我们已经学会了如何制作可扩展但又更容易理解和操作的软件。我认为 Spark 或任何 Ray 的另一个大问题是,它们没有原生集成到数据栈中。对。它们对数据栈没有意见。

Diptanu Gon Choudhury:它们是非常出色的 MapReduce 系统,数据部分则在其之上进行分层。在某种程度上,这使得它们能够泛化到许多不同的用例。人们将 Spark 用于各种用途。在 Facebook,我使用 Spark 进行语音到文本的批处理转码,用于各种用例,其中底层存在许多问题。对吧?所以它们与大数据存储基础设施紧密相连。所以当我重新构想 Spark 时,我几乎可以采取这样的立场:我们将使用 blob 存储进行数据摄取和原始数据写入,我们将拥有低延迟的服务基础设施,例如 Postgres 或 Clickhouse,用于服务结构化数据或半结构化数据。然后我们还有 Qdrant 这样的系统,它非常适合进行向量搜索等。所以我们现在了解了存储系统的形态。

Diptanu Gon Choudhury:我们知道开发人员希望与它们集成。所以现在我们可以控制计算层,使计算层优化计算和数据生成,以便它们可以写入这些数据存储中,对吧?所以我们非常了解底层存储系统的 I/O 特性。我们知道用例是人们希望在 LLM 中使用这些数据,对吧?所以我们可以做出设计决策,例如我们如何写入这些存储系统,我们如何专门为 LLM 提供服务,我觉得如果开发人员使用其他工具,他们自己就会做出这些决策。

Demetrios:是的,这确实感觉像是为此进行了优化,并且认识到 Spark 几乎像一把瑞士军刀。正如你所说,你可以用它做一百万件事,但有时你不想做一百万件事。你只想做一件事,而且你希望能够非常容易地做那件事。我有一个朋友在某个企业工作,他谈到 Spark 工程师拥有世界上所有的工作保障,因为,正如你所说,你需要很多这样的工程师,而且,这很难,能够从事这项工作,并且深入了解它及其来龙去脉。所以我能理解你在这方面的意思。

Diptanu Gon Choudhury:是的,我的意思是,我们基本上将计算引擎与存储集成在一起,这样开发人员就不必考虑它了。插入你想要的任何存储。我们目前显然支持所有 blob 存储,以及 Qdrant 和 postgres。Indexify 未来甚至可以拥有其他存储引擎。现在,应用程序开发人员所需要做的就是将其部署在 AWS 或 GCP 或任何地方,对吧?拥有足够的计算能力,将其指向存储系统,然后现在构建你的应用程序。你不需要做出任何艰难的决定,也不需要通过将五种不同的工具组合在一起并花费五个月的时间来构建数据层来构建分布式系统,而是专注于应用程序,构建你的代理。

Demetrios:还有一件事。在我们结束之前,我想问你最后一件事,如果大家有任何问题,请随时在聊天中提出。我也在监控。但我想知道你对那些正在构建基于 RAG 的应用程序的人有什么建议,因为我觉得你可能在野外看到过不少这样的应用程序。那么你看到过哪些优化或一些效果很好的技巧?是的。

Diptanu Gon Choudhury:所以我想,首先,最近有一篇论文,一篇 RAG 调查论文。我真的很喜欢它。也许你可以在节目笔记中附上链接,如果你有的话。最近有一篇我非常喜欢的调查论文,它涵盖了人们可以使用 RAG 的许多技巧和窍门。但本质上,RAG 是一个信息。RAG 在其本质上是一个两步过程。一个是文档选择过程,一个是文档阅读过程。文档选择是如何从可能存在的数百万文档中检索到最重要的信息,然后阅读过程是如何将它们塞进模型的上下文中,以便模型可以根据上下文对其生成进行基础。

Diptanu Gon Choudhury:所以我认为这里最棘手的部分,也是技巧最多的部分是文档选择部分。这是一个经典的情報检索问题。所以我建议人们围绕排序算法进行大量实验,命中不同类型的索引,并通过合并来自不同索引的结果来优化结果。对我来说总是有效的一件事是以非常有系统的方式缩小我正在选择的文档的搜索空间。比如使用某种混合搜索,其中有人首先进行嵌入查找,然后进行关键字查找,或者反之,或者并行查找然后合并结果?这些缩小搜索空间的事情总是对我有用。

Demetrios:所以我想 Qdrant 团队的成员之一会很想知道,因为我经常和他们谈论这个问题,即检索的评估。你有没有发现这方面有什么技巧或窍门,以及评估检索到的内容的质量?

Diptanu Gon Choudhury:所以我还没有遇到一种适用于所有用例的黄金万能评估解决方案。评估真的很难。有像 ragas 这样的开源项目正在尝试解决这个问题,每个人都在尝试解决评估的各个方面,例如 rag 的准确性。其中一些人尝试评估结果的准确性,一些人尝试评估答案的多样性等等。我认为我们的设计合作伙伴最关心的是事实准确性。事实准确性方面,一个非常有效的流程是拥有一个批评模型。让生成模型生成一些数据,然后让批评模型去查找引用,检查数据的准确性,生成的准确性,然后将其反馈到系统中。另一个回到上一点的问题是,人们可以使用哪些技巧来很好地完成 rag?我觉得人们对嵌入模型的微调不够。

Diptanu Gon Choudhury:我认为如果人们使用嵌入模型,比如 sentence transformer 或任何现成的模型,他们应该考虑根据他们正在嵌入的数据集微调嵌入模型。我认为微调嵌入模型和进行一些事实准确性检查的结合,对于让 rag 运行良好大有帮助。

Demetrios:是的,这是一个有趣的问题。我可能会在这里就额外模型进行讨论,该模型主要检查事实准确性。你总是会遇到权衡,对吧?其中一个权衡可能是,你正在进行另一个 LLM 调用,这可能会更昂贵,但你正在获得信任,或者你正在获得信心,相信它输出的内容确实是它所说的。而且它实际上是事实正确的,正如你所说。所以这就像,你能为信任付出什么代价?我们又回到了我在雪佛兰网站上看到的那件事,他们说特斯拉更好。希望当人们部署这些东西并认识到人类在玩弄聊天机器人时是狡猾的,这种情况不会再发生。所以这太迷人了,伙计。感谢你来到这里和我聊天。

Demetrios:我鼓励大家在 LinkedIn 上联系你,我知道你在上面,我们也会在聊天中留下你的 LinkedIn 链接。如果没有,请查看 Tensorleg,查看 Indexify,我们会保持联系。伙计,这太棒了。

Diptanu Gon Choudhury:是的,我也是。Demetrius,很高兴能和你聊这个,感谢你今天邀请我。

Demetrios:干杯。回头再聊。

免费开始使用 Qdrant

开始使用