You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Redis向量搜索场景下如何存储整数列表?

在Redis搜索中存储整数列表的解决方案

问题背景

我正在测试Redis向量搜索方案,已安装Redis服务器,创建索引结构时需要在rubrics字段存储类似[1, 22, 33]的整数列表,但当前Redis版本仅支持Number Fields、Geo Fields、Vector Fields、Tag Fields、Text Fields这几种数据类型,不清楚该如何处理。

我的索引结构代码如下:

id = NumericField(name="id")
user_id = NumericField(name="user_id")
title = TextField(name="title")
seo = NumericField(name="seo")
email = TextField(name="email")
tariff = NumericField(name="tariff")
cash = NumericField(name="cash")
title_embedding = VectorField("embeddings",
    "HNSW", {
        "TYPE": "FLOAT32",
        "DIM": VECTOR_DIM,
        "DISTANCE_METRIC": DISTANCE_METRIC,
        "INITIAL_CAP": VECTOR_NUMBER,
    }
)
rubrics = ???

可行解决方案

根据Redis搜索支持的字段类型,有两种适配的处理方式:

方案1:使用Tag Fields(推荐)

Tag Fields原生支持多值存储,完美匹配整数列表的场景。只需将整数转为字符串,用分隔符(默认是逗号)拼接后存储,Redis会自动解析为独立标签。

修改后的字段定义:

rubrics = TagField(name="rubrics", separator=",")

存储数据时,把整数列表转成逗号分隔的字符串,比如"1,22,33";查询单个整数时可直接精准匹配:

FT.SEARCH your_index_name "@rubrics:{22}"

方案2:使用TextField(备选)

若不想使用Tag Fields,也可以将整数列表转为空格分隔的字符串存入TextField,之后通过全文搜索匹配。但这种方式效率低于Tag Fields,且可能出现部分匹配的问题(比如搜索2会命中22)。

字段定义:

rubrics = TextField(name="rubrics")

存储时转成"1 22 33",查询语句示例:

FT.SEARCH your_index_name "@rubrics:22"

补充说明

Redis向量版(Redis Stack)和普通Redis的核心差异是前者预装了Redis Search、RedisJSON等模块,你当前使用的应该是带Search模块的版本,上述方案均基于Redis Search的字段类型设计,完全适配你的需求。

内容的提问来源于stack exchange,提问作者ruslaniv

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 17:52:39