YouTubeを無限ストレージにする系譜とmemvid
MCPサーバーを漁っていたら memvid-mcp-server という面白いものを見つけた。テキストを動画(MP4)にエンコードして、セマンティック検索できるようにするというもの。
「動画にデータを埋め込む」というアプローチ、昔「YouTubeを無限ストレージにする」という狂気のプロジェクトがあったなと思い出して、その系譜を調べてみた。
YouTubeストレージ系プロジェクトの歴史
YouTubeは動画の総数や総容量に制限がない。この「穴」を突いて、任意のファイルを動画にエンコードしてアップロードすれば無限ストレージになるのでは?という発想から生まれたプロジェクトたち。
YouTubeDrive(2017年)- 元祖
Wolfram Language(Mathematica)で書かれた元祖。ファイルのバイト列をRGB値に変換して動画を生成し、YouTube APIで自動アップロード/ダウンロードする。
作者自身が「silly proof-of-concept(馬鹿げた概念実証)」と認めているが、1,900以上のスターを獲得している。
Infinite-Storage-Glitch(2023年)- 大流行
DvorakDwarf/Infinite-Storage-Glitch
Rust製。7,300スター超えの大人気プロジェクト。2つのエンコードモードがある:
- RGBモード: 1ピクセル = 3バイト。効率的だが圧縮に弱い
- バイナリモード: 2x2ピクセルブロックで1ビットを表現。YouTube圧縮に耐性がある
作者は「YouTubeの利用規約に違反するかもしれない。このツールの使用は推奨しない」と正直に書いている。
qStore(2023年)- QRコードという解
作者は最初、LSBステガノグラフィ、RGB埋め込み、DCT変換など様々な手法を試した。しかしYouTubeの圧縮アルゴリズムが強力すぎて、どれも復元時にデータが壊れてしまった。
最終的にたどり着いた答えがQRコード。QRコードは元々エラー訂正機能を持っているため、多少の圧縮劣化にも耐えられる。
memvid - QRコード + セマンティック検索
memvidはqStoreのQRコードアプローチを継承しつつ、新しい要素を加えた:
- テキストチャンクをQRコードとして動画フレームに埋め込む
- sentence-transformersで埋め込みベクトルを生成
- FAISSでセマンティック検索を可能に
つまり「動画をベクトルデータベースとして使う」という発想。
memvid-mcp-server
memvidをMCPサーバーとしてラップしたもの。提供されるツールは2つ:
add_chunks: テキストチャンクを追加(動画を再生成)search: セマンティック検索でクエリに一致するチャンクを返す
Streamable HTTPトランスポートを使用し、デフォルトでport 3000で動作する。
技術的アプローチの比較
| プロジェクト | エンコード方式 | 目的 |
|---|---|---|
| YouTubeDrive | RGB値 | ファイル保存 |
| Infinite-Storage-Glitch | RGB or バイナリ | ファイル保存 |
| qStore | QRコード | ファイル保存(暗号化対応) |
| memvid | QRコード + ベクトル | テキスト保存 + 検索 |
YouTubeDrive系は「無料で無限ストレージ」というハック精神が主目的。memvidは「動画という形式でテキストを保存しつつ、意味検索もできるようにする」というRAG的なユースケースを狙っている。
実用性について
正直なところ、どちらも実用性は微妙:
YouTubeストレージ系の問題
- 圧縮でデータ破損のリスク
- アップロード/ダウンロードが遅い
- YouTube利用規約違反の可能性
memvidの問題
- 普通にベクトルDB(Pinecone、Qdrant、ChromaDBなど)を使った方が速くて安定
- チャンク追加のたびに動画全体を再生成するオーバーヘッド
- 依存関係が重い(PyTorch、sentence-transformers、FAISS)
「技術的には面白いけど実用では別の手段がある」という点で共通している。でもこういう「やってみた」系のプロジェクトは、実用性より発想の面白さに価値があると思う。動画をデータベースとして使うというコンセプト自体はユニークだけどそこまで使いどころがいいわけでもないので、何か思いついたら使ってみるかという感じ。