Skip to content
Open
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
2 changes: 1 addition & 1 deletion python/pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -139,7 +139,7 @@ qdrant = [
redis = [
"redis[hiredis] >= 6,< 8",
"types-redis ~= 4.6.0.20240425",
"redisvl ~= 0.4"
"redisvl ~= 0.5"
]
Comment thread
moonbox3 marked this conversation as resolved.
realtime = [
"websockets >= 13, < 16",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -129,7 +129,7 @@ async def create_collection(self, collection_name: str) -> None:
if await self.does_collection_exist(collection_name):
logger.info(f'Collection "{collection_name}" already exists.')
else:
index_def = IndexDefinition(prefix=f"{collection_name}:", index_type=IndexType.HASH)
index_def = IndexDefinition(prefix=[f"{collection_name}:"], index_type=IndexType.HASH)
schema = (
TextField(name="key"),
TextField(name="metadata"),
Expand Down
15 changes: 10 additions & 5 deletions python/semantic_kernel/connectors/redis.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@
from redisvl.query.filter import FilterExpression, Num, Tag, Text
from redisvl.query.query import BaseQuery, VectorQuery
from redisvl.redis.utils import array_to_buffer, buffer_to_array, convert_bytes
from redisvl.schema import IndexSchema as _RedisVLIndexSchema
from redisvl.schema import StorageType

from semantic_kernel.connectors.ai.embedding_generator_base import EmbeddingGeneratorBase
Expand Down Expand Up @@ -278,7 +279,7 @@ async def ensure_collection_exists(self, **kwargs) -> None:
raise VectorStoreOperationException("Invalid index type supplied.")
fields = _definition_to_redis_fields(self.definition, self.collection_type)
index_definition = IndexDefinition(
prefix=f"{self.collection_name}:", index_type=INDEX_TYPE_MAP[self.collection_type]
prefix=[f"{self.collection_name}:"], index_type=INDEX_TYPE_MAP[self.collection_type]
)
await self.redis_database.ft(self.collection_name).create_index(fields, definition=index_definition, **kwargs)

Expand Down Expand Up @@ -321,7 +322,10 @@ async def _inner_search(
results = await self.redis_database.ft(self.collection_name).search( # type: ignore
query=query.query, query_params=query.params
)
processed = process_results(results, query, STORAGE_TYPE_MAP[self.collection_type])
schema = _RedisVLIndexSchema.from_dict({
"index": {"name": self.collection_name, "storage_type": STORAGE_TYPE_MAP[self.collection_type].value}
})
processed = process_results(results, query, schema)
Comment thread
moonbox3 marked this conversation as resolved.
return KernelSearchResults(
results=self._get_vector_search_results_from_results(desync_list(processed)),
total_count=results.total,
Expand Down Expand Up @@ -616,8 +620,9 @@ def _deserialize_store_models_to_dicts(
case FieldTypes.KEY:
rec[field.name] = self._unget_redis_key(rec[field.name])
case "vector":
dtype = DATATYPE_MAP_VECTOR[field.type_ or "default"]
rec[field.name] = buffer_to_array(rec[field.name], dtype)
if field.name in rec:
dtype = DATATYPE_MAP_VECTOR[field.type_ or "default"]
rec[field.name] = buffer_to_array(rec[field.name], dtype)
results.append(rec)
return results

Expand Down Expand Up @@ -706,7 +711,7 @@ def _add_key(self, key: TKey, record: dict[str, Any]) -> dict[str, Any]:

@override
async def _inner_delete(self, keys: Sequence[str], **kwargs: Any) -> None:
await asyncio.gather(*[self.redis_database.json().delete(key, **kwargs) for key in keys])
await asyncio.gather(*[self.redis_database.json().delete(self._get_redis_key(key), **kwargs) for key in keys])

@override
def _serialize_dicts_to_store_models(
Expand Down
Loading
Loading