meme-search:基于内容的表情包搜索引擎
项目介绍
meme-search 是一个开源的表情包搜索引擎,使用 Python、Ruby 和 Docker 技术构建,可以自我托管。它通过人工智能技术索引表情包的内容和文本,使得用户可以轻松检索用于表情包战争(meme warfare)的素材。所有的处理过程,包括图像到文本的提取、向量嵌入到搜索,都在本地完成,保证了数据处理的安全性和隐私性。
项目技术分析
meme-search 采用了多种技术构建,包括:
- 图像到文本模型:支持多种大小的图像到文本模型,从小型(约2亿参数)到大型(约20亿参数),以满足不同需求。
- 向量搜索:使用 Postgres 和 pgvector 进行向量搜索,实现快速的关键词和向量搜索。
- 目录路径管理:支持跨多个子目录组织表情包,无需将所有内容存储在一个文件夹中。
- 自动描述生成:可以针对特定表情包自动生成描述,而不是对整个目录应用。
项目及应用场景
meme-search 的应用场景广泛,主要包括:
- 个人表情包管理:帮助用户高效管理和检索个人表情包收藏。
- 社交媒体内容创作:为社交媒体内容创作者提供快速的表情包搜索和生成工具。
- 教育和研究:在教育和研究领域,可以用于快速检索相关表情包作为教学或研究素材。
项目特点
多模型支持
meme-search 支持多种图像到文本模型,包括 Microsoft 的 Florence-2 系列、Hugging Face 的 SmolVLM 系列,以及vikhyatk 的 Moondream2 模型,用户可以根据自己的需求和资源选择合适的模型。
自动生成描述
用户可以为特定的表情包生成自动描述,而无需对整个目录中的表情包进行操作。
手动编辑描述
用户可以手动编辑或添加描述,以获得更好的搜索结果,无需等待自动生成。
标签管理
创建、编辑和分配标签,以便更好地组织和筛选表情包。
快速向量搜索
利用 Postgres 和 pgvector 实现快速向量搜索,提高搜索效率。
目录路径管理
支持在多个子目录中组织表情包,提供灵活的目录管理。
新的 organizational 工具
通过标签、目录路径和描述向量进行筛选,以及切换关键词和向量搜索,提供更多的控制选项。
安装和使用
安装 meme-search 非常简单,用户可以通过 Docker Compose 来启动服务。具体步骤如下:
- 拉取仓库并使用 Docker Compose 启动服务:
docker compose up
-
服务将运行在
3000
端口,可通过http://localhost:3000
访问。 -
根据需要,用户可以自定义服务的主机和端口。
-
使用 Docker Compose 构建本地应用:
docker compose -f docker-compose-local-build.yml up --build
- 运行测试以确保应用正常工作:
bash run_tests.sh
meme-search 作为一个开源项目,正处于积极开发中,欢迎有兴趣的开发者参与贡献和改进。通过这个项目,用户可以更高效地管理和检索表情包,为社交媒体、教育和研究领域提供强大的工具。