Spaces:
Sleeping
Sleeping
from redis import Redis | |
from redis.commands.search.field import VectorField | |
from redis.commands.search.field import TextField | |
from redis.commands.search.field import TagField | |
from redis.commands.search.result import Result | |
import numpy as np | |
def load_vectors(client:Redis, product_metadata, vector_dict): | |
p = client.pipeline(transaction=False) | |
for index in product_metadata.keys(): | |
#hash key | |
key='product:'+ str(index)+ ':' + product_metadata[index]['primary_key'] | |
#hash values | |
item_metadata = product_metadata[index] | |
item_keywords_vector = np.array(vector_dict[index], dtype=np.float32).tobytes() | |
item_metadata['item_vector']=item_keywords_vector | |
# HSET | |
p.hset(key,mapping=item_metadata) | |
p.execute() | |
def create_flat_index (redis_conn, number_of_vectors, vector_dimensions=512, distance_metric='L2'): | |
redis_conn.ft().create_index([ | |
VectorField('item_vector', "FLAT", {"TYPE": "FLOAT32", "DIM": vector_dimensions, "DISTANCE_METRIC": distance_metric, "INITIAL_CAP": number_of_vectors, "BLOCK_SIZE":number_of_vectors }), | |
TagField("product_type"), | |
TextField("item_name"), | |
TextField("item_keywords"), | |
TagField("country") | |
]) | |