简单地说,我们现在是Redis

了解更多

缩放实体匹配在房间与Scribble丰富和Redis

实体匹配的房间是一个数学上的挑战。这里是平台如何使用Redis解决它。



回到博客

房间的我们的使命是为来自世界各地的顶尖人才提供有意义的机会。作为一个技术驱动的、以社区为中心的平台,帮助组织快速找到高质量的、经过大规模审查的人才,The Room将在其系统中容纳数千万成员,并在全球范围内存在。

在…的核心技术上的挑战是一个数学上困难的实体匹配问题.系统中的每个实体——个人、组织、机会和内容——必须以高准确性和相关性、上下文敏感性和时效性与其他实体相匹配。应用程序有这个问题的多个实例。

经过实验,The Room的ML团队确定了一种方法,使用向量空间嵌入原始文本数据来描述实体,并结合向量相似度匹配和进化的业务逻辑来显示类似的实体。在测试实现时,发现核心向量相似度计算驱动了算法的计算和内存需求。使用Redis基于最近邻向量查找的高性能密钥检索,该团队能够在没有任何内存开销的情况下,在核心相似度计算循环中实现超过15倍的改进.反过来,这也为增加算法的复杂性创造了空间,并将其交付到实时路径上。

整个系统

总体的数据流显示在图1的架构图中。虽然相当标准,但关键的挑战是在一个小团队、紧凑的时间线和对灵活性的需求下将整个生产系统就位。

图1:数据周围房间情报平台(TRIP)

潦草的数据的丰富功能的存储其应用程序为房间智能平台的实现提供了整体框架,负责实体匹配。与大约15个数据源的集成、数据质量、批处理和流特性工程(包括向量化),以及与内存数据库后端(如Redis)的集成、编目和遵从性。Enrich的流水线和编配也用于建模,未来的实现版本将使用独立的模型数据库,比如MLFlow。

挑战

对the Room的实体匹配引擎匹配代码的早期版本的分析表明,向量相似度计算花费了95%以上的时间和90%的内存。这种资源密集性暗示了对计算分布和繁琐优化的需要。三个主要挑战是:

  1. 成本:N2随着实体的线性增长(数以亿计的潜在匹配来得分),计算的增长意味着转换到分布式实现——这是人力和资源密集型的。
  2. 混乱:越来越复杂的匹配算法和优化将以复杂的方式相互作用。
  3. 实时的支持:将一个实体与所有其他潜在的候选实体进行匹配花费的时间太长,无法实时生成匹配。

此外,有必要优化下列主要限制因素:

  1. 团队规模:ML团队的规模很小,这使得它在解决上述挑战之外的其他问题时受到了限制。
  2. 时间限制:业务正在快速发展,通过显示结果和测试输出来快速迭代非常重要。

Redis表示向量相似度

Redis提供了他们矢量相似功能的私有预览版本,并演示了其功能RedisGears使用高性能向量相似度查找支持密钥检索。界面非常简单,包括使用相似度匹配进行存储和查找,以及简单的集成。余弦相似度和欧几里得距离度量支持k最近的邻居(k -给定一个查询向量,存储在Redis中的向量。独立测试表明,顶部-k最接近的匹配检索时间是毫秒级,并且持续时间在很大的向量计数范围内几乎是恒定的。目前的测试实现存在一些局限性,如仅支持固定长度的向量,并能够匹配Redis中存储的所有向量。预计生产版本将解决这些问题。

实体匹配和性能比较

在房间中的实体匹配问题被建模为k最近的邻居(k-NN)表示实体的向量检索。候选向量的数量(N)规模庞大,预计将迅速增长。每个向量的维数大约是几千。测试只关注应用程序中的核心相似度评分计算部分,报告的加速基于此。

测试了三种方法:

  1. 首先,作为一个简单的基线,一个Pandas数据帧apply(…)循环有效地进行行方向的向量-向量相似性计算(Pandas apply)。
  2. 第二,使用Python scikit-learn包的spatial.distance.cdist(…)函数的相似度计算的优化版本(Python矢量化)。
  3. 第三,Redis Gearsk -神经网络查找(复述)。

对于上面(1)和(2)的方法,对分数进行键排序,得到最上面的索引k相似的候选向量。不同的价值观Nk进行了测试。这三种方法都使用相同的向量数据集。结果如表1所示。

表1:给定一个查询向量,使用各种方法检索最接近的k个向量进行加速比较

我们看到一个一致的15倍加速在顶部-k向量检索性能。数据越大,加速越快。我们的假设是,这种加速是由于消除了Python和Pandas在计算和内存方面的开销,并且这种加速可以在生产环境中一致实现。

Redis在房间

在The Room中使用Redis的功能有很多价值主张:

  1. 在线存储特性:在流路径上计算的特征存储,以及客户端用于快速查找的批处理路径。
  2. k最近的向量查找:Redis基于向量相似度计算的高性能密钥查找解决了The Room的核心缩放挑战。
  3. 建筑与复述,: Room路线图包括构建社交图和处理流。Redis为核心Redis提供了额外的数据模型和其他功能,包括搜索、图表和可编程数据处理,这减少了管理跨独立系统的数据流的需要。

下一个步骤

Redis的低延迟和高性能矢量相似度计算,集成了Scribble Data的丰富功能存储,正在扩展以解决其他问题。除了提供在线功能的数据存储之外,Redis Enterprise近期还面临两个问题,包括使用图表来识别机会和处理实时事件的流。万博体育彩The Room自己的数据智能平台从这种集成中受益,因为它为其成员和内部员工开发了最先进的低延迟数据应用程序。

的作者

这个房间

彼得Swaniker, The Room的首席技术官

乱写数据

Achint托马斯,数据架构师,涂鸦数据

这个房间正在招聘数据科学家和数据工程师!多见于https://www.theroom.com/careers/

了解更多关于丰富功能商店的信息,请访问www.scribbledata.io /产品,并开始与Redis访问开发https://developer.www.szfbf.com/,包括与RedisAI实时服务在//www.szfbf.com/modules/redis-ai/

Baidu