chn-lee-yumi / MaterialSearch

AI语义搜索本地素材。以图搜图、查找本地素材、根据文字描述匹配画面、视频帧搜索、根据画面描述搜索视频。Semantic search. Search local photos and videos through natural language.
GNU General Public License v3.0
799 stars 110 forks source link

十万张图索引后加入索引速度下降 #95

Closed xsisiw closed 2 months ago

xsisiw commented 2 months ago

一开始很快一秒很多个,但是录入的图片多了后感觉是sqlite的性能下降了一秒只有两个,如果用mysql是不是会好一些,我的一个项目用mysql索引了千万图片的md5,发现mysql 的性能会很好几乎不会影响录入速度

chn-lee-yumi commented 2 months ago

你可以尝试改一下代码用mysql?看看效果如何

chn-lee-yumi commented 2 months ago

改这里应该就可以了:https://github.com/chn-lee-yumi/MaterialSearch/blob/main/models.py

xsisiw commented 2 months ago

改这里应该就可以了:https://github.com/chn-lee-yumi/MaterialSearch/blob/main/models.py

谢谢,我以为要改一大堆,没想到就改这个文件和config,已经改成mysql的并且测试可以用了,我录入几百万张图片试试效果

xsisiw commented 2 months ago

测了下 MYSQL 索引333470张耗时871秒, 4.5s每次搜索 SQLITE 索引333470张耗时984秒 , 3.29s每次搜索 可能是mysql我设置的索引只有255的长度搜索会慢一秒

chn-lee-yumi commented 2 months ago

可能是mysql我设置的索引只有255的长度搜索会慢一秒

改下索引试试?

xsisiw commented 2 months ago

改下索引试试?

path的索引最多250,没有办法增加了,但是搜索的话都是全表搜索features这个的,所以path的索引应该不影响搜索速度的,sqlite是直接读取文件数据可能要比使用服务的mysql更快一些,但是数据量足够大的话mysql的性能会更好一些,如果用3台电脑同时搜索1秒内就可以搜到,不过一般来说也足够用了 ,试了改缓存依然是差距不大

chn-lee-yumi commented 2 months ago

搜索是features这个向量的距离计算。改用向量数据库可能会好一些,但是我没有空测,估计代码也得大改。