Annoy 求近似最近邻的库

程序名称:Annoy

授权协议: Apache-2.0

操作系统: 跨平台

开发语言: C/C++

Annoy 介绍

Annoy 是 Spotify 开源的高维空间求近似最近邻的库,在 Spotify 使用它进行音乐推荐。最邻近搜索(Nearest Neighbor
Search, NNS)又称为“最近点搜索”(Closest point search),是一个在尺度空间中寻找最近点的优化问题。

Annoy
能够使用静态文件作为索引,意味着可以跨进程共享索引。它还创建了大量的基于只读文件的数据结构,这些数据结构被嵌入内存中,以便许多进程可以共享相同的数据。Annoy
的另一个好处是它试图最小化内存占用,因此索引非常小。

特性:

  • 欧几里德距离, 曼哈顿距离, 余弦距离, 汉明距离或 点(内)积距离
  • 余弦距离等价于归一化向量的欧氏距离=sqrt(2-2*cos(u,v)
  • 如果你的维度不多(比如<100),效果会更好,即使达到 1000 个维度,它也表现得非常出色
  • 内存使用量小
  • 允许你在多个进程之间共享内存
  • 索引创建与查找是分开的(特别是在创建树后,就无法添加更多项目)
  • 原生 Python 支持
  • 在磁盘上生成索引,以便为不适合内存的大型数据集建立索引

Annoy 官网

https://github.com/spotify/annoy

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


RedHadoop 是一个持续优化的企业级Hadoop基础软件平台,让Hadoop大数据更简单! RedHadoop大数据工场企业版是RedHadoop公司第一款产品,简称BWE(RedHadoop BigData Works
来自 Mozilla 的 Heka 是一个用来收集和整理来自多个不同源的数据的工具,通过对数据进行收集和整理后发送结果报告到不同的目标用于进一步分析。
HBase – Hadoop Database,是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统,利用HBase技术可在廉价PC
Mincemeat-node 是使用Node.js实现的极简MapReduce框架,可以快速的部署投入工作,免去Hadoop繁琐的配置,享受随心大数据。
REEF 是微软开发的一个大数据框架。 REEF运行在YARN的上层。YARN是新一代Hadoop资源管理器,通过YARN,用户可以运行和管理同一个物理集群机上的多种作业,例如MapReduce批处理和图形处理作业。这样不仅可以巩固一个
Scribe旨在帮助Facebook处理服务器上的大量数据,正像Scribe网页所述“如经常访问Facebook,请使用Scribe。”具体而言,Scribe就是一台服务器,实时收集用网站日志信息。
HTools是一款专业的Hadoop管理工具,不管您是非专业IT人士,还是多年经验的技术人员,本工具都会为您提供优质的管理服务和轻松的操作过程,
hive让大数据飞了起来,不再需要专人写MR。平常我们都可以用基于thrift的任意语言来调用hive。
MapReduce是Google提出的一个软件架构,用于大规模数据集(大于1TB)的并行运算。概念”Map(映射)”和”Reduce(化简)”,和他们的主要思想,都是从函数式编程语言借来的,还有从矢量编程语言借来的特性。
Netflix 开源了一个叫做Suro的工具,它能够在数据被发送到不同的数据平台(如Hadoop、Elasticsearch)之前,收集不同应用服务器上的事件数据,这项创新技术具备成为大数据主流实践的潜力
Apache Kylin 是一个开源的分布式的 OLAP 分析引擎,来自 eBay 公司开发,基于 Hadoop 提供 SQL 接口和 OLAP 接口,支持
Hadoop 是一个分布式系统基础架构,由Apache基金会开发。用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力高速运算和存储。Hadoop实现了一个分布式文件系统(Hadoop
Themis 是小米公司开发的,为 HBase 提供了跨行/跨表的事务处理,基于 Google 的 percolator.
腾讯分布式数据仓库项目,在Hadoop和hive的基础上开发的腾讯内部最大的离线数据处理平台。TDW支持Oracle功能兼容的SQL语法,支持PB级的存储和TB级的计算等。
Spring XD 是一个统一的,分布式,可扩展的系统用于数据摄取,实时分析,批量处理和数据导出。该项目的目标是简化大数据应用的开发。
HP Vertica 基于列存储,相比传统面向行存储的数据库具有巨大的优势。同时 Vertica 支持 MPP(massively parallel
S3mper 是通过一致的,二级索引对亚马逊 S3 索引做额外的一致性检查。 S3mper 利用面向方面编程和AspectJ 实现来引导Hadoop 文件系统实现(主要是实现
Crate Data 是一个开源的大规模的可伸缩的数据存储系统,无需任何系统管理需求。提供强大的搜索功能。用于存储各种表格数据、非结构化数据和二进制对象。并可通过 SQL
Presto是Facebook最新研发的数据查询引擎,可对250PB以上的数据进行快速地交互式分析。据称该引擎的性能是Hive 的 10 倍以上。
YARN是新一代Hadoop资源管理器,通过YARN,用户可以运行和管理同一个物理集群机上的多种作业,例如MapReduce批处理和图形处理作业。这样不仅可以巩固一个组织管理的系统数目,而且可以对相同的数据进行不同类型的数