0

向量搜索的复杂性:来自图像搜索和RAG项目的经验分享 - Noé Achache | 向量空间讲座

Demetrios Brinkmann

·

2024年1月9日

Vector Search Complexities: Insights from Projects in Image Search and RAG - Noé Achache | Vector Space Talks

“我真的认为这项技术已经成熟,将极大地帮助这种嵌入模型应用于文本搜索项目。”
– Noé Achache 谈图像嵌入的未来

想深入探索向量搜索吗?想了解它在图像搜索和文档检索中的应用分析吗?Noé 会为您解答。

Noé Achache 是 Sicara 的首席数据科学家,他从事过广泛的项目,主要涉及计算机视觉、结构化数据预测以及最近的 LLM。

在 Spotify、Apple Podcast、Podcast Addicts、Castbox 上收听此集。您也可以在 YouTube 上观看此集。

主要收获

探索 Dino V2 在图像表示中的效能以及部署向量数据库的复杂性,同时应对敏感领域中微调和数据安全的挑战。

在本集中,Noe 分享了从图像搜索到检索增强生成(RAG)的向量搜索见解,强调了在复杂项目中的实际应用。

您将学到的 5 个关键见解

  1. 尖端图像搜索:了解先进的 Dino V2 模型及其在图像表示中的效能,超越传统的特征转换方法。
  2. 数据去重策略:学习房地产清单去重的复杂过程,这是管理大量数据集合的关键任务。
  3. 文档检索技术:了解文档搜索中检索增强生成(RAG)的挑战和解决方案,包括多语言嵌入模型的使用。
  4. 敏感医疗数据保护:深入探讨处理机密医疗信息的策略以及数据安全在医疗相关应用中的重要性。
  5. 模型开发的前进之路:听 Noe 讨论迫切需要新型模型来解决行业不断变化的需求。

趣闻:Noé 在他的图像搜索项目中提到的图像表示表现最佳的模型是 Dino V2,有趣的是,它无需微调即可理解对象和模式。

笔记

00:00 向量数据库项目和讲座的相关经验。
05:57 匹配图像特征,对变化不具弹性。
07:06 计算裁剪向量,训练使其收敛。
11:37 简单的训练任务,通过难例改进。
15:25 使用难例改进文本嵌入。
22:29 用于文档搜索的图像嵌入的未来。
27:28 高效的存储和检索过程特性。
29:01 模型处理各种数据;稀疏向量现已可行。
35:59 使用内存,避免磁盘进行 CI 集成。
37:43 向量数据库和新模型的元数据过滤挑战

Noé 的更多语录

“所以基本上,最棒的是 Dino 能够在无需微调的情况下理解所有对象和紧密模式。因此,您可以获得一个现成的模型,并非常快速地开始,并非常快速地带来价值,而无需经历所有微调过程。”
– Noé Achache

“最终,嵌入并没有学习到任何非常复杂的特征,所以它并没有真正改进。”
– Noé Achache

“使用 API 模型时,以异步模式使用它会快得多,例如嵌入方程的速度提高了十倍或一百倍。所以这绝对改变了很多事情。”
– Noé Achache

文字记录

Demetrios:Noe。很高兴您来到这里。我们又回来了,进行另一次向量空间讲座,今天我们有我的朋友 Noe 加入,他是 Sicara 的首席数据科学家,如果您不知道,他正在从事广泛的项目,主要与计算机视觉相关。视觉。今天我们正在谈论驾驭向量搜索的复杂性。我们将从图像搜索和大家最近最喜欢的话题,检索增强生成,也就是 RAG,中的各种项目中获得一些实践见解。所以 Noe,我想您为我们准备了一些东西,对吗?

Noe Acache:是的,我有。我可以分享它们。

Demetrios:好的,我很高兴您来到这里,伙计。感谢您这样做。让我们开始分享您的屏幕,这样我们就可以开始工作了。

Noe Acache:好的。您能看到我的屏幕吗?

Demetrios:是的。太棒了。

