Vemcacheは、メモリ内のベクトルデータベースです。
Vemcacheは、ベクトルデータベースのRedis同等物と考えることができます。
docker pull faizchishtie/vemcachedocker run --rm -it -p 7070:7070 faizchishtie/vemcache:latestdocker-compose.ymlに以下を追加します
version: "3.7"
services:
vemcache:
image: faizchishtie/vemcache:latest
ports:
- "7070:7070"
environment:
- VEMCACHE_HOST=0.0.0.0
- VEMCACHE_PORT=7070
- VEMCACHE_SECRET=mysecret
git clone https://github.com/faizchishtie/vemcache.git
cd vemcachemake buildmake runtelnetやncなどのTCPクライアントを使用してVemcacheに接続します。
telnetを使用してVemcacheに接続します
telnet 0.0.0.0 7070またはncを使用します
nc 0.0.0.0 7070接続したら、コマンドを送信してVemcacheサーバーと対話できます。
ベクトルをデータベースに挿入するには、挿入コマンドを使用してベクトル値を使用します。
insert 0.5 0.7 0.2指定されたキーを持つベクトルを挿入するには、aNDAGE_INSERTコマンドを使用してキーとベクトルの値を使用します。
named_insert my_vector 0.5 0.7 0.2データベースを使用してデータベースからベクトルを取得するには、getコマンドに続いてキーを使用します。
get my_vectorキーを使用してデータベースからベクトルを削除するには、削除コマンドに続いてキーを使用します。
remove my_vector2つのベクトル間のコサインの類似性を計算するには、Vcosineコマンドを使用して、2つのベクトルのキーが続きます。
vcosine vector1 vector2ベクトルのk最寄りの隣接を見つけるには、knnコマンドを使用して、クエリベクトルのキーとkの値を使用します。
knn query_vector 32つのベクトルの要素ごとの追加を実行するには、VADDコマンドを使用して、2つのベクトルのキーを使用します。
vadd vector1 vector22つのベクトルの要素ごとの減算を実行するには、VSUBコマンドを使用して2つのベクトルのキーを使用します。
vsub vector1 vector2スカラー値でベクトルをスケーリングするには、Vscaleコマンドを使用して、ベクトルのキーとスカラー値のキーを使用します。
vscale vector1 2.0データベースをJSONファイルにダンプするには、ダンプコマンドを使用してファイルへのパスを使用します。
dump vemcache.jsonクライアントを終了するには、ctrl+cを押すか、quitを入力します(telnetを使用している場合)。
これで、ベクトル操作のためのVemcacheの基本的な使用法が終了します。各コマンドのより高度な操作と詳細な説明については、Vemcacheドキュメントを参照してください。
# User connects to Vemcache using telnet
$ telnet 0.0.0.0 7070
Trying 0.0.0.0...
Connected to 0.0.0.0.
Escape character is ' ^] ' .
# User inserts a vector with the key "vector_a"
named_insert vector_a 0.5 0.7 0.2
OK
# User inserts another vector with the key "vector_b"
named_insert vector_b 0.1 0.9 0.4
OK
# User retrieves the vector with the key "vector_a"
get vector_a
[0.5, 0.7, 0.2]
# User calculates the cosine similarity between "vector_a" and "vector_b"
vcosine vector_a vector_b
Cosine Similarity: 0.8693
# User finds the nearest neighbor of "vector_a" (k=2)
knn vector_a 2
ID: vector_a, Vector: [0.5, 0.7, 0.2]
ID: vector_b, Vector: [0.1, 0.9, 0.4]
# User performs element-wise addition of "vector_a" and "vector_b"
vadd vector_a vector_b
[0.6, 1.6, 0.6]
# User scales "vector_a" by a factor of 2
vscale vector_a 2.0
[1.0, 1.4, 0.4]
# User removes "vector_a" from the database
remove vector_a
OK
# User attempts to retrieve "vector_a" again (expecting an error)
get vector_a
null
# Dump vemcache db
dump vemcache.json
Database dump successful: vemcache.json
# User exits the session
quit
Connection closed by foreign host.