Vector database. Go + C++ (internal/core/) + Rust (tantivy).
pkg has its own go.mod (module: github.com/milvus-io/milvus/pkg/v2). Run go get from pkg/ when adding dependencies there, not from root.
Coordinators manage metadata and scheduling; nodes execute work.
- Coordinators: rootcoord, datacoord, querycoordv2 (note the v2 suffix in directory names)
- Nodes: proxy (user-facing), querynodev2, datanode, streamingnode
- All component interfaces defined in
internal/types/types.go
Go tests MUST use -tags dynamic,test and -gcflags="all=-N -l" (disable optimizations/inlining) or they won't compile / mockey-based monkey patching will fail:
go test -tags dynamic,test -gcflags="all=-N -l" -count=1 ./internal/querycoordv2/...
go test -tags dynamic,test -gcflags="all=-N -l" -count=1 ./internal/proxy/... -run TestXxxPer-module shortcuts: make test-querycoord, make test-proxy, etc.
scripts/start_standalone.sh # start standalone mode
scripts/start_cluster.sh # start cluster mode
scripts/stop_graceful.sh # stop
scripts/standalone_embed.sh # embedded standalone (no external deps)- Error handling: use
merrpackage, not fmt.Errorf - Logging: use
pkg/v2/log, not standard"log"or fmt.Println - Import order: standard → third-party → github.com/milvus-io (enforced by gci)
- Config params: paramtable (
pkg/v2/util/paramtable), config inconfigs/milvus.yaml
PR title format: {type}: {description}. Valid types: feat:, fix:, enhance:, test:, doc:, auto:, build(deps):.
PR body must be non-empty. Issue/doc linking rules:
fix:— must link issue (e.g.issue: #123)feat:— must link issue + design doc from milvus-io/milvus-design-docsenhance:— must link issue if size L/XL/XXLdoc:,test:— no issue required- 2.x branch PRs must link the corresponding master PR (e.g.
pr: #123)
DCO check is required. Always use -s so the developer's Signed-off-by is appended last:
git commit -s -m "commit message
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>"
-s auto-appends Signed-off-by: <developer> at the end. The developer MUST be the final sign-off, not the AI.
- Mock files (
internal/mocks/*,mock_*.go): regenerate withmake generate-mockery-{module} - Proto files (
pkg/proto/*.pb.go): regenerate withmake generated-proto-without-cpp