FT.CREATE
会创建可搜索的索引。使用 Memorystore for Valkey 时,索引会在集群级别创建。在任意节点上创建索引会导致在集群中的所有节点上创建索引。
语法
FT.CREATE index ON HASH [PREFIX count prefix [prefix ...]] SCHEMA field_name [AS alias] VECTOR [HNSW|FLAT] attribute_count [attribute_name attribute_value] [field_name [AS alias] NUMERIC] [field_name [AS alias] TAG [SEPARATOR ...] [CASESENSITIVE]]
index
(必需):这是您为索引指定的名称。如果具有相同 已存在,则系统会返回错误。ON HASH
(可选):表示 HASH 数据类型。只有 HASH 数据类型 支持。PREFIX [count] [prefix]
(可选):用于指明要编入索引的哈希键。SCHEMA hash_field_name
(必需):SCHEMA 后面的 hash_field_name 用于标识字段名称 。[AS alias]
会将名称alias
指定为 字段名称属性。
字段类型
VECTOR
(必需):用于向量搜索的矢量字段:[HNSW|FLAT]
(必需):指定的算法。FLAT
(蛮力法)或 HNSW(分层可导航小世界)。attribute_count
(必需):名称和值的属性总数 传递。attribute_name attribute_value
:用于定义索引配置的键值对,但仅适用于两种可用算法之一。必需的 HNSW 算法属性:
DIM
(必需):矢量维度数量。可接受的值为1
-32768
。TYPE
(必需):矢量类型。仅支持FLOAT32
。DISTANCE_METRIC
(必需):必须是以下项之一:L2
、IP
或COSINE
。
可选的 HNSW 算法属性:
EF_RUNTIME
(可选):设置在查询操作期间要检查的向量数量。默认值为10
,最大值为4096
。您可以为运行的每个查询设置此参数值。值越高,查询时间越长,但查询召回率越高。M
(可选):图中各层中每个节点的允许传出边数上限。第 0 层的传出边缘数量上限为 2M。默认值为 16。最大值为 512。EF_CONSTRUCTION
(可选):设置在构建索引期间要检查的向量数量。默认值为200
,最大值为4096
。值越高,创建索引所需的时间就越长,但召回率越高。INITIAL_CAP
(可选):确定索引的起始矢量容量。默认值为1024
。 此参数用于确定索引内存分配。
必需的 FLAT 算法属性:
DIM
(必需):向量维度数。TYPE
(必需):矢量类型。仅支持FLOAT32
。DISTANCE_METRIC
(必需):必须是以下值之一 -L2
、IP
或COSINE
。
可选的 FLAT 算法属性:
INITIAL_CAP
(可选):确定索引的起始矢量容量。此参数用于确定索引内存分配。
NUMERIC
(可选)- 用于数字搜索的数字字段。TAG
(可选)- 用于基于 TAG 进行搜索的 TAG 字段。SEPARATOR
(可选):用于将代码字符串划分为单个代码的字符。默认选项为,
。指定的值必须是单数字符。例如,代码字符串“hello, world”将解读为“hello”和“world”并相应地编入索引允许的值为,.<>{}[]"':;!@#$%^&*()-+=~
CASESENSITIVE
(可选):表示标记字段是否区分大小写。默认情况下,标记不区分大小写。代码字符串“HeLLo”将以“hello”格式编入索引以及对“Hello”的查询和“HeLlo”两者的结果是一样的。
备注
在 FT.CREATE 命令中,VECTOR、NUMERIC 和 TAG 索引可以按任何顺序出现。
一个字段只能编入索引一次。在提供的示例中,字段
my_vector_field_key
不能在同一索引中重复。在单个 FT.CREATE 命令中,最多只能为 10 个字段编制索引。
默认情况下,代码不区分大小写。
默认情况下,TAG 以
,
分隔。不支持对代码和数字查询进行单独查询。这些字段只能与基于矢量的搜索搭配使用。
示例
HNSW 示例:
FT.CREATE my_index_name SCHEMA my_hash_field_key VECTOR HNSW 10 TYPE FLOAT32 DIM 20 DISTANCE_METRIC COSINE M 4 EF_CONSTRUCTION 100
FLAT 示例:
FT.CREATE my_index_name SCHEMA my_hash_field_key VECTOR Flat 8 TYPE FLOAT32 DIM 20 DISTANCE_METRIC COSINE INITIAL_CAP 15000
包含数字字段的 HNSW 示例:
FT.CREATE my_index_name SCHEMA my_vector_field_key VECTOR HNSW 10 TYPE FLOAT32 DIM 20 DISTANCE_METRIC COSINE M 4 EF_CONSTRUCTION 100 my_numeric_field_key NUMERIC
包含标记字段的 HNSW 示例:
FT.CREATE my_index_name SCHEMA my_vector_field_key VECTOR HNSW 10 TYPE FLOAT32 DIM 20 DISTANCE_METRIC COSINE M 4 EF_CONSTRUCTION 100 my_tag_field_key TAG SEPARATOR '@' CASESENSITIVE
包含标签和数字字段的 HNSW 示例:
FT.CREATE my_index_name SCHEMA my_vector_field_key VECTOR HNSW 10 TYPE FLOAT32 DIM 20 DISTANCE_METRIC COSINE M 4 EF_CONSTRUCTION 100 my_tag_field_key TAG SEPARATOR '@' CASESENSITIVE my_numeric_field_key NUMERIC
包含多个标记和数字字段的 HNSW 示例:
FT.CREATE my_index_name SCHEMA my_vector_field_key VECTOR HNSW 10 TYPE FLOAT32 DIM 20 DISTANCE_METRIC COSINE M 4 EF_CONSTRUCTION 100 my_tag_field_key_1 TAG SEPARATOR '@' CASESENSITIVE my_numeric_field_key_1 NUMERIC my_numeric_field_key_2 NUMERIC my_tag_field_key_2 TAG