微软刚刚宣布开源一项 Bing 搜索背后的关键算法——SPTAG,它使 Bing 能够快速将搜索结果返回给用户。
仅在几年前,网络搜索很简单,用户输入几个关键词并浏览结果页面。 今天,相同的用户可能会在手机上拍照并将其放入搜索框中,或使用智能助手提问,而无需亲自触摸设备。他们也可能会输入一个问题并期待一个实际的答复,而不是一个可能答案的页面列表。
SPTAG (Space Partition Tree And Graph)是分布式近似最近邻域搜索(ANN)库,为大规模矢量搜索场景提供高质量矢量索引构建、搜索和分布式在线服务工具包。利用 SPTAG 算法作为开源 Python 库的核心,Bing 能够在几毫秒内搜索数十亿条信息。
当然,矢量搜索本身并不是一个新想法,微软所做的是将这一概念应用于深度学习模型。
首先,团队采用预先训练的模型并将数据编码到矢量中,其中每个矢量代表一个字或像素。然后使用新的 SPTAG 库生成向量索引。随着查询的进入,深度学习模型将该文本或图像转换为向量,该库紧接着就能在索引中找到最相关的向量。
微软表示,SPTAG 库迄今已对超过 1500 亿条数据进行了编目,包括单个单词、字符、网页代码段和完整查询。
“Bing 每天处理数十亿个文档,现在的想法是将这些条目表示为向量,并搜索这个 1000 亿以上向量的巨大索引,以便在 5 毫秒内找到最相关的结果”。
Bing 团队期望开源 SPTAG 可用于构建可识别基于音频片段所说语言的应用,或用于让用户拍摄植物照片并识别属和物种的服务。
该库现已开放使用,并提供构建和搜索这些分布式矢量索引的所有工具。