w***g 发帖数: 5958 | 1 读书的时候写了一堆代码一直没整理出来,最近国内东家要用类似的功能,
干脆整理了一下起了个开源项目。我知道这个版的风气是匿名骂人光说不练,
但挡不住mitbbs巨大的影响力,还是希望召到感兴趣的人一起contribute。
按惯例,开源项目本身不来钱,只能抱着兴趣/学习的目的来做。
https://github.com/aaalgo/donkey
功能:
一个做非文本对象相似性搜索的框架,可以用来做以图搜图,以音频搜音频等
基于内容的搜索。可以看成是一个value-key store。传统的key-value
store是按key存取value。我这个正好反过来。如果在value上定义一个相似度,
那么输进去一个value,我可以找出来数据库里最相似的那些value
对应的key。因为最近NoSQL很火,所以我这个系统也做成了NoSQL的形式。
应用1: 以图搜图
用到类似技术的网站
http://image.google.com
http://tineye.com
http://pixolution.de/
还有无穷多类似的鸡毛网站
应用2: 音频搜索
http://www.shazam.com/
http://soundhound.com/
还有无穷多类似的鸡毛网站
别的任何对象,只要可以计算相似度,都可以用来做相似性搜索。比如人脸,
相似网页,各种基因数据,推荐系统里的商品/节目模型等等。Donkey提供的是
所有类似的系统都需要用到的存储/索引框架,每一种类型的数据,只要plugin
一个特征提取算法和一个相似性计算算法,就可以很容易地产生一个搜索引擎。
Donkey的规模定位在单机千万特征向量量级,目标不是规模大,
而是易用。我们肯定做不了google规模的,但是可以做单机一百万到一千万量级
图片,十万到一百万量级的mp3的规模。(按应用不同,一个对象可以提取出
1到几千个特征向量.)
更多的背景知识可以参考这个
http://www.cs.princeton.edu/cass/
目前的状态:
- 已有基本的C++核心代码(暂没有索引算法,用我的另一个非开源项目kgraph顶着。
计划有时间重新写一个开源的更牛的版本。)
- 目前kgraph的算法已经可以秒杀别的类似的库或者算法。这东西做出来技术上
绝对是杠杠的。
- 支持thrift, grpc和http rest接口。
- 有另外一个开源的图像搜索引擎代码可供参考。
- 虽然各种特例网站很多,但是类似功能的NoSQL数据库市面上是个空白。
需要的contribution:
只要你有兴趣,不管编程水平高低都可以贡献。
- 数据库内核开发,需要精通C++,数据结构和Linux API。这个有我自己顶着。
- 算法开发。如果做出来牛B算法,我们可以往VLDB灌水。
- Javascript库开发。作为整个toolkit的一部分,我希望可以有一个javascript
的库用来包装核心的ajax/rest接口,以便用户可以快速开发网页应用。这一块
内容比较简单(参考http://code.google.com/p/nise/),但是作为一个库,接口
必须设计得很漂亮。我的javascript功底只够做网站,写不了库。
- Demo/app开发。可以做成网页,也可以做成手机app。用啥语言做网页还没定,
我啥语言啥框架都能接受。看能拉到的人而定。
- 提供应用和测试数据。
- Plugin开发。这个能做的范围非常大。NLP, 图像音频视频处理,机器学习啥的
都有用武之地。
- 编译,测试,打包。
- 写爬虫抓数据。爬虫的话我试过python的scrapy不错。
- 图标设计,页面美化。文档编写。我挺想要一个ascii logo,在服务器启动的时候
打印出来。无奈自己美工太差。
- 帮忙牵线搭桥,提供商业化机会。
如果能拉到几个比较固定的同学干活,我可以架一台服务器用于开发和demo。
我有midtower,但是托管的话1U的机器更便宜。我在考虑从ebay买一台二手机。
如果有同学愿意捐赠旧服务器或者AWS机时的话也大大地欢迎。 |
l*********s 发帖数: 5409 | |
d******e 发帖数: 2265 | 3 赞。献上 star一枚。大牛什么时候需要打下手的,小弟可以帮忙。
【在 w***g 的大作中提到】 : 读书的时候写了一堆代码一直没整理出来,最近国内东家要用类似的功能, : 干脆整理了一下起了个开源项目。我知道这个版的风气是匿名骂人光说不练, : 但挡不住mitbbs巨大的影响力,还是希望召到感兴趣的人一起contribute。 : 按惯例,开源项目本身不来钱,只能抱着兴趣/学习的目的来做。 : https://github.com/aaalgo/donkey : 功能: : 一个做非文本对象相似性搜索的框架,可以用来做以图搜图,以音频搜音频等 : 基于内容的搜索。可以看成是一个value-key store。传统的key-value : store是按key存取value。我这个正好反过来。如果在value上定义一个相似度, : 那么输进去一个value,我可以找出来数据库里最相似的那些value
|
ET 发帖数: 10701 | 4 攒。
【在 w***g 的大作中提到】 : 读书的时候写了一堆代码一直没整理出来,最近国内东家要用类似的功能, : 干脆整理了一下起了个开源项目。我知道这个版的风气是匿名骂人光说不练, : 但挡不住mitbbs巨大的影响力,还是希望召到感兴趣的人一起contribute。 : 按惯例,开源项目本身不来钱,只能抱着兴趣/学习的目的来做。 : https://github.com/aaalgo/donkey : 功能: : 一个做非文本对象相似性搜索的框架,可以用来做以图搜图,以音频搜音频等 : 基于内容的搜索。可以看成是一个value-key store。传统的key-value : store是按key存取value。我这个正好反过来。如果在value上定义一个相似度, : 那么输进去一个value,我可以找出来数据库里最相似的那些value
|
w***g 发帖数: 5958 | 5 有很多事情可以做,你再看眼我的帖子,看有啥感兴趣或者力所能及的方向。
最好可以定义一个相对比较独立的code project做。如果只是帮忙做几个页面
写一些文档,其实对你没有多大的帮助。
【在 d******e 的大作中提到】 : 赞。献上 star一枚。大牛什么时候需要打下手的,小弟可以帮忙。
|
w***g 发帖数: 5958 | 6 这个版上牛人无数,希望Goodbug和魏老师两边都能帮忙指导一下。
【在 w***g 的大作中提到】 : 读书的时候写了一堆代码一直没整理出来,最近国内东家要用类似的功能, : 干脆整理了一下起了个开源项目。我知道这个版的风气是匿名骂人光说不练, : 但挡不住mitbbs巨大的影响力,还是希望召到感兴趣的人一起contribute。 : 按惯例,开源项目本身不来钱,只能抱着兴趣/学习的目的来做。 : https://github.com/aaalgo/donkey : 功能: : 一个做非文本对象相似性搜索的框架,可以用来做以图搜图,以音频搜音频等 : 基于内容的搜索。可以看成是一个value-key store。传统的key-value : store是按key存取value。我这个正好反过来。如果在value上定义一个相似度, : 那么输进去一个value,我可以找出来数据库里最相似的那些value
|
N*****m 发帖数: 42603 | 7 不错,我当年也做过这方面的课题
【在 w***g 的大作中提到】 : 读书的时候写了一堆代码一直没整理出来,最近国内东家要用类似的功能, : 干脆整理了一下起了个开源项目。我知道这个版的风气是匿名骂人光说不练, : 但挡不住mitbbs巨大的影响力,还是希望召到感兴趣的人一起contribute。 : 按惯例,开源项目本身不来钱,只能抱着兴趣/学习的目的来做。 : https://github.com/aaalgo/donkey : 功能: : 一个做非文本对象相似性搜索的框架,可以用来做以图搜图,以音频搜音频等 : 基于内容的搜索。可以看成是一个value-key store。传统的key-value : store是按key存取value。我这个正好反过来。如果在value上定义一个相似度, : 那么输进去一个value,我可以找出来数据库里最相似的那些value
|
c*******0 发帖数: 5247 | |
p*u 发帖数: 2454 | 9 so u r mostly in need of Javascript lib dev?
【在 w***g 的大作中提到】 : 读书的时候写了一堆代码一直没整理出来,最近国内东家要用类似的功能, : 干脆整理了一下起了个开源项目。我知道这个版的风气是匿名骂人光说不练, : 但挡不住mitbbs巨大的影响力,还是希望召到感兴趣的人一起contribute。 : 按惯例,开源项目本身不来钱,只能抱着兴趣/学习的目的来做。 : https://github.com/aaalgo/donkey : 功能: : 一个做非文本对象相似性搜索的框架,可以用来做以图搜图,以音频搜音频等 : 基于内容的搜索。可以看成是一个value-key store。传统的key-value : store是按key存取value。我这个正好反过来。如果在value上定义一个相似度, : 那么输进去一个value,我可以找出来数据库里最相似的那些value
|
w***g 发帖数: 5958 | 10 javascript lib是目标比较确定的一块。应该没多少代码。
主要是refactor和generalize一个已有的页面。
【在 p*u 的大作中提到】 : so u r mostly in need of Javascript lib dev?
|
|
|
w**z 发帖数: 8232 | 11 为什么只想提供js client lib? 要想人用, Java, python 最好都要有。 直接用
thrift 太蛋疼。rest 太慢。
【在 w***g 的大作中提到】 : 读书的时候写了一堆代码一直没整理出来,最近国内东家要用类似的功能, : 干脆整理了一下起了个开源项目。我知道这个版的风气是匿名骂人光说不练, : 但挡不住mitbbs巨大的影响力,还是希望召到感兴趣的人一起contribute。 : 按惯例,开源项目本身不来钱,只能抱着兴趣/学习的目的来做。 : https://github.com/aaalgo/donkey : 功能: : 一个做非文本对象相似性搜索的框架,可以用来做以图搜图,以音频搜音频等 : 基于内容的搜索。可以看成是一个value-key store。传统的key-value : store是按key存取value。我这个正好反过来。如果在value上定义一个相似度, : 那么输进去一个value,我可以找出来数据库里最相似的那些value
|
w***g 发帖数: 5958 | 12 可以在thrift/grpc外面再包一层特定语言的库。C++我就是这么做的。Java, python如
果有人愿意做binding那最然最好。目前只想到做js lib是因为做demo要用。
【在 w**z 的大作中提到】 : 为什么只想提供js client lib? 要想人用, Java, python 最好都要有。 直接用 : thrift 太蛋疼。rest 太慢。
|
ET 发帖数: 10701 | 13 goodbug在班上的主要任务是吵架。
【在 w***g 的大作中提到】 : 这个版上牛人无数,希望Goodbug和魏老师两边都能帮忙指导一下。
|
g*****g 发帖数: 34805 | 14 这些年来我老不知道给解答了多少问题,问题是那种帖子顶不起来,你记不住。
还有就是本版充斥装逼的半桶水。上次有人问个设计的问题,我给了个几行经
典的factory+reflection的解决方案。偏偏有半路出家的生物男嘲笑是垃圾代码,非要
写个parser还坚持自己的方案最好。
【在 ET 的大作中提到】 : goodbug在班上的主要任务是吵架。
|
d****i 发帖数: 4809 | 15 Java, Python不是都有native interface来bind C/C++ lib吗? JavaScript也有啊,如
果你不想ajax的话。
【在 w***g 的大作中提到】 : 可以在thrift/grpc外面再包一层特定语言的库。C++我就是这么做的。Java, python如 : 果有人愿意做binding那最然最好。目前只想到做js lib是因为做demo要用。
|
w***g 发帖数: 5958 | 16 这个是client/server的。以还会做成client - proxy - server cluster, proxy可以
做load balancing, redundancy, sharding. 所以中间要走网络。
【在 d****i 的大作中提到】 : Java, Python不是都有native interface来bind C/C++ lib吗? JavaScript也有啊,如 : 果你不想ajax的话。
|
g*****g 发帖数: 34805 | 17 我建议你还是跟 ES 学,给个rest JSON api. 这样不用花很多精力去写各种 client.
【在 w***g 的大作中提到】 : 这个是client/server的。以还会做成client - proxy - server cluster, proxy可以 : 做load balancing, redundancy, sharding. 所以中间要走网络。
|
ET 发帖数: 10701 | 18 come on. this is just for fun.
【在 g*****g 的大作中提到】 : 这些年来我老不知道给解答了多少问题,问题是那种帖子顶不起来,你记不住。 : 还有就是本版充斥装逼的半桶水。上次有人问个设计的问题,我给了个几行经 : 典的factory+reflection的解决方案。偏偏有半路出家的生物男嘲笑是垃圾代码,非要 : 写个parser还坚持自己的方案最好。
|
w***g 发帖数: 5958 | 19 首先写thrift和gRPC比做http容易,加起来花了我一天时间已经做出来了。http因为要
做成嵌入式的,还要支持上传文件,代码还没port过来。rest JSON API最后肯定会有
,而且server在HTTP模式下还会支持直接serve静态文件,这样demo只需要server和
html+js就可以,中间不用再夹一层别的东西。
为什么要嵌入式http? mongo, redis啥的不会带一个独立的http server。我也一样,
部署的时候就一个binary。
【在 g*****g 的大作中提到】 : 我建议你还是跟 ES 学,给个rest JSON api. 这样不用花很多精力去写各种 client.
|
w**z 发帖数: 8232 | 20 走rest 会不会太慢?
【在 g*****g 的大作中提到】 : 我建议你还是跟 ES 学,给个rest JSON api. 这样不用花很多精力去写各种 client.
|
|
|
w***g 发帖数: 5958 | 21 这个是standard,就是慢也不能没有。我这种系统的瓶颈在计算,
protocol那点overhead可以忽略。
【在 w**z 的大作中提到】 : 走rest 会不会太慢?
|
g*****g 发帖数: 34805 | 22 图像搜索,http overhead比例很低,parsing会增加一点latency但也问题不大,主要
latency在搜索上。开源的东西牛逼了再优化很容易,一开始要注重的是易用性。
【在 w**z 的大作中提到】 : 走rest 会不会太慢?
|
w**z 发帖数: 8232 | 23 OK. If that is the case, you don't even need thrift which is pita
【在 w***g 的大作中提到】 : 这个是standard,就是慢也不能没有。我这种系统的瓶颈在计算, : protocol那点overhead可以忽略。
|
w**z 发帖数: 8232 | 24 有道理。
【在 g*****g 的大作中提到】 : 图像搜索,http overhead比例很低,parsing会增加一点latency但也问题不大,主要 : latency在搜索上。开源的东西牛逼了再优化很容易,一开始要注重的是易用性。
|
e*******o 发帖数: 4654 | 25 goodbug 骂人不少,料还是有的。
大家骂归骂,扯淡之余,学点东西知足吧。
不过lz 确实牛逼,有助于纠正版面风气。
【在 ET 的大作中提到】 : goodbug在班上的主要任务是吵架。
|
g*****g 发帖数: 34805 | 26 要不是我老人家见装逼的就骂,这个版风气更差。10年前这个版基本上都是专业出身,
吵架不多,因为没人觉得我懂个啥语言我就很牛逼。
【在 e*******o 的大作中提到】 : goodbug 骂人不少,料还是有的。 : 大家骂归骂,扯淡之余,学点东西知足吧。 : 不过lz 确实牛逼,有助于纠正版面风气。
|
z****e 发帖数: 54598 | 27 那个呆瓜还都没看出来是reflection
一层最低级的包装就让丫歇菜了
【在 g*****g 的大作中提到】 : 这些年来我老不知道给解答了多少问题,问题是那种帖子顶不起来,你记不住。 : 还有就是本版充斥装逼的半桶水。上次有人问个设计的问题,我给了个几行经 : 典的factory+reflection的解决方案。偏偏有半路出家的生物男嘲笑是垃圾代码,非要 : 写个parser还坚持自己的方案最好。
|
z****e 发帖数: 54598 | 28 关键是wdong的机器本身也弱
对每一个images parse过去,那要弄到猴年马月去
还不如专注做sounds,没准还能有点戏
image太麻烦了,google的sounds的应用已经在youtube上用得很广泛了
【在 g*****g 的大作中提到】 : 图像搜索,http overhead比例很低,parsing会增加一点latency但也问题不大,主要 : latency在搜索上。开源的东西牛逼了再优化很容易,一开始要注重的是易用性。
|
d*******r 发帖数: 3299 | 29 请问为什么大家不用 protocol buffer, 用 thrift.
看着好像 protocol buffer 更流行呢.
是因为 thrift 自带功能更丰富吗?
【在 w***g 的大作中提到】 : 首先写thrift和gRPC比做http容易,加起来花了我一天时间已经做出来了。http因为要 : 做成嵌入式的,还要支持上传文件,代码还没port过来。rest JSON API最后肯定会有 : ,而且server在HTTP模式下还会支持直接serve静态文件,这样demo只需要server和 : html+js就可以,中间不用再夹一层别的东西。 : 为什么要嵌入式http? mongo, redis啥的不会带一个独立的http server。我也一样, : 部署的时候就一个binary。
|
w***g 发帖数: 5958 | 30 gRPC就是用的protocol buffer。gRPC + protobuf用起来更舒服点。
thrift只能serialize到它自己的接口,似乎不能serialize到字符串。
【在 d*******r 的大作中提到】 : 请问为什么大家不用 protocol buffer, 用 thrift. : 看着好像 protocol buffer 更流行呢. : 是因为 thrift 自带功能更丰富吗?
|
|
|
d*******r 发帖数: 3299 | 31 回头看看 gRPC + protobuf, 多谢提点
【在 w***g 的大作中提到】 : gRPC就是用的protocol buffer。gRPC + protobuf用起来更舒服点。 : thrift只能serialize到它自己的接口,似乎不能serialize到字符串。
|
n******n 发帖数: 12088 | 32 哪个帖子?
【在 g*****g 的大作中提到】 : 这些年来我老不知道给解答了多少问题,问题是那种帖子顶不起来,你记不住。 : 还有就是本版充斥装逼的半桶水。上次有人问个设计的问题,我给了个几行经 : 典的factory+reflection的解决方案。偏偏有半路出家的生物男嘲笑是垃圾代码,非要 : 写个parser还坚持自己的方案最好。
|
g*****g 发帖数: 34805 | 33 http://www.mitbbs.com/article_t1/Programming/31397269_31397281_
一分钟写完的东西,非要写个parser。不认识factory pattern,称其垃圾代码。
【在 n******n 的大作中提到】 : 哪个帖子?
|
l*******m 发帖数: 1096 | 34 声音比图像难做多了
【在 z****e 的大作中提到】 : 关键是wdong的机器本身也弱 : 对每一个images parse过去,那要弄到猴年马月去 : 还不如专注做sounds,没准还能有点戏 : image太麻烦了,google的sounds的应用已经在youtube上用得很广泛了
|
j******g 发帖数: 2689 | |
n*****3 发帖数: 1584 | 36 nb
顶一个
【在 w***g 的大作中提到】 : gRPC就是用的protocol buffer。gRPC + protobuf用起来更舒服点。 : thrift只能serialize到它自己的接口,似乎不能serialize到字符串。
|
l******n 发帖数: 9344 | 37 支持
【在 w***g 的大作中提到】 : 读书的时候写了一堆代码一直没整理出来,最近国内东家要用类似的功能, : 干脆整理了一下起了个开源项目。我知道这个版的风气是匿名骂人光说不练, : 但挡不住mitbbs巨大的影响力,还是希望召到感兴趣的人一起contribute。 : 按惯例,开源项目本身不来钱,只能抱着兴趣/学习的目的来做。 : https://github.com/aaalgo/donkey : 功能: : 一个做非文本对象相似性搜索的框架,可以用来做以图搜图,以音频搜音频等 : 基于内容的搜索。可以看成是一个value-key store。传统的key-value : store是按key存取value。我这个正好反过来。如果在value上定义一个相似度, : 那么输进去一个value,我可以找出来数据库里最相似的那些value
|
h*i 发帖数: 3446 | 38 我正需要一个能作快速KNN的NoSQL数据库。有几个技术问题:
1. 你说这个是NoSQL,但大家一般想象中的NoSQL数据库都不是单机的,而是
distributed,这样可以横向scale,你这个也是这么打算的么?
2. 你这个技术是基于LSH的,对么?
3. 你对下面这片文章提到,简单的用K-means来实现LSH的办法怎么看?
L. Paulev ́e, H. J ́egou, and L. Amsaleg. Locality sensitive
hashing: a comparison of hash function types and querying
mechanisms. PR Letters, 2010
和这个比起来,你的技术有什么优势?
【在 w***g 的大作中提到】 : 读书的时候写了一堆代码一直没整理出来,最近国内东家要用类似的功能, : 干脆整理了一下起了个开源项目。我知道这个版的风气是匿名骂人光说不练, : 但挡不住mitbbs巨大的影响力,还是希望召到感兴趣的人一起contribute。 : 按惯例,开源项目本身不来钱,只能抱着兴趣/学习的目的来做。 : https://github.com/aaalgo/donkey : 功能: : 一个做非文本对象相似性搜索的框架,可以用来做以图搜图,以音频搜音频等 : 基于内容的搜索。可以看成是一个value-key store。传统的key-value : store是按key存取value。我这个正好反过来。如果在value上定义一个相似度, : 那么输进去一个value,我可以找出来数据库里最相似的那些value
|
w***g 发帖数: 5958 | 39 目前这个不是基于LSH的,而是用的KGraph。LSH和KGraph各有优缺。KGraph精度较高,
但是难以用精度换速度。LSH可以做得超快,但是精度较低。我已经找到一个愿意实现L
SH的同学了。计划把LSH也加进去,然后把索引做成可配置。我自己也研究过LSH,LSHK
IT就是我写的,有一些现成的LSH代码可以用,实现上应该没啥问题。刚才还收到
另一个对集群感兴趣的,不知道是不是你。K-NN搜索计算量太大,用集群来提高吞吐
量还可以,如果数据量大到要用机群来提高单个查询的速度,那吞吐量势必会非常低,
并由此导致各种稳定性问题。除非你每个查询能卖一笔钱,不然成本太大,可能会得不
尝失。
你那篇paper我认为很经典。L2 distance的话kmeans就是比以前那些基于random proje
ction的LSH要强(也就等于在很大程度上否认了之前LSH相关的研究)。这就是随机算法
和基于训练的算法的本质差异。
我这里有个Benchmark你可以看眼。KGraph比kmeans还快。KGraph目前没有开源,当初
想卖钱的,所以代码也按不开源的方式写了,为此还有一些速度上的损失。如果donkey
、这个项目能有几个商业应用(我自己手里的不算),我会写一个开源的更牛的版本。
http://www.kgraph.org/index.php?n=Main.Benchmark
https://twitter.com/radimrehurek/status/458188394976518144
ANNOY是spotify的人实现的K-NN库,不但慢10倍,而且空间开销大几十倍。
他们号称在hadoop机群上跑ANNOY,实在太业余了。
你能把做KNN的数据作为benchmark贡献一点出来吗?你可能对performance
number也会感兴趣。
【在 h*i 的大作中提到】 : 我正需要一个能作快速KNN的NoSQL数据库。有几个技术问题: : 1. 你说这个是NoSQL,但大家一般想象中的NoSQL数据库都不是单机的,而是 : distributed,这样可以横向scale,你这个也是这么打算的么? : 2. 你这个技术是基于LSH的,对么? : 3. 你对下面这片文章提到,简单的用K-means来实现LSH的办法怎么看? : L. Paulev ́e, H. J ́egou, and L. Amsaleg. Locality sensitive : hashing: a comparison of hash function types and querying : mechanisms. PR Letters, 2010 : 和这个比起来,你的技术有什么优势?
|
b*******s 发帖数: 5216 | 40 赞实干
【在 w***g 的大作中提到】 : 读书的时候写了一堆代码一直没整理出来,最近国内东家要用类似的功能, : 干脆整理了一下起了个开源项目。我知道这个版的风气是匿名骂人光说不练, : 但挡不住mitbbs巨大的影响力,还是希望召到感兴趣的人一起contribute。 : 按惯例,开源项目本身不来钱,只能抱着兴趣/学习的目的来做。 : https://github.com/aaalgo/donkey : 功能: : 一个做非文本对象相似性搜索的框架,可以用来做以图搜图,以音频搜音频等 : 基于内容的搜索。可以看成是一个value-key store。传统的key-value : store是按key存取value。我这个正好反过来。如果在value上定义一个相似度, : 那么输进去一个value,我可以找出来数据库里最相似的那些value
|
|
|
b*******s 发帖数: 5216 | 41 你就是最终准备调用我的方案来解决的牛人咯
【在 g*****g 的大作中提到】 : http://www.mitbbs.com/article_t1/Programming/31397269_31397281_ : 一分钟写完的东西,非要写个parser。不认识factory pattern,称其垃圾代码。
|
h*i 发帖数: 3446 | 42 你这个benchmark的确很吸引人哦。让我研究研究你的文章,看看有什么更多问题来问
你。
现L
LSHK
proje
算法
【在 w***g 的大作中提到】 : 目前这个不是基于LSH的,而是用的KGraph。LSH和KGraph各有优缺。KGraph精度较高, : 但是难以用精度换速度。LSH可以做得超快,但是精度较低。我已经找到一个愿意实现L : SH的同学了。计划把LSH也加进去,然后把索引做成可配置。我自己也研究过LSH,LSHK : IT就是我写的,有一些现成的LSH代码可以用,实现上应该没啥问题。刚才还收到 : 另一个对集群感兴趣的,不知道是不是你。K-NN搜索计算量太大,用集群来提高吞吐 : 量还可以,如果数据量大到要用机群来提高单个查询的速度,那吞吐量势必会非常低, : 并由此导致各种稳定性问题。除非你每个查询能卖一笔钱,不然成本太大,可能会得不 : 尝失。 : 你那篇paper我认为很经典。L2 distance的话kmeans就是比以前那些基于random proje : ction的LSH要强(也就等于在很大程度上否认了之前LSH相关的研究)。这就是随机算法
|
c***d 发帖数: 996 | 43 很有前途。 赞你。
【在 w***g 的大作中提到】 : 读书的时候写了一堆代码一直没整理出来,最近国内东家要用类似的功能, : 干脆整理了一下起了个开源项目。我知道这个版的风气是匿名骂人光说不练, : 但挡不住mitbbs巨大的影响力,还是希望召到感兴趣的人一起contribute。 : 按惯例,开源项目本身不来钱,只能抱着兴趣/学习的目的来做。 : https://github.com/aaalgo/donkey : 功能: : 一个做非文本对象相似性搜索的框架,可以用来做以图搜图,以音频搜音频等 : 基于内容的搜索。可以看成是一个value-key store。传统的key-value : store是按key存取value。我这个正好反过来。如果在value上定义一个相似度, : 那么输进去一个value,我可以找出来数据库里最相似的那些value
|
z****e 发帖数: 54598 | 44 反了吧
图像我用的方法跟你们不一样
【在 l*******m 的大作中提到】 : 声音比图像难做多了
|
g*****g 发帖数: 34805 | 45 我显示了一个框架为啥有灵活性。几行代码就能解决楼主的问题。你丫为了自圆其说生
造个傻逼问题,跟楼主要的相去万里,我的框架仍然可以调用你的傻逼方案解决。
两行代码能解决的东西,傻逼才写个 parser.
【在 b*******s 的大作中提到】 : 你就是最终准备调用我的方案来解决的牛人咯
|
l*****a 发帖数: 111 | 46 好厉害
读书的时候写了一堆代码一直没整理出来,最近国内东家要用类似的功能,干脆整理了
一下起了个开源项目。我知道这个版的风气是匿名骂人光说不练,但挡不住mitbbs巨大
的影响力,还是希望........
【在 w***g 的大作中提到】 : 读书的时候写了一堆代码一直没整理出来,最近国内东家要用类似的功能, : 干脆整理了一下起了个开源项目。我知道这个版的风气是匿名骂人光说不练, : 但挡不住mitbbs巨大的影响力,还是希望召到感兴趣的人一起contribute。 : 按惯例,开源项目本身不来钱,只能抱着兴趣/学习的目的来做。 : https://github.com/aaalgo/donkey : 功能: : 一个做非文本对象相似性搜索的框架,可以用来做以图搜图,以音频搜音频等 : 基于内容的搜索。可以看成是一个value-key store。传统的key-value : store是按key存取value。我这个正好反过来。如果在value上定义一个相似度, : 那么输进去一个value,我可以找出来数据库里最相似的那些value
|
A*******e 发帖数: 2419 | 47 赞开源。看了代码,有一些意见/疑问。
1. 文档偏少。
2. C++11很多功能可以用上,化简代码,比如:
virtual ~Index() = default;
再比如用std::unique_ptr取代DB*,就无需考虑delete db。
3. 函数有点长。比如recover(),将近50行。放在class里等于在inline。
【在 w***g 的大作中提到】 : 读书的时候写了一堆代码一直没整理出来,最近国内东家要用类似的功能, : 干脆整理了一下起了个开源项目。我知道这个版的风气是匿名骂人光说不练, : 但挡不住mitbbs巨大的影响力,还是希望召到感兴趣的人一起contribute。 : 按惯例,开源项目本身不来钱,只能抱着兴趣/学习的目的来做。 : https://github.com/aaalgo/donkey : 功能: : 一个做非文本对象相似性搜索的框架,可以用来做以图搜图,以音频搜音频等 : 基于内容的搜索。可以看成是一个value-key store。传统的key-value : store是按key存取value。我这个正好反过来。如果在value上定义一个相似度, : 那么输进去一个value,我可以找出来数据库里最相似的那些value
|
a******e 发帖数: 82 | 48 mark,跟大牛
【在 w***g 的大作中提到】 : 读书的时候写了一堆代码一直没整理出来,最近国内东家要用类似的功能, : 干脆整理了一下起了个开源项目。我知道这个版的风气是匿名骂人光说不练, : 但挡不住mitbbs巨大的影响力,还是希望召到感兴趣的人一起contribute。 : 按惯例,开源项目本身不来钱,只能抱着兴趣/学习的目的来做。 : https://github.com/aaalgo/donkey : 功能: : 一个做非文本对象相似性搜索的框架,可以用来做以图搜图,以音频搜音频等 : 基于内容的搜索。可以看成是一个value-key store。传统的key-value : store是按key存取value。我这个正好反过来。如果在value上定义一个相似度, : 那么输进去一个value,我可以找出来数据库里最相似的那些value
|
s*****t 发帖数: 89 | 49 大牛能把link改了吗?就是src下的
【在 w***g 的大作中提到】 : 读书的时候写了一堆代码一直没整理出来,最近国内东家要用类似的功能, : 干脆整理了一下起了个开源项目。我知道这个版的风气是匿名骂人光说不练, : 但挡不住mitbbs巨大的影响力,还是希望召到感兴趣的人一起contribute。 : 按惯例,开源项目本身不来钱,只能抱着兴趣/学习的目的来做。 : https://github.com/aaalgo/donkey : 功能: : 一个做非文本对象相似性搜索的框架,可以用来做以图搜图,以音频搜音频等 : 基于内容的搜索。可以看成是一个value-key store。传统的key-value : store是按key存取value。我这个正好反过来。如果在value上定义一个相似度, : 那么输进去一个value,我可以找出来数据库里最相似的那些value
|
N*****m 发帖数: 42603 | 50 你如果走redis/mongo那个方向,那应该有个shell接口
【在 w***g 的大作中提到】 : 首先写thrift和gRPC比做http容易,加起来花了我一天时间已经做出来了。http因为要 : 做成嵌入式的,还要支持上传文件,代码还没port过来。rest JSON API最后肯定会有 : ,而且server在HTTP模式下还会支持直接serve静态文件,这样demo只需要server和 : html+js就可以,中间不用再夹一层别的东西。 : 为什么要嵌入式http? mongo, redis啥的不会带一个独立的http server。我也一样, : 部署的时候就一个binary。
|
|
|
c*********e 发帖数: 16335 | 51 同问。要学习goodbug的reflection.
【在 n******n 的大作中提到】 : 哪个帖子?
|
b*******s 发帖数: 5216 | 52 you still have to implement 10k getArea() for 10 k shapes
even if you have reflection
but it is good to pick sth you can understand. at least you can have some
progress in 10k steps
【在 c*********e 的大作中提到】 : 同问。要学习goodbug的reflection.
|
g*****g 发帖数: 34805 | 53 LZ asked for 3 shapes and you want to use a parser. Maybe you should learn
Chinese first? Worry about 10k shapes when there are 10k to worry about?
【在 b*******s 的大作中提到】 : you still have to implement 10k getArea() for 10 k shapes : even if you have reflection : but it is good to pick sth you can understand. at least you can have some : progress in 10k steps
|
b*******s 发帖数: 5216 | 54 so why did you use reflection if there are only 3 shapes?
【在 g*****g 的大作中提到】 : LZ asked for 3 shapes and you want to use a parser. Maybe you should learn : Chinese first? Worry about 10k shapes when there are 10k to worry about?
|
h**********c 发帖数: 4120 | 55 How much fund you have already got?
k-graph
eigenspace
... |
g*****g 发帖数: 34805 | 56 Because its simple, concise and extendable.
【在 b*******s 的大作中提到】 : so why did you use reflection if there are only 3 shapes?
|
b*******s 发帖数: 5216 | 57 仔细想想你的方案,每次加东西都要码农来做,重新编译,测试,部署。不能通过简单
修改配置文件实现,真的像你说得那么好?
【在 g*****g 的大作中提到】 : Because its simple, concise and extendable.
|
g*****g 发帖数: 34805 | 58 你丫是不是脑残呀,多一个 shape就加一个类。原来的类连重新编译都不用。第三方的
类库可以很容易 plugin. 你写个
parser才需要每加个 shape就改写。
【在 b*******s 的大作中提到】 : 仔细想想你的方案,每次加东西都要码农来做,重新编译,测试,部署。不能通过简单 : 修改配置文件实现,真的像你说得那么好?
|
b*******s 发帖数: 5216 | 59 save some time for both of us. you just dont understand
【在 g*****g 的大作中提到】 : 你丫是不是脑残呀,多一个 shape就加一个类。原来的类连重新编译都不用。第三方的 : 类库可以很容易 plugin. 你写个 : parser才需要每加个 shape就改写。
|
g*****g 发帖数: 34805 | 60 你需要理解啥?我两行程序把问题解决了,你丫屁 parser还没影呢。
【在 b*******s 的大作中提到】 : save some time for both of us. you just dont understand
|
|
|
b*******s 发帖数: 5216 | 61 一般来说,技术讨论都是希望看到些新奇有趣的解法,你那些简单粗糙的解决,你认为
大家都想不到只有你知道?整个帖子的有趣程度都被你拉低了
【在 g*****g 的大作中提到】 : 你需要理解啥?我两行程序把问题解决了,你丫屁 parser还没影呢。
|
g*****g 发帖数: 34805 | 62 新奇的解法?连factory pattern都不知道的应该觉得 factory很新奇才是。
【在 b*******s 的大作中提到】 : 一般来说,技术讨论都是希望看到些新奇有趣的解法,你那些简单粗糙的解决,你认为 : 大家都想不到只有你知道?整个帖子的有趣程度都被你拉低了
|
b*******s 发帖数: 5216 | 63 just wasting my time...
good luck and wish you have peace in your life
【在 g*****g 的大作中提到】 : 新奇的解法?连factory pattern都不知道的应该觉得 factory很新奇才是。
|
g*****g 发帖数: 34805 | 64 不懂没啥的,丢人了就别死撑,越死撑越丢人,我说过多少次了。
【在 b*******s 的大作中提到】 : just wasting my time... : good luck and wish you have peace in your life
|
n*w 发帖数: 3393 | 65 同意。这个可以用algebraic type来试试,应该不用太多的代码。
用reflection的问题,1)performance,速度会慢很多,如果输入文件多,行数多的话
。2)如果输入中的类名来个typo、、、
要改进代码行数又会增加。
【在 b*******s 的大作中提到】 : 一般来说,技术讨论都是希望看到些新奇有趣的解法,你那些简单粗糙的解决,你认为 : 大家都想不到只有你知道?整个帖子的有趣程度都被你拉低了
|
g*****g 发帖数: 34805 | 66 尼玛俩文科生还凑一块了。reflection慢整个 parser读 config快?config不会有
typo, I服了你们。
【在 n*w 的大作中提到】 : 同意。这个可以用algebraic type来试试,应该不用太多的代码。 : 用reflection的问题,1)performance,速度会慢很多,如果输入文件多,行数多的话 : 。2)如果输入中的类名来个typo、、、 : 要改进代码行数又会增加。
|
n*w 发帖数: 3393 | 67 句句攻击别人的话都及精确描叙你自己。我没有回你的贴。你怎么又跳起来?
我没看到你说的parser的具体实现。假设一下,无数多行输入,一次性读入config后处
理无数的输入。和无数次创建instance。那个快?
回你的贴没有什么意思,解释这个为其他看客。
【在 g*****g 的大作中提到】 : 尼玛俩文科生还凑一块了。reflection慢整个 parser读 config快?config不会有 : typo, I服了你们。
|
g*****g 发帖数: 34805 | 68 傻逼你丫还一次性读入 config, 你要支持第三方,还一次性读入个屁呀,就不说总共
三个
类,你 IO的时间100个 类reflection也做完了。你丫没看到
parser怎么实现的你就来支持了,你丫是不是脑子长屁眼里了。
【在 n*w 的大作中提到】 : 句句攻击别人的话都及精确描叙你自己。我没有回你的贴。你怎么又跳起来? : 我没看到你说的parser的具体实现。假设一下,无数多行输入,一次性读入config后处 : 理无数的输入。和无数次创建instance。那个快? : 回你的贴没有什么意思,解释这个为其他看客。
|
n*w 发帖数: 3393 | 69 什么“第三方”?几百个million的输入呢?我只是说出了reflection的问题。你为什
么这么恼怒?
我支持的是能有更新奇有趣的解法,你干嘛这样骂你自己。
【在 g*****g 的大作中提到】 : 傻逼你丫还一次性读入 config, 你要支持第三方,还一次性读入个屁呀,就不说总共 : 三个 : 类,你 IO的时间100个 类reflection也做完了。你丫没看到 : parser怎么实现的你就来支持了,你丫是不是脑子长屁眼里了。
|
z****e 发帖数: 54598 | 70 是,应该造个skynet来写代码,人应该去喝啤酒,不应该写这种低级的代码
:同意。这个可以用algebraic type来试试,应该不用太多的代码。
:用reflection的问题,1)performance,速度会慢很多,如果输入文件多,行数多的
话。2)如果输入中的类名来个typo、、、 |
|
|
z****e 发帖数: 54598 | 71 你自己想的吧,反射效率问题早就搞定了,不信你自己试着把虫子代码跑十万遍试试,
看用多久
:什么“第三方”?几百个million的输入呢?我只是说出了reflection的问题。你为什
:么这么恼怒? |
g*****g 发帖数: 34805 | 72 你俩傻逼都是一个德行,几亿输入读config parse就更快?智商实在太低我就提示一下
,reflection本身就是个最简单直接的parser,从string转换为类,后面的计算面积方
法是编译过的代码,相比之下你把计算方法写进config就是个解释执行。
得多傻逼才能相信解释执行比编译执行更快?至于你丫什么typo就是纯粹装逼满嘴跑火
车。
【在 n*w 的大作中提到】 : 什么“第三方”?几百个million的输入呢?我只是说出了reflection的问题。你为什 : 么这么恼怒? : 我支持的是能有更新奇有趣的解法,你干嘛这样骂你自己。
|
n*w 发帖数: 3393 | 73 不知道你头脑里搞了什么个的 parser。
解释执行都来了。继续扯又不知道会被带到哪里了。各个看客应该自己能有个判断。你
的粉丝会无条件支持你的。
【在 g*****g 的大作中提到】 : 你俩傻逼都是一个德行,几亿输入读config parse就更快?智商实在太低我就提示一下 : ,reflection本身就是个最简单直接的parser,从string转换为类,后面的计算面积方 : 法是编译过的代码,相比之下你把计算方法写进config就是个解释执行。 : 得多傻逼才能相信解释执行比编译执行更快?至于你丫什么typo就是纯粹装逼满嘴跑火 : 车。
|
z****e 发帖数: 54598 | 74 lol,这明显就是做引擎的节奏,继续下去就离脚本引擎很近了
:不知道你头脑里搞了什么个的 parser。
:解释执行都来了。继续扯又不知道会被带到哪里了。各个看客应该自己能有个判断。
你的粉丝会无条件支持你的。 |
w***g 发帖数: 5958 | 75 大家积积德,另外起个thread吵架吧。
【在 w***g 的大作中提到】 : 读书的时候写了一堆代码一直没整理出来,最近国内东家要用类似的功能, : 干脆整理了一下起了个开源项目。我知道这个版的风气是匿名骂人光说不练, : 但挡不住mitbbs巨大的影响力,还是希望召到感兴趣的人一起contribute。 : 按惯例,开源项目本身不来钱,只能抱着兴趣/学习的目的来做。 : https://github.com/aaalgo/donkey : 功能: : 一个做非文本对象相似性搜索的框架,可以用来做以图搜图,以音频搜音频等 : 基于内容的搜索。可以看成是一个value-key store。传统的key-value : store是按key存取value。我这个正好反过来。如果在value上定义一个相似度, : 那么输进去一个value,我可以找出来数据库里最相似的那些value
|
p*******8 发帖数: 344 | 76 挺感兴趣的,可惜只会Java...
【在 w***g 的大作中提到】 : 大家积积德,另外起个thread吵架吧。
|
c**0 发帖数: 535 | 77 人家都自称brainless了,你还自贬为脑残去和别人掐!被狗咬了一口,你还想去咬回
狗一口。别太容易上火了!你自己都知道这个坛子是光说不练的。。。
【在 g*****g 的大作中提到】 : http://www.mitbbs.com/article_t1/Programming/31397269_31397281_ : 一分钟写完的东西,非要写个parser。不认识factory pattern,称其垃圾代码。
|
j******g 发帖数: 2689 | 78 REST是标准了,自己带个服务器不明智,毕竟你这个系统要嵌在别的网页中,标准支持
肯定Apache之类的厉害。 |
a*********a 发帖数: 3656 | 79 您老自己点名把吵架的人招来的啊*_^。只来了一个,另一个还没来咧。
【在 w***g 的大作中提到】 : 大家积积德,另外起个thread吵架吧。
|
A********i 发帖数: 97 | |
|
|
j********x 发帖数: 2330 | 81 您这种不是马公的就不要讨论马公的活儿行不行。。。
。。。
您估计是高大上的做管理的吗你这吧。。。
【在 b*******s 的大作中提到】 : 仔细想想你的方案,每次加东西都要码农来做,重新编译,测试,部署。不能通过简单 : 修改配置文件实现,真的像你说得那么好?
|
j********x 发帖数: 2330 | 82 lz好贴给人毁了
我建议看到烂贴统一不回复就行了 |
L****8 发帖数: 3938 | 83 KGraph 是啥idea 能透露一点么?
现L
LSHK
proje
算法
【在 w***g 的大作中提到】 : 目前这个不是基于LSH的,而是用的KGraph。LSH和KGraph各有优缺。KGraph精度较高, : 但是难以用精度换速度。LSH可以做得超快,但是精度较低。我已经找到一个愿意实现L : SH的同学了。计划把LSH也加进去,然后把索引做成可配置。我自己也研究过LSH,LSHK : IT就是我写的,有一些现成的LSH代码可以用,实现上应该没啥问题。刚才还收到 : 另一个对集群感兴趣的,不知道是不是你。K-NN搜索计算量太大,用集群来提高吞吐 : 量还可以,如果数据量大到要用机群来提高单个查询的速度,那吞吐量势必会非常低, : 并由此导致各种稳定性问题。除非你每个查询能卖一笔钱,不然成本太大,可能会得不 : 尝失。 : 你那篇paper我认为很经典。L2 distance的话kmeans就是比以前那些基于random proje : ction的LSH要强(也就等于在很大程度上否认了之前LSH相关的研究)。这就是随机算法
|
w***g 发帖数: 5958 | 84 就是在图结构上找最近点。这个闭源的实在没赚到钱,打算开源算了。
过两天会放到github上。
【在 L****8 的大作中提到】 : KGraph 是啥idea 能透露一点么? : : 现L : LSHK : proje : 算法
|
L****8 发帖数: 3938 | 85 给定 KNN-graph后 怎么找
在KNN-graph随机找一个点A 然后在A的KNN内找最近的 比如B 然后循环 ?
【在 w***g 的大作中提到】 : 就是在图结构上找最近点。这个闭源的实在没赚到钱,打算开源算了。 : 过两天会放到github上。
|
w***g 发帖数: 5958 | 86 基本上就是这样。
【在 L****8 的大作中提到】 : 给定 KNN-graph后 怎么找 : 在KNN-graph随机找一个点A 然后在A的KNN内找最近的 比如B 然后循环 ?
|
L****8 发帖数: 3938 | 87 如果有好多个 离得很远的cluster 怎么办?
第一个点蒙错了 就全错了
【在 w***g 的大作中提到】 : 基本上就是这样。
|
w***g 发帖数: 5958 | 88 具体实现的时候有一些engineering来提高准确率。蒙错还是有的,但是比别的方法少。
【在 L****8 的大作中提到】 : 如果有好多个 离得很远的cluster 怎么办? : 第一个点蒙错了 就全错了
|
x**h 发帖数: 11 | 89 赞,能找到合适的开源项目不容易
【在 w***g 的大作中提到】 : 读书的时候写了一堆代码一直没整理出来,最近国内东家要用类似的功能, : 干脆整理了一下起了个开源项目。我知道这个版的风气是匿名骂人光说不练, : 但挡不住mitbbs巨大的影响力,还是希望召到感兴趣的人一起contribute。 : 按惯例,开源项目本身不来钱,只能抱着兴趣/学习的目的来做。 : https://github.com/aaalgo/donkey : 功能: : 一个做非文本对象相似性搜索的框架,可以用来做以图搜图,以音频搜音频等 : 基于内容的搜索。可以看成是一个value-key store。传统的key-value : store是按key存取value。我这个正好反过来。如果在value上定义一个相似度, : 那么输进去一个value,我可以找出来数据库里最相似的那些value
|