meme search engine
1.0.0
您是否有一个大文件夹想要进行语义搜索?您有配备 Nvidia GPU 的 Linux 服务器吗?你做;现在这是强制性的。
他们说一张图片胜过一千个文字。不幸的是,许多(大多数?)单词组无法通过图片充分描述。无论如何,这是一张照片。您可以在此处使用正在运行的实例。
这是未经测试的。它可能会起作用。新的 Rust 版本简化了一些步骤(它集成了自己的缩略图)。
python -m http.server
。requirements.txt
中的pip
安装Python依赖项(如果您需要更改版本,则版本可能不需要完全匹配;我只是输入当前已安装的版本)。transformers
的修补版本。thumbnailer.py
(定期运行,最好与索引重新加载同时运行)clip_server.py
(作为后台服务)。clip_server_config.json
中有一个示例。device
可能应该是cuda
或cpu
。该模型将在这里运行。model
是model_name
是用于指标目的的模型名称。max_batch_size
控制允许的最大批量大小。较高的值通常会带来更好的性能(但目前大多数情况下瓶颈在其他地方),但代价是更高的 VRAM 使用量。port
是运行 HTTP 服务器的端口。meme-search-engine
(Rust)(也作为后台服务)。clip_server
是后端服务器的完整 URL。db_path
是图像和嵌入向量的 SQLite 数据库的路径。files
是读取模因文件的地方。子目录已建立索引。port
是提供 HTTP 服务的端口。enable_thumbs
设置为true
以提供压缩图像。npm install
, node src/build.js
。frontend_config.json
时,您都需要重建它。image_path
是 meme 网络服务器的基本 URL(带有尾部斜杠)。backend_url
是mse.py
公开的 URL(尾部斜杠可能是可选的)。clip_server.py
。 有关 MemeThresher 的信息,请参阅此处,这是新的自动 meme 获取/评级系统(位于meme-rater
下)。自己部署预计会有些棘手,但应该大致可行:
crawler.py
并运行它以收集初始数据集。mse.py
以对其进行索引。rater_server.py
收集初始数据集对。train.py
训练模型。您可能需要调整超参数,因为我不知道哪些是好的。active_learning.py
来获取新的对进行评分。copy_into_queue.py
将新对复制到rater_server.py
队列中。library_processing_server.py
并安排meme_pipeline.py
定期运行。 Meme 搜索引擎使用内存中的 FAISS 索引来保存其嵌入向量,因为我很懒,但它工作得很好(我的 8000 个 meme 使用了约 100MB 的总 RAM)。如果您想存储更多的数据,则必须切换到更高效/紧凑的索引(请参见此处)。由于矢量索引仅保存在内存中,因此您需要将它们持久保存到磁盘或使用快速构建/删除/添加的矢量索引(大概是 PCA/PQ 索引)。在某些时候,如果增加总流量,CLIP 模型也可能成为瓶颈,因为我也没有批处理策略。索引目前受 GPU 限制,因为新模型在高批量大小下显得有些慢,并且我改进了图像加载管道。您可能还想缩小显示的模因以减少带宽需求。