dodil k3 vector collection
Manage vector collections. Five subcommands — add (pipeline-mode), add-manual (external-mode), get, list, delete. Mirrors Collections — API Reference.
Persistent flag on the whole group: --bucket / -b (required).
| Subcommand | API |
|---|---|
dodil k3 vector collection add | AddVectorPipeline |
dodil k3 vector collection add-manual | AddVectorCollection |
dodil k3 vector collection get | GetCollection |
dodil k3 vector collection list | ListCollections |
dodil k3 vector collection delete | DeleteCollection |
dodil k3 vector collection add — pipeline-mode
dodil k3 vector collection add [name] -b BUCKET -t TEMPLATE_ID [-d DESC]Creates a template-driven collection. K3 spawns the index + search Scriptum scripts; the Milvus collection materializes lazily on first ingest. Schema (dimensions, metric, sparse mode, embedding type, embed_model) is owned by the template’s ScriptContract — caller cannot override.
| Flag | Short | Type | Description |
|---|---|---|---|
--template | -t | string | Required. Scriptum template ID (e.g. text_embedding_index) |
--description | -d | string | Human-readable description |
# Text / PDF / docx → embeddings (canonical RAG)
dodil k3 vector collection add docs -b kb-prod \
--description "RAG corpus" \
--template text_embedding_index
# Code → embeddings (AST-aware chunking)
dodil k3 vector collection add code -b kb-prod \
--description "Source-code search" \
--template code_embedding_index
# Multimodal (images / video / audio / PDF page renders)
dodil k3 vector collection add assets -b kb-prod \
--description "Mixed-media library" \
--template visual_embedding_indexWhat K3 creates atomically:
- The collection row (Milvus collection materializes lazily on first ingest)
- A Scriptum pipeline bound to the index template
- An auto-generated ingest rule with globs from the template’s
acceptedExtensions
template_inputsare not on the CLI today. Some templates (e.g.object_embedding_index) require runtime inputs likelabels. For those, use the API directly with thetemplateInputsfield.
Browse available templates with dodil k3 vector templates — see templates.mdx.
dodil k3 vector collection add-manual — external-mode
dodil k3 vector collection add-manual [name] -b BUCKET \
--dimensions N [--metric M] [--embed-model MODEL] [-d DESC]Creates an external-mode collection — caller declares the schema, K3 creates the Milvus collection eagerly. No Scriptum binding; you push vectors via InsertVectors / UpsertVectors. The collection is recorded with embedding_source = EXTERNAL.
| Flag | Type | Default | Description |
|---|---|---|---|
--description / -d | string | — | Human-readable description |
--dimensions | int32 | 1536 | Vector dimensions (must match what you’ll embed with) |
--metric | string | cosine | cosine · euclidean · dot_product · hamming · jaccard |
--embed-model | string | — | Embed model name (e.g. jina-embeddings-v4, openai/text-embedding-3-large). Set this so K3 can route future text queries through the matching embedding service. Leave empty if you’ll pre-embed every query yourself. |
# OpenAI ada-002 shaped (1536 dims, cosine)
dodil k3 vector collection add-manual ada -b kb-prod \
--dimensions 1536 \
--metric cosine \
--embed-model openai/text-embedding-ada-002
# Jina shaped (1024 dims)
dodil k3 vector collection add-manual jina-docs -b kb-prod \
--dimensions 1024 \
--embed-model jina-embeddings-v4CLI gaps for
add-manual:
--embedding-typenot exposed → CLI always createsEMBEDDING_TYPE_FLOATcollections. For binary / float16 / bfloat16 / int8 embeddings, use the API.--sparse-modenot exposed → CLI always createsSPARSE_MODE_NONE(dense-only). For BM25 or EXTERNAL sparse, use the API.
For the full breadth of add-manual (all five dense types + three sparse modes), see API Reference → Collections → AddVectorCollection.
dodil k3 vector collection get
dodil k3 vector collection get [collection_id_or_name] -b BUCKETReturns the full collection row — status, schema, embedding source, pipeline binding (pipeline-mode), template inputs (pipeline-mode).
dodil k3 vector collection get docs -b kb-prod -o json \
| jq '{
name, status, dimensions, distanceMetric, embeddingType,
sparseMode, embedModel, modality, embeddingSource,
embedPipelineId, templateId
}'Useful for confirming the schema before doing direct vector writes (embedding_type and dimensions must match VectorRecord.dense.*).
dodil k3 vector collection list
dodil k3 vector collection list -b BUCKETLists every collection in the bucket.
dodil k3 vector collection list -b kb-prod -o json \
| jq '.collections[] | {name, status, embeddingSource, dimensions, embedModel}'dodil k3 vector collection delete
dodil k3 vector collection delete [collection_id] -b BUCKETRemoves the K3 collection row + the underlying Milvus collection. Does not cascade to pipeline-mode collections’ bound Scriptum pipeline or auto-generated ingest rule — clean those up via Pipelines → DeleteRule + DeletePipeline.
dodil k3 vector collection delete col_a1b2... -b kb-prodFor pipeline-mode collections, the standard cleanup is:
# 1. Capture the bound pipeline + auto-rule before deleting
COLLECTION_ID="col_a1b2..."
PIPELINE_ID=$(dodil k3 vector collection get "$COLLECTION_ID" -b kb-prod -o json | jq -r '.embedPipelineId')
RULE_ID=$(dodil k3 ingest list -b kb-prod -p "$PIPELINE_ID" -o json | jq -r '.rules[0].ruleId')
# 2. Delete the rule, then the pipeline, then the collection (or any order)
dodil k3 ingest delete "$RULE_ID" -b kb-prod
dodil k3 pipeline delete "$PIPELINE_ID" -b kb-prod
dodil k3 vector collection delete "$COLLECTION_ID" -b kb-prodCommon gotchas
| Symptom | Cause | Fix |
|---|---|---|
add returns INVALID_ARGUMENT: template requires field 'labels' | Picked a template with required template_inputs not on the CLI | Use the API with templateInputs |
add rejects with “engine not active” | Engine still PROVISIONING | Wait — dodil k3 vector store get -b BUCKET -o json | jq .status |
add-manual creates a FLOAT collection even though you wanted BINARY | CLI doesn’t expose --embedding-type | Use the API |
Need BM25 hybrid → can’t get it via add-manual | --sparse-mode not on the CLI | Use the API |
delete succeeds but ingest jobs for the collection keep landing as FAILED | The bound pipeline + ingest rule weren’t cleaned up — they reference a missing destination | Use the cleanup sequence above OR list and delete via the Pipelines API |
See also
- Collections — API Reference — full surface incl.
template_inputs, all dense types, all sparse modes dodil k3 vector templates— discover templates foradddodil k3 search— query collections you created here- Core Concepts → Collection — both creation modes side-by-side
- Recipes → Pipeline Collection + External Collection — end-to-end worked examples