Vector Similarity#

Adding Vector Fields#

[1]:
import redis
from redis.commands.search.field import VectorField
from redis.commands.search.query import Query

r = redis.Redis(host='localhost', port=36379)

schema = (VectorField("v", "HNSW", {"TYPE": "FLOAT32", "DIM": 2, "DISTANCE_METRIC": "L2"}),)
r.ft().create_index(schema)
[1]:
b'OK'

Searching#

Querying vector fields#

[2]:
r.hset("a", "v", "aaaaaaaa")
r.hset("b", "v", "aaaabaaa")
r.hset("c", "v", "aaaaabaa")

q = Query("*=>[KNN 2 @v $vec]").return_field("__v_score").dialect(2)
r.ft().search(q, query_params={"vec": "aaaaaaaa"})
[2]:
Result{2 total, docs: [Document {'id': 'a', 'payload': None, '__v_score': '0'}, Document {'id': 'b', 'payload': None, '__v_score': '3.09485009821e+26'}]}