Vemcache เป็นฐานข้อมูลเวกเตอร์ในหน่วยความจำ
Vemcache สามารถคิดได้ว่าเป็น Redis เทียบเท่ากับฐานข้อมูลเวกเตอร์
docker pull faizchishtie/vemcachedocker run --rm -it -p 7070:7070 faizchishtie/vemcache:latest เพิ่มสิ่งต่อไปนี้ใน docker-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 run เชื่อมต่อกับ vemcache กับไคลเอนต์ TCP เช่น telnet หรือ nc
ใช้ telnet เพื่อเชื่อมต่อกับ vemcache
telnet 0.0.0.0 7070 หรือใช้ nc
nc 0.0.0.0 7070เมื่อเชื่อมต่อแล้วคุณสามารถโต้ตอบกับเซิร์ฟเวอร์ vemcache โดยส่งคำสั่ง
ในการแทรกเวกเตอร์ลงในฐานข้อมูลให้ใช้คำสั่งแทรกตามด้วยค่าเวกเตอร์:
insert 0.5 0.7 0.2ในการแทรกเวกเตอร์ด้วยคีย์ที่ระบุให้ใช้คำสั่ง named_insert ตามด้วยคีย์และค่าเวกเตอร์:
named_insert my_vector 0.5 0.7 0.2ในการดึงเวกเตอร์จากฐานข้อมูลโดยใช้คีย์ให้ใช้คำสั่ง GET ตามด้วยคีย์:
get my_vectorในการลบเวกเตอร์ออกจากฐานข้อมูลโดยใช้คีย์ให้ใช้คำสั่งลบตามด้วยคีย์:
remove my_vectorในการคำนวณความคล้ายคลึงกันของโคไซน์ระหว่างสองเวกเตอร์ให้ใช้คำสั่ง vcosine ตามด้วยคีย์ของเวกเตอร์ทั้งสอง:
vcosine vector1 vector2ในการค้นหาเพื่อนบ้านที่ใกล้ที่สุดของเวกเตอร์ให้ใช้คำสั่ง KNN ตามด้วยคีย์ของเวกเตอร์แบบสอบถามและค่า K:
knn query_vector 3ในการดำเนินการเพิ่มองค์ประกอบอย่างชาญฉลาดของเวกเตอร์สองตัวให้ใช้คำสั่ง VADD ตามด้วยคีย์ของเวกเตอร์ทั้งสอง:
vadd vector1 vector2ในการดำเนินการลบองค์ประกอบที่ชาญฉลาดของเวกเตอร์สองตัวให้ใช้คำสั่ง VSUB ตามด้วยคีย์ของเวกเตอร์ทั้งสอง:
vsub vector1 vector2ในการปรับขนาดเวกเตอร์ด้วยค่าสเกลาร์ให้ใช้คำสั่ง VSCALE ตามด้วยคีย์ของเวกเตอร์และค่าสเกลาร์:
vscale vector1 2.0ในการทิ้งฐานข้อมูลไปยังไฟล์ JSON ให้ใช้คำสั่ง dump ตามด้วยพา ธ ไปยังไฟล์:
dump vemcache.jsonหากต้องการออกจากไคลเอนต์ให้กด Ctrl+C หรือพิมพ์ออก (หากใช้ 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.