Spaces:
Sleeping
Sleeping
File size: 1,336 Bytes
c423312 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
import numpy as np
from redis import Redis
from redis.commands.search.field import TagField, TextField, VectorField
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
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"),
]
)
|