Universal NFT Vector Database
1.0.0
通用NFT矢量数据库是一项计划,旨在存储每个基于图像的以太坊NFT(ERC-721)的矢量化版本。该项目利用各种技术来使其成为可能,包括Alchemy API,图形协议和Pinecone。我们完整的软件基础架构可以在下面找到:
下面,我们概述了主要零件/系统作为该项目的一部分及其在整个系统中的用例。
| 系统 | 用例 |
|---|---|
| 分析仪表板 | 这是我们客户端应用程序的首页,主要用于显示数据库和任务队列中有关数据的统计信息和其他信息。 |
| 搜索页面 | 搜索页面是一个交互式页面,供用户查询数据库并找到类似的NFT,同时还可以在二维图上可视化其NFT。 |
| 图协议集成 | 图形协议用作查询层,以获取区块链上的所有NFT收集信息。 |
| 炼金术API集成 | 炼金术API用于获取每个NFT集合的所有单个NFT信息,然后将其存储在我们的系统中。 |
| 后端服务器 | 我们的后端服务器允许我们与数据进行交互并从数据库中获取信息以在分析仪表板上显示。 |
| regnety-080图像嵌入集成 | 图像嵌入是标准化图像表示并将其存储在矢量数据库中的一种方式。 |
| 搜索API | 搜索API允许用户根据源图像查询Vector数据库中的类似NFT。它使用余弦距离作为查找最接近的NFT的度量。 |
| 可视化API | 可视化API允许用户相对于类似的NFT可视化其源图像 - 它使用截短的奇异值分解来执行此操作。 |
| 任务队列工人服务器 | 任务队列工人服务器可实现系统的水平可扩展性,因为它允许成千上万的NFT坐在队列中,因为它们最终被处理。 |
我们始终欢迎向此存储库的拉请请求进行修复并进一步改善我们的数据库。
我们提供了一个可用的设置脚本( setup.sh )来本地设置系统 - 仅使用WSL和Ubuntu对此进行了测试,因此请自行使用。在运行设置脚本之前,请确保您已安装以下内容:
您还需要为此项目添加一个环境文件。带有.env文件的目录:
python_server/src/client/celery_queue/benchmarks/我们为每个.env文件提供了.env.example 。我们还提供了一个doppler.example ,以查看我们还有哪些其他环境变量,因为我们使用多普勒作为统一的秘密管理软件。
然后,要设置此项目:
sudo chmod +x ./setup.sh
sudo ./setup.sh
或者,手动设置此项目:
client端文件夹,并安装所有依赖项: cd client
npm install
python_server/src文件夹,然后创建一个Python虚拟环境文件夹。然后安装所有依赖项: cd python_server/src
python3 -m venv venv
source venv/bin/activate
pip3 install -r requirements.txt
celery_queue/文件夹,然后创建一个Python虚拟环境文件夹。然后安装所有依赖项: cd celery_queue
python3 -m venv venv
source venv/bin/activate
pip3 install -r requirements.txt
sudo chmod +x ./run.sh
sudo ./run.sh
npm start --prefix client/
cd python_server/src
source venv/bin/activate
python app.py
cd celery_queue
source venv/bin/activate
celery -A tasks worker