过去几年,我一直在观察嵌入技术如何从大型科技公司的 "秘密武器" 转变为日常开发人员工具。接下来发生的事情 ------ 向量数据库淘金热、RAG 炒作周期以及最终的修正 ------ 教会了我们关于新技术如何在更广泛的生态系统中找到一席之地的宝贵经验。
更多有关向量搜索及结合传统搜索的混合搜索,请详细阅读 "Elastic AI 专栏"。
嵌入成为主流
曾经是科技巨头的领域,现在正成为各地开发人员的标准做法。十多年来,谷歌、Meta 和亚马逊等公司一直使用嵌入技术来大规模支持推荐系统和搜索功能。现在,开发人员可以通过预先训练的模型和改进的工具使用这些技术。
通过深度学习,我们可以将几乎任何类型的内容(文本、图像、视频、音频、代码)转换为向量表示,以捕获数据中的模式和关系。虽然这些技术在表示学习研究中有着深厚的根基,但如今革命性的是它们的可访问性。强大的预训练模型和直观的 API 将曾经复杂的研究转变为日常开发人员的实用工具。
这些嵌入使开发人员能够构建以前仅限于拥有大量研发预算的科技巨头的功能。嵌入生态系统在多个方面蓬勃发展。OpenAI、Cohere、Jina 和 Voyager 等商业提供商提供高质量的托管模型(主要是文本),而开源社区则提供了强大的替代方案,如 Sentence Transformers。HuggingFace 已成为共享和发现这些模型的事实平台,拥有数千种适用于不同语言、模态、领域和任务的嵌入模型。他们的转换器库和模型中心使尝试不同的嵌入方法变得轻而易举。
结果如何?曾经是大型科技公司高级 ML 团队专属领域的方法现在正被集成到日常应用程序中。无论是使用商业 API 还是开源模型,开发人员都可以选择最适合其成本、定制和部署要求的方法。以前难以有效搜索的内容(视频、播客记录、技术图表、科学论文)现在可以以更复杂(更有效)的检索系统的方式来呈现。
向量数据库的兴衰
基于嵌入的应用程序的激增带来了新的挑战:高效地大规模存储、索引和搜索这些高维向量。这一差距催生了向量数据库类别,Pinecone 等公司在 2022-2023 年通过定义向量操作的专用基础设施引领潮流。在 2022 年底 ChatGPT 推出后,该类别出现了爆炸式增长,因为开发人员纷纷使用检索增强生成 (Retrieval-Augmented Generation - RAG) 构建 AI 应用程序。这种激增的部分原因是人们普遍误以为基于嵌入的相似性搜索是检索 LLMs 上下文的唯一可行方法。由此产生的 "向量数据库淘金热" 吸引了大量投资和关注向量搜索基础设施,尽管传统信息检索技术对许多 RAG 应用程序同样有价值。
然而,形势迅速发展。最初是纯向量搜索引擎,现在扩展了其功能以匹配传统搜索功能。向量数据库提供商已经认识到,现实世界的应用程序通常需要的不仅仅是相似性搜索。他们越来越多地添加过滤、分面和文本搜索等功能,这些功能以前是传统搜索引擎的领域。
这种融合反映了一种更深刻的理解,即单靠向量搜索不足以满足实际的现实用例。没有比 Elasticsearch 的发展更好地说明这种融合的例子了。作为搜索市场的领导者,Elastic 认识到了基于嵌入的搜索的潜力,并开始整合这些功能。2024 年,他们将 Elasticsearch 重新定位为 "具有完全集成向量数据库的搜索引擎",承认现代搜索应用程序需要传统的基于文本和向量的操作。这种转变不仅仅是营销 ------ Elasticsearch 通过优化索引结构增强了其向量搜索实现,并增加了对高效近似最近邻 (ANN) 搜索算法的支持。通过将向量搜索功能直接引入其搜索平台,Elastic 证明了搜索的未来在于将相关性评分和文本分析等传统搜索功能与嵌入相结合的统一解决方案。他们的方法验证了业内许多人已经开始认识到的事情:向量搜索不是一个单独的类别,而是现代搜索工具包中的一项基本功能。
与此同时,老牌数据库供应商几乎毫不掩饰地看着这场淘金热。许多供应商没有将向量搜索视为一个单独的类别,而是耸耸肩,将向量功能直接集成到现有产品中。PostgreSQL、MongoDB、Redis 和其他供应商都增加了对向量数据类型和相似性搜索操作的原生支持 ------ 将其视为添加新索引类型的兴奋之情。从他们的角度来看,向量只是索引和查询的另一种数据类型,类似于文本、数字或地理空间坐标。这种集成简化了许多应用程序的架构,允许开发人员在熟悉的系统中管理向量操作以及传统数据工作负载,而无需说服他们的 CTO 采用另一个专门的数据库。
然而,将向量类型添加到现有数据库并不是看起来那么简单。存储和检索向量是一回事,构建复杂的检索系统是另一回事。许多这样的数据库缺乏完善的排名机制、相关性调整和久经考验的文本匹配算法(如 BM25),而专用搜索引擎花了几十年的时间来完善这些算法。这就是为什么那些关心搜索质量的公司仍然会转向专用搜索引擎,而不是将他们的数据库视为一刀切的解决方案。现实情况是,高质量的信息检索需要一套深层次的排名策略和相关性优化功能,而不仅仅是简单的向量相似度计算。正如没有一个关心搜索质量的人会使用常规数据库来支持他们的电子商务搜索一样,添加向量功能并不能突然将 SQL 数据库转变为一个完整的检索引擎。
结论
回顾过去,很明显我们把事情复杂化了。虽然嵌入从根本上改变了我们表示和比较内容的方式,但它们不需要一个全新的基础设施类别。我们称之为 "向量数据库" 的东西实际上是具有向量功能的搜索引擎。市场已经在纠正这种分类 ------ 向量搜索提供商迅速添加传统搜索功能,而成熟的搜索引擎则整合了向量搜索功能。这种类别融合并不奇怪:构建一个好的检索引擎一直是关于结合多种检索和排名策略。向量搜索只是该工具箱中的另一个强大工具,而不是一个独立的类别。