Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 6 additions & 2 deletions src/langchain_google_memorystore_redis/vectorstore.py
Original file line number Diff line number Diff line change
Expand Up @@ -321,8 +321,12 @@ def init_index(client: redis.Redis, index_config: IndexConfig):
command = (
f"FT.CREATE {index_config.name} ON HASH PREFIX 1 {RedisVectorStore.get_key_prefix(index_config.name)} "
f"SCHEMA {index_config.field_name} VECTOR {index_config.type} "
f"6 TYPE {index_config.data_type} DIM {index_config.vector_size} "
f"DISTANCE_METRIC {index_config.distance_metric}"
f"14 TYPE {index_config.data_type} DIM {index_config.vector_size} "
f"DISTANCE_METRIC {index_config.distance_metric} "
f"TYPE {index_config.data_type} "
f"M {index_config.m} "
f"EF_CONSTRUCTION {index_config.ef_construction} "
f"EF_RUNTIME {index_config.ef_runtime}"
)

try:
Expand Down
24 changes: 20 additions & 4 deletions tests/test_memorystore_redis_vectorstore.py
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,12 @@ def test_vector_store_init_index():
index_name = str(uuid.uuid4())

index_config = HNSWConfig(
name=index_name, distance_strategy=DistanceStrategy.COSINE, vector_size=128
name=index_name,
distance_strategy=DistanceStrategy.COSINE,
vector_size=128,
m=1,
ef_construction=2,
ef_runtime=3,
)

assert not check_index_exists(client, index_name, index_config)
Expand Down Expand Up @@ -134,8 +139,7 @@ def test_vector_store_add_texts(texts, metadatas, ids):

# Verify no extra keys are present
all_keys = [key.decode("utf-8") for key in client.keys(f"{index_name}*")]
# Currently RedisQuery stores the index schema as a key using the index_name
assert len(all_keys) == len(returned_ids) + 1, "Found unexpected keys in Redis"
assert len(all_keys) == len(returned_ids), "Found unexpected keys in Redis"

# Clena up
RedisVectorStore.drop_index(client=client, index_name=index_name)
Expand Down Expand Up @@ -233,7 +237,7 @@ def test_vector_store_range_query(distance_strategy, distance_threshold):


def check_index_exists(
client: redis.Redis, index_name: str, index_config: VectorIndexConfig
client: redis.Redis, index_name: str, index_config: HNSWConfig
) -> bool:
try:
index_info = client.ft(index_name).info()
Expand All @@ -243,6 +247,18 @@ def check_index_exists(
return (
index_info["index_name"] == index_name
and index_info["index_definition"][1] == b"HASH"
and index_info["index_definition"][3][0].decode("utf-8") == index_config.name
and index_info["attributes"][0][1].decode("utf-8") == index_config.field_name
and index_info["attributes"][0][3].decode("utf-8") == index_config.field_name
and index_info["attributes"][0][5] == b"VECTOR"
and index_info["attributes"][0][7][3] == index_config.vector_size
and index_info["attributes"][0][7][5].decode("utf-8")
== index_config.distance_metric
and index_info["attributes"][0][7][7].decode("utf-8") == index_config.data_type
and index_info["attributes"][0][7][9][1] == b"HNSW"
and index_info["attributes"][0][7][9][3] == index_config.m
and index_info["attributes"][0][7][9][5] == index_config.ef_construction
and index_info["attributes"][0][7][9][7] == index_config.ef_runtime
)


Expand Down