Redis Vector Database

Redis を向量ベクトルデータベースとして使用しようする設定せってい方法ほうほうについて、向量ベクトルモデリング、インデックス作成さくせい検索けんさく設定せってい解説かいせつします。

環境設定

Python で向量ベクトル embedding 計算けいさんおこなうには、以下いかのパッケージが必要ひつようです:

python -m venv redisvenv
source ./redisvenv/bin/activate

pip install sentence_transformers
pip install imgbeddings

初回しょかい実行じっこう時に embedding モデル all-MiniLM-L6-v2 がダウンロードされます。

向量モデリング

Redis as Vector Database

向量ベクトルは Redis で文字列もじれつとして保存ほぞんされ、向量ベクトルをシリアライズして適切てきせつなデータ構造こうぞう格納かくのうします。

String での保存

もっと簡単かんたん方法ほうほうは、カンマ区切くぎりの文字列もじれつ保存ほぞんすることです:

SET vec "0.00555776,0.06124274,-0.05503812,-0.08395513,-0.09052192,-0.01091553,-0.06539601,0.01099653,-0.07732834,0.0536432"

Hash での保存

向量ベクトルは Hash ないでバイナリ blob として保存ほぞんされます:

{
    "content": "Understanding vector search is easy, but understanding all the mathematics behind a vector is not!",
    "genre": "technical",
    "embedding": "..."
}

JSON での保存

RedisJSON モジュールを使用しようすると、ドキュメントと向量ベクトルを JSON 形式けいしき直接ちょくせつ保存ほぞんできます。

向量インデックスの作成

FT.CREATE コマンドで向量ベクトルインデックスを作成さくせいします。Hash と JSON の両方りょうほうのデータ構造こうぞう対応たいおうしています。

Hash インデックス

FT.CREATE doc_idx ON HASH PREFIX 1 doc: SCHEMA content AS content TEXT genre AS genre TAG embedding VECTOR HNSW 6 TYPE FLOAT32 DIM 384 DISTANCE_METRIC COSINE

JSON インデックス

FT.CREATE doc_idx ON JSON PREFIX 2 doc: SCHEMA $.content AS content TEXT $.genre AS genre TAG $.embedding VECTOR HNSW 6 TYPE FLOAT32 DIM 384 DISTANCE_METRIC COSINE

インデックスパラメータ

パラメータ説明
DIM向量ベクトル次元数じげんすう(embedding モデルにより決定けってい384(all-MiniLM-L6-v2)
TYPE向量ベクトルデータがたFLOAT32
DISTANCE_METRIC距離きょり計算けいさん方法ほうほうCOSINE、L2、IP
HNSW / FLATインデックス方法ほうほうデータりょうにより選択せんたく

インデックス方法

FLAT

小規模しょうきぼデータセットてきしています。

  • テスト向量ベクトルをインデックスないのすべての向量ベクトルひとつずつ比較ひかく
  • 結果けっかもっと正確せいかくだが、速度そくどおそ計算けいさん負荷ふかたか

HNSW (Hierarchical Navigable Small World)

大規模だいきぼデータセットてきしています。

  • HNSW アルゴリズムを使用しようした確率的かくりつてきアプローチ
  • 検索けんさく速度そくどはやいが、精度せいど犠牲ぎせいにしてパフォーマンスを向上こうじょう

距離計算

コサイン距離きょり(cosine distance)はコサイン類似度るいじど補数ほすうで、1 - cosine_similarity計算けいさんできます:

cosine distance=1cosine similarity \text{cosine distance} = 1 - \text{cosine similarity}

詳細しょうさい距離きょり計算けいさん方法ほうほうSemantic Search参照さんしょうしてください。

応用シナリオ

  • テキスト推薦すいせんシステム - テキスト内容ないよう類似度るいじどもとづく推薦すいせん
  • 画像がぞう検索けんさく - imgbeddings で画像がぞう向量ベクトル変換へんかん
  • RAG システム - LLM とわせた検索けんさく拡張かくちょう生成せいせい

関連トピック