--- name: vector description: Use when the user wants to search, query, insert, upsert, get, or delete vectors in a Milvus collection. --- ## Prerequisites 1. CLI installed, logged in, and cluster context set (see setup skill). 2. Target collection must exist and be loaded (see collection skill). ## Commands Reference All vector commands accept an optional `--database ` flag to target a non-default database. If omitted, the database from the current context is used. ### Insert Vectors ```bash zilliz vector insert --collection --data '[{"id": 1, "vector": [0.1, 0.2, ...], "text": "hello"}]' # Optional: --database # Or use raw JSON: --body '{...}' ``` ### Upsert Vectors ```bash zilliz vector upsert --collection --data '[{"id": 1, "vector": [0.1, 0.2, ...], "text": "hello"}]' # Optional: --partition , --database # Or use raw JSON: --body '{...}' ``` ### Vector Search ```bash zilliz vector search --collection --data '[[0.1, 0.2, 0.3, ...]]' # Optional: # --anns-field # --limit # --filter # --output-fields '["field1", "field2"]' # --database ``` ### Hybrid Search ```bash zilliz vector hybrid-search \ --collection \ --search '[{"data": [[0.1, ...]], "annsField": "dense_vector", "limit": 10}, {"data": [["search text"]], "annsField": "sparse_vector", "limit": 10}]' \ --rerank '{"strategy": "rrf", "params": {"k": 60}}' # Optional: # --limit # --output-fields '["field1", "field2"]' # --database # Or use raw JSON: --body '{...}' ``` ### Query by Filter ```bash zilliz vector query --collection --filter # Optional: # --limit # --output-fields '["field1", "field2"]' # --database ``` ### Get by ID ```bash zilliz vector get --collection --id '[1, 2, 3]' # Optional: --output-fields '["field1", "field2"]', --database ``` ### Delete a Vector ```bash zilliz vector delete --collection --filter # Optional: --partition , --database ``` ## Filter Expression Syntax Common filter patterns: | Expression | Example | |---|---| | Comparison | `age > 20` | | Equality | `status == "active"` | | IN list | `id in [1, 2, 3]` | | AND/OR | `age > 20 and status == "active"` | | String match | `text like "hello%"` | | Array contains | `tags array_contains "ml"` | ## Guidance - The `--data` parameter accepts a JSON array of vectors. Each vector is an array of floats. - Before searching, inspect the collection schema with `zilliz collection describe` to understand field names and vector dimensions. - The collection must be loaded before search/query operations. - For search, the `--data` value must match the collection's vector dimension exactly. - Use `--anns-field` to specify which vector field to search on when the collection has multiple vector fields. - When the user provides a text query and wants semantic search, explain that they need to convert text to vectors first (using an embedding model) before passing to `--data`. - For large insert operations, suggest writing data to a JSON file first, then using `zilliz vector insert --collection --data "$(cat data.json)"`. - Always show `--output-fields` when the user wants specific fields in results. - Or use `--body` for complex hybrid search configurations.