Noe Acache:太好了。谢谢 Demetrius 的精彩介绍。我只是快速补充一下。正如您可能猜到的,我是法国人。我是 Sicara 的首席数据科学家。Sicara 是一家服务公司,帮助客户进行数据工程和数据科学,为他们构建项目。在此之前,我在 Realtics 从事光学字符识别工作,现在主要从事您所说的计算机视觉和 Gen AI。我领导 Gen AI 方面的工作,我已经在这里三年多了。

Noe Acache:关于向量数据库的一些相关经验,这就是我今天在这里的原因,因为我做了四个项目,四个向量软项目,我还写了一篇关于如何在2023年选择您的数据库,您的向量数据库的文章。我还在其他会议上做了一些相关演讲,例如 Pydata、DVC、伦敦和巴黎的所有 Gen AI 见面会。那么我们今天将讨论什么?首先,向量搜索项目的概述。只是为了让您了解我们可以使用向量搜索做什么样的项目。然后我们将深入探讨图像搜索项目的具体情况,然后深入探讨文本搜索项目的具体情况。所以这是四个项目。两个在图像搜索中,两个在文本搜索中。第一个是关于匹配视频中的对象以在之后出售它们。

Noe Acache:所以基本上你有一个视频。我们首先检测对象。比如它可以是一盏灯,可以是一件衣服,任何东西,我们对它进行分类,然后将其与大量相似对象进行比较,以检索最相似的一个,与大量可售对象进行比较。第二个是关于房地产广告去重。所以当中介想出售房产时,有时会有几家中介来拍摄同一房产的不同照片。所以你有同一房产的不同照片。这个项目的想法是匹配同一房产、同一资料的不同照片。

Demetrios:我见过那个,伙计。五年前我买房时就经历过。同一栋房子,有很多不同的照片,有时你根本不知道,因为照片不同。所以我很喜欢你当时是那样思考的。不好意思打断一下。

Noe Acache:是的,说实话,这是我客户的想法。所以基本上我稍后会谈到它,它涉及汇总所有广告并尝试去重。然后最后两个项目是关于药物检索、增强生成。所以这个想法是能够向你的文档提问。第一个是针对我公司的文档,第二个是针对一家医疗公司。所以有不同类型的复杂性。现在我们了解了所有这些项目,让我们深入了解它们。关于图像搜索项目,要计算图像的表示,根据基准测试以及我的经验,目前表现最佳的模型是 Dino V2。

Noe Acache:所以这是一个由 Meta 开发的模型,您可能已经见过,它使用视觉变换器。它的惊人之处在于,通过注意力图,您可以实际分割图片中重要的部分,尽管您没有明确告诉它什么重要。作为人类,它将学会专注于图片中的狗,而不会考虑嘈杂的背景。所以当我说表现最佳的模型时,我指的是与其他架构(如 Resnet 高效网络模型)进行比较,我还没有尝试过的一种方法,但也看起来很有趣。如果有人在类似项目中尝试过,请稍后联系我。我将很高兴讨论它。Sift 用于特征变换,关于特征变换的东西。它基本上是一种更传统的方法,没有通过机器学习学习到的特征,也就是说您不需要训练模型,但它是一种更传统的方法。

Noe Acache:你基本上检测图像中的不同特征,然后尝试在应该相同的图像中找到相同的特征。所有蓝线都尝试匹配不同的特征。当然,它是为了匹配内容完全相同的图像而制作的,所以它可能不太适用。可能不适用于第一个用例,因为我们正在尝试匹配相似的衣服,但它们不完全相同。而且众所周知,它对角度变化不太有弹性,当变化太大等等。所以它对于第二个用例可能也不是很好,但我没有尝试过,所以只是在这里提一下。简单介绍一下 Dino 的工作原理,以防你感兴趣。所以它是一个视觉转换器,并且以无监督的方式进行训练,也就是说你没有提供任何标签,所以你只需要拍照,然后首先提取小块和大块,并对其进行增强。

Noe Acache:然后您将使用模型来计算这些作物中的每一个的向量表示。由于它们都代表相同的图像,因此它们都应该相同。然后您可以计算损失,以查看它们如何发散,并基本上训练它们变得相同。这就是它的工作原理。第二版之间的区别仅仅是它们使用了更多数据集和蒸馏方法,以获得一个非常高性能的模型,同时运行速度也非常快。关于第一个用例。因此,将视频中的对象与可销售商品进行匹配,对于以前使用过 Google Lens 的人来说,它非常相似。在 Google Lens 中,您可以拍摄某物的照片,然后它会尝试找到类似商品来购买。因此,再次,您有一个视频,然后您检测视频中的一个对象,将其放入并将其与包含许多相似对象的向量数据库进行比较,以进行表示。然后它将输出这里最相似的灯。

