Vector 是面向 Milvus 集合的向量操作技能,归属于 Zilliz 插件,主要用于在集合中执行向量的检索、查询、插入、upsert、获取和删除。所有 vector 命令都支持可选的 --database <db-name> 参数;若省略,则使用当前上下文中的数据库。
前置条件:需要先安装 CLI、完成登录并设置集群上下文(参见 setup 技能);目标集合必须已存在且已加载(参见 collection 技能)。
插入向量:zilliz vector insert --collection <collection-name> --data '[{"id": 1, "vector": [0.1, 0.2, ...], "text": "hello"}]',可选 --database,也可使用原始 JSON:--body '{...}'。
更新插入向量:zilliz vector upsert --collection <collection-name> --data '[{"id": 1, "vector": [0.1, 0.2, ...], "text": "hello"}]',可选 --partition、--database,也可使用 --body。
向量搜索:zilliz vector search --collection <collection-name> --data '[[0.1, 0.2, 0.3, ...]]',可选参数包括 --anns-field(用于指定搜索的向量字段)、--limit(返回的最大结果数)、--filter(标量过滤表达式)、--output-fields(输出字段列表)以及 --database。
混合搜索:zilliz vector hybrid-search --collection <collection-name> --search '[{"data": [[0.1, ...]], "annsField": "dense_vector", "limit": 10}, {"data": [["search text"]], "annsField": "sparse_vector", "limit": 10}]' --rerank '{"strategy": "rrf", "params": {"k": 60}}',可选 --limit、--output-fields、--database,也可使用 --body 传入原始 JSON。
按过滤条件查询:zilliz vector query --collection <collection-name> --filter <scalar-filter-expression>,可选 --limit、--output-fields、--database。
按 ID 获取:zilliz vector get --collection <collection-name> --id '[1, 2, 3]',可选 --output-fields、--database。
删除向量:zilliz vector delete --collection <collection-name> --filter <filter>,可选 --partition、--database。
过滤表达式语法常见模式包括:比较(age > 20)、相等(status == "active")、IN 列表(id in [1, 2, 3])、AND/OR(age > 20 and status == "active")、字符串匹配(text like "hello%")、数组包含(tags array_contains "ml")。
使用指引:--data 参数接受 JSON 数组形式的向量,每个向量是浮点数数组;搜索前建议先用 zilliz collection describe 检查集合 schema,了解字段名和向量维度;集合必须先加载才能执行搜索或查询;搜索时 --data 的值必须与集合的向量维度完全一致;集合有多个向量字段时,用 --anns-field 指定要搜索的向量字段;若用户给出文本查询并希望语义搜索,需要说明必须先使用嵌入模型将文本转换为向量,再传给 --data;大批量插入时,建议先将数据写入 JSON 文件,再使用 zilliz vector insert --collection <name> --data "$(cat data.json)";当用户需要结果中的特定字段时,应展示 --output-fields;复杂的混合搜索配置可使用 --body。