Noe Acache:现在我们来分析一下这个项目在积极成果和我们面临的挑战方面的进展。所以基本上,最棒的是 Dino 无需微调即可理解所有对象和紧密模式。因此,您可以获得一个现成的模型,并非常快速地开始,并非常快速地带来价值,而无需经历所有微调过程。它还能够在没有分割的情况下专注于对象。我在这里的意思是,我们将得到一个对象的框,这个框中会有一个非常嘈杂的背景,这可能会干扰匹配过程。由于 Dino 确实能够专注于图像中重要的对象,因此我们是否完美分割图像并不重要。关于向量数据库,这个项目很久以前就开始了,我想我们大约在一年半前选择了向量数据库。

Noe Acache:所以那时还没有向量数据库的炒作。当时最有名的是 Milvus,也是唯一有名的。我们选择了本地部署。实际上,我们主要的经验是 DevOps 团队在部署时遇到了很大的困难,因为基本上它由很多 Pod 组成。关于这些 Pod 应该如何相互交互的文档并不是很完善。而且当时 Bug 很多。所以客户在这个部署上浪费了大量时间和金钱。我们面临的其他挑战是,我们注意到匹配对大变形的抵抗力不是很强。

Noe Acache:所以对于台灯之类的家具,没问题。但是假设你有一条裤子,一个人在走路。那么这条裤子的形状就不会完全相同。由于你没有训练你的模型特意去识别,它不应该专注于动作。它会编码这个动作。然后在匹配中,它不会匹配看起来相似的裤子,而是会匹配产品图片中也在走路的裤子,这并不是我们真正想要的。我们面临的另一个挑战是,我们尝试微调模型,但我们的第一次微调效果不是很好,因为我们尝试采用一个开源模型,并获取它拥有的标签,例如关于不同家具、衣服等等,基本上训练一个模型来对不同的类别进行分类,然后移除分类层,只保留嵌入部分。问题是标签不够具体。

Noé Achache:所以训练任务相当简单。最后,嵌入并没有学习到任何非常复杂的特征,所以它并没有真正改进。所以跳到改进领域,了解了所有这些之后,如果我再做一次,我做的第一件事将是使用托管 Milvus 进行更好的微调,那将是标记困难示例、困难对。例如,你知道当你有一个匹配对,其相似度分数不是很高也不是很低时,你就知道这是模型有点挣扎的地方,你会发现一些好的匹配和一些错误。所以这就是为什么它有点有趣,可以用来微调你的模型,让它根据你的任务学习更复杂的东西。微调的另一种可能性是某种多标签分类。例如,如果你考虑标签关闭,你可以说,好吧,这些关闭包含按钮。它有一种颜色,它有条纹。

Noe Acache:对于所有这些类别,您会得到一个介于零和一之间的分数。将所有这些分数连接起来,您可以获得一个嵌入,您可以将其放入向量数据库进行向量搜索。这很难扩展,因为您需要为每种类型的对象制作特定的模型和标签。我真的很想知道 Google Lens 是如何做到的,因为他们的算法运行得非常好。那么他们是更多地采用这种功能还是那种功能?所以如果有人对此有任何想法或任何主意,再次,我将在之后很高兴与您讨论。最后,我感觉我们在多模态训练方面取得了很大进展,试图将文本输入与图像结合起来。我们已经进行了输入,以构建某种复杂的嵌入。如果有一个图像嵌入,您可以通过文本进行引导,那将是多么棒。

Noe Acache:所以你可以像创建图像嵌入时那样,简单地说,好吧,在这里,我不在乎动作,我只在乎对象上的特征,例如。然后它会根据你的任务学习一个嵌入,而无需任何微调。我真的觉得以目前的技术水平,我们能够做到这一点。我的意思是,我们需要这样做,但技术已经成熟。

Demetrios:在您跳到第二个用例之前,我可以问几个问题吗?

Noe Acache:是的。

Demetrios:除了 dyno 模型,您还研究了哪些其他模型?

Noe Acache:我在这里说过,与 Resnet、高效网络这类架构相比。

Demetrios:也许这个来得太早,或者也许它实际上没有价值。那是像“一切皆可分割”吗?它有发挥作用吗?

Noe Acache:所以“万物分割”(Segment Anything)?我不认为它们会重新做嵌入。它主要是关于分割。所以这里我只是展示了分割部分,因为它是模型的一个很酷的成果,它表明模型在这里运行良好,我们在这里真正要做的是构建图像的表示,据我所知,我们无法真正使用“万物分割”进行匹配。

Demetrios:然后,在您谈到您会采取不同做法或最后一张幻灯片(我想是改进领域)的下一张幻灯片上,您提到了为微调标记困难示例。我感觉,是的,有一种方法是您手动挑选您认为会很困难的不同嵌入。然后还有另一种方法,我认为现在有一些工具可以向您展示哪些不同的嵌入效果不佳或属于更边缘的情况。

Noe Acache:你说的是哪些工具?

Demetrios:我不记得名字了,但我确实在线上见过演示,它会给你一个 3D 空间,你可以探索不同的嵌入并了解发生了什么。

Noe Acache:我完全知道你在说什么。TensorBoard 嵌入是一个很好的工具。我之后可以演示一下。

Demetrios:是的,我不想让你跑题。那是我想到的一件事。

Noe Acache:如果你说的是同一个工具。Turns out embedding。所以基本上你有一个大约 1000 维的嵌入,它只是将其缩减到自由维。所以你可以在 3D 空间中可视化它,你可以看到你的嵌入彼此之间有多接近。

Demetrios:是的,没错。

Noe Acache:但它主要是用于可视化,而不是用于训练。

Demetrios:好的,我明白了。

Noe Acache:说的是同一件事。

Demetrios:是的,我想我说的就是那个。所以这两个都很好。你直接告诉我了。Mike 在这里问了一个问题,像文本嵌入,它能让你在图像中包含替代文本吗?

Noe Acache:一张带有替代文本的图片?我不确定这个问题。

Demetrios:所以听起来像是一种满足法规可访问性要求的方法,如果您有。我想这可能是在您谈论多模态和文本以引导嵌入的地方,并且可能拥有它是否允许您在图像中包含替代文本?

Noe Acache:这个想法不是。我觉得这个问题是关于在图片中插入文字。我理解的是这个意思。我的想法是,如果你能创建一个可以结合文本输入和图片输入的嵌入,并且基本上它会以一种方式训练,即文本基本上被用作图片的引导,只编码图片中任务所需的那些部分,而不会被噪音干扰。

Demetrios:好的。是的。好的,Mike,请告诉我们这是否回答了问题,或者您是否有更多问题。是的。他说,是的,为那些看不到的人在图像中插入文本。

Noe Acache:好的,酷。

Demetrios:是的,没错。所以我就让你继续下去,我尽量不再跑题了。但这很棒。这太切题了,我想停下来问一些问题。

Noe Acache:Larry,我们继续。第二个用例是关于房地产广告去重。正如我所说,两家中介公司来拍摄同一房产的不同照片。问题是他们可能不会给出完全相同的价格或面积或位置。所以你不能仅仅通过元数据来匹配它们。所以我们客户之前做的事情,他建立了一个巨大的 if 机器,就像,好吧,如果位置不太远,如果面积不太远。还有价格,它只是一些非常复杂的规则。最后有很多边缘情况。

Noe Acache:维护起来非常困难。所以就像,让我们做一个更简单的基于图像的解决方案。所以基本上任务是匹配同一房产的图像。同样,积极的成果是 Dino 确实能够无需微调即可理解房产的模式。它对同一房间的不同角度都具有弹性。所以就像我展示的图片一样,模型在识别方面相当不错。它来自同一房产。在这里,我们为这个项目使用了 Cudrant,这是一个更近的项目。

Noe Acache:我们充分利用了元数据过滤,因为当然我们仍然可以使用元数据,即使它不完美,只是为了说,好吧,只搜索价格上下浮动 10% 的向量。面积上下浮动 10% 的向量,等等等等。以及对这些元数据进行索引。否则搜索速度会非常慢。我们有 1500 万个向量,如果没有这个索引,搜索可能需要 20 到 30 秒。而有了索引,就像一瞬间。所以这对我来说是一个杀手级功能。我们还使用了量化来节省成本,因为任务不是太难。

Noe Acache:由于使用元数据,我们设法每次都将任务减少到 1000 个向量的搜索。所以量化向量并不是太烦人。最后,对于 1500 万个向量,每月只需 275 美元,这是非常合理的。我们面临的挑战是浴室和空房间,因为所有浴室看起来都相似。它们具有非常相似的特征,空房间也一样,因为里面几乎什么都没有,只有窗户。模型经常会在两个不同房产的浴室之间给出高相似度分数,空房间也一样。所以再次,克服这个问题的方法是标记难例。例如,两张图像,模型会认为它们相似,但实际上告诉模型不,它们不相似,以使其提高性能。

Noe Acache:再次,关于图像嵌入的未来也是如此。我真的认为这项技术已经成熟,并且将极大地帮助这种嵌入模型应用于文本搜索项目。因此,对于那些不熟悉检索生成原理的人来说,它只是您获取一些文档,您这里有一个嵌入模型,一个在文本而不是图像上训练的嵌入模型,它将输出这些文档的表示,将其放入向量数据库,然后当用户对文档提出问题时,它将创建请求的嵌入并检索最相似的文档。然后我们通常将其传递给 LLM,它将生成一个答案。但在这里,我们不会专注于整个产品,而是专注于向量搜索部分。所以这两个项目一个是,正如我告诉您的,我的营养公司的架子,所以 Endosion 有几十万页,第二个是针对医疗公司的,所以是为医生准备的。所以它更多是关于文档搜索而不是 LLM,因为您不能输出任何错误。我们使用的模型是 OpenAI Ada 2。

Noe Acache:为什么?主要是因为对于第一个用例,它是多语言的,而且它是现成的,非常易于使用,所以我们没有在这个项目上花费太多时间。所以使用 API 模型让它快得多。它也是多语言的,得到了社区的认可等等。对于第二个用例,我们仍在努力。所以既然我们之后使用了 GPT 4,因为它目前是最好的 LLM,所以使用 Ada 2 开始也更容易,但我们之后可能会使用更好的模型,因为正如我所说,如果您参考 MTAB(由 Hugging Face 制作的大规模文本嵌入基准测试),它并不是最好的。它基本上收集了许多嵌入基准测试,例如检索,因此它对这些基准测试中的不同模型进行了分类。M tab 并不完美,因为它没有考虑跨语言能力。所有基准测试都只针对一种语言,而且它也没有考虑大多数语言,例如它只考虑英语、波兰语和汉语。

Noe Acache:而且它可能偏向于在闭源数据集上训练的模型。所以大多数表现最好的模型目前都是闭源 API,因此也是闭源数据集,所以我们不知道它们是如何训练的。所以它们可能是在这些数据集上训练的。至少如果我是它们,我也会这么做。所以我认为它们是为了在这些数据集中获得一些分数。

Demetrios:所以这两个 RAG 主要是用法文文档?

Noe Acache:是的。所以这个是法语和英语,这个是纯法语。

Demetrios:好的。是的,这就是为什么多语言对这些用例非常重要。

Noe Acache:没错。再说一次,对于这个,有一些法语模型比其他两个模型效果更好,所以我们以后可能会更换,但目前我们的表现还不错。由于这两个项目非常相似,我将一并总结。所以 Ada 2 非常擅长理解不同的上下文,各种文档,医疗内容,技术内容等等,无需任何微调。跨语言功能也相当不错,所以我们可以用英语提问并检索法语文档,反之亦然。另外,快速说明一下,因为我一开始没有这样做,那就是当使用 API 模型时,以异步模式使用它会快得多,比如嵌入方程的速度提高了十倍或一百倍。所以这绝对改变了很多事情。再说一次,这里我们主要使用 cudrant 来利用免费层,所以他们有一个免费版本。

Noe Acache:所以你可以在一秒钟内弹出它,获得免费版本,并使用允许将向量存储到磁盘而不是存储在内存中的功能,这会使其稍微慢一点,你可以轻松支持几十万个向量,并且响应时间非常不错。我们面临的挑战主要是针对 Notion,所以就像在 Notion 中,我们有很多页面只是标题,因为它们是空的等等。所以当页面只有标题时,内容非常小,它实际上会与一个问题非常相似。所以通常检索到的文档是内容很少的文档,这有点令人沮丧。正确分块也很困难。基本上,如果你想让你的检索过程运作良好,你必须以正确的方式划分你的文档来创建嵌入。所以你可以使用矩阵规则,但基本上你需要将你的文档划分为语义上合理的块,这并非总是微不足道。而且对于医疗公司的 RAG,有时我们问一个关于特定药物的问题,但它根本不在我们的搜索范围内,根本没有检索到正确的文档,这非常令人沮丧,因为一个基本的搜索会。

Noe Acache:所以为了应对这些变化,一个好的选择是使用像 Bg 或 Cohere 这样能以不同方式处理问题和文档的模型。基本上,它们使用相同的模型,但针对长文档和问题进行了不同训练,这使得它们能够在空间中以不同方式映射它们。我猜测,使用这样的模型,只包含标题等的文档将不会像现在这样与问题如此接近,因为它们将被区别对待。所以我希望这能解决这个问题。再说一次,这只是一个猜测,也许我错了。堆研究,所以对于我提到的关键词问题,在最近的版本中,Cudran 刚刚启用了稀疏向量,这实际上使得 TF-IDF 向量成为可能。TF-IDF 向量是基于关键词的向量,但基本上每个数据集中可能的单词都有一个数字,并且有很多零,所以将它们存储为普通向量会使向量搜索非常昂贵。但作为稀疏向量,它要好得多。

Noe Acache:所以你可以建立一个去重搜索,将 TF-IDF 搜索用于关键词搜索,将另一个搜索用于语义搜索,以兼得两者之长,克服这个问题。最后,我实际上很惊讶,尽管生成式 AI 和 RAG 方面正在进行大量工作,但还没有人开始研究一种帮助分块的模型。这就像最大的挑战之一,我觉得拥有一个能够理解文档结构并理解为什么从语义上讲对文档进行分块是合理的模型或某种算法是完全可行的。伙计,太棒了。

Demetrios:我有一些问题要问。别走开。实际上,不仅仅是我。Tom 也有一些问题,所以我要把责任推给 Tom,让他背黑锅。医疗公司使用 RAG 似乎是一个危险的用例。你可以努力消除幻觉和其他安全问题,但你无法确保它们完全消除,对吗?你只能确保它们被消除。那么你是如何处理这些担忧的呢?

Noe Acache:这是一个非常好的问题。这就是为什么我提到这个项目主要是关于文档搜索。基本上我们所做的是,我们使用 Chainlit,这是一个非常好的聊天工具,然后你可以在它前面放置一个 React 前端,使其非常自定义。所以当用户提出问题时,我们提供 LLM 的答案更多地是作为第二意见,就像医生可以考虑的次要意见一样。但最重要的是,我们直接放置了,而不是仅仅引用来源,我们放置了源页面所基于的 HTML,而带来最大价值的实际上是这些 HTML 页面。所以我们知道答案可能存在一些问题。事实是,基于文档,幻觉几乎被消除了。就像我们没有注意到任何幻觉,但当然它们可能会发生。

Noe Acache:所以这真的是一种产品问题,而不是算法问题,一个算法问题,是的。检索到的文档,而不是 LLM 的答案。

Demetrios:是的,有道理。我对此的问题是,在医疗领域,数据通常非常敏感。对吧。而且你有很多 PII。你是如何处理这个问题的?你是不是根本不碰它?

Noe Acache:所以基本上我们与一家提供公共文档的供应商合作。所以它是公共文档。没有 PII。

Demetrios:好的,酷。所以不是像其中一些。

Noe Acache:是私密的,但文档中仍然没有 PII。

Demetrios:是的,因为我认为这是另一个非常困难的问题,那就是,哦,是的,我们只是将所有这些敏感信息发送给 IDA 模型来创建嵌入。然后我们还将其通过 Chat GPT 传递,然后才能取回它。接下来你就会知道,这就是用于训练 GPT 5 的数据。你可以说出类似“创作一首无限的诗”之类的话,然后就能得到它。所以这太可疑了,对吧?

Noe Acache:是的,当然,克服这个问题的一种方法是,例如,对于 Notion 项目,它是我们的私有文档。我们使用 Azure 上的 Ada,它保证了数据安全。所以这是一个很好的变通方法。当您必须处理不同安全级别的问题时,如果您处理 PII,一个好方法是使用元数据。根据提问者的安全级别,您使用元数据只输出某些类型的文档。数据库元数据。

Demetrios:太棒了。好的,别让我打断您,我知道您有一些总结性的想法。

Noe Acache:不,抱歉,我正要总结。所以总结一下,我们得到了一些不需要任何微调的好模型。通过这个模型,我们试图克服我们仍然面临的这些限制。对于图像搜索,目前需要微调。没有其他真正的方法可以克服它。而对于文本搜索,微调并不是真正必要的,更多的是需要一些技巧,例如使用混合搜索,使用更好的模型等等。所以有两种方法,Qdrant 确实让很多事情变得容易。例如,我喜欢你可以将数据库用作磁盘文件的功能。

Noe Acache:你甚至可以将其用于内存中的 CI 集成等。但由于我的所有实验等都不会将其用作磁盘文件,因为它更容易操作。我只是喜欢这个功能。然后它允许你在实验和生产中使用相同的工具。当我玩 Milvus 时,我不得不使用不同的工具进行实验和生产中的数据库,这使得技术栈变得更加复杂。稀疏向量用于 Tfedef,正如我提到的,它允许基于关键字进行搜索,使你的检索效果更好。再次,托管部署,我们确实在部署 Milvus 时遇到了困难,我是说,DevOps 团队在部署 Milvus 时遇到了困难。我觉得在大多数情况下,除非你有安全要求,否则使用托管部署会比支付开发成本便宜得多。

Noe Acache:而且有了免费的云和这些向量,你真的可以做很多,至少可以开始很多项目。最后,元数据过滤和索引。顺便说一下,我们遇到了一个小陷阱。那就是索引。建议在添加向量之前对元数据进行索引。否则你的性能可能会受到影响。所以你可能无法检索到你需要的正确向量。所以这是一个有趣的考虑事项。

Noe Acache:我知道元数据过滤对于向量数据库来说是相当困难的事情,所以我不太清楚它是如何工作的,但我认为这背后有很好的理由。最后,正如我之前提到的,在我看来,需要新型模型来满足工业需求。所以我们正在讨论的模型,文本引导以创建更好的图像嵌入和自动分块,例如某种算法和模型,它将自动适当地分块您的文档。非常感谢。如果您还有问题,我很乐意回答。这是我的社交媒体。如果您想在之后联系我,请联系我,我的所有文章和演讲都收集在这里,如果您感兴趣的话。

Demetrios:哦,我喜欢你那样做。Tom 又有一个问题,问你在处理这些 RAG 时,是否对文档中的图像和表格做了任何处理。

Noe Acache:不,我没有对图片和表格做任何处理。这取决于它们是否结构良好。我保留了它们,因为模型能够理解它们。但是,例如,我们为医疗公司做了一个小的 POC,当时他试图集成一些外部数据源,这是一个 PDF,我们想将其用作 HTML,以便能够直接在答案中显示 HTML,否则我会向您解释。所以我们将 PDF 转换为 HTML,在这种转换中,表格完全无法阅读。所以即使在清理之后。所以我们没有在这种情况下包含它们。

Demetrios:太棒了。好的,伙计,非常感谢您来到这里。也感谢大家加入我们又一次向量空间讲座。如果您想参加向量空间讲座,分享您的最新进展,并向我们其他人分享知识,我们很乐意邀请您。所以请联系我。我想今天就到这里了。Noe,这太棒了,伙计。我非常感谢您这样做。

Noe Acache:谢谢 Demetrius。祝您有个愉快的一天。

Demetrios:我们稍后见。再见。

免费开始使用 Qdrant

开始使用