This change lets users configure default embedding models at the provider level instead of always relying on system defaults. Each vector store provider can now specify an embedding_model and optional embedding_dimension in their config. Key features: - Auto-dimension lookup for standard models from the registry - Support for Matryoshka embeddings with custom dimensions - Three-tier priority: explicit params > provider config > system fallback - Full backward compatibility - existing setups work unchanged - Comprehensive test coverage with 20 test cases Updated all vector IO providers (FAISS, Chroma, Milvus, Qdrant, etc.) with the new config fields and added detailed documentation with examples. Fixes #2729
4.5 KiB
remote::milvus
Description
Milvus is an inline and remote vector database provider for Llama Stack. It allows you to store and query vectors directly within a Milvus database. That means you're not limited to storing vectors in memory or in a separate service.
Features
- Easy to use
- Fully integrated with Llama Stack
Usage
To use Milvus in your Llama Stack project, follow these steps:
- Install the necessary dependencies.
- Configure your Llama Stack project to use Milvus.
- Start storing and querying vectors.
Installation
You can install Milvus using pymilvus:
pip install pymilvus
Configuration
In Llama Stack, Milvus can be configured in two ways:
- Inline (Local) Configuration - Uses Milvus-Lite for local storage
- Remote Configuration - Connects to a remote Milvus server
Inline (Local) Configuration
The simplest method is local configuration, which requires setting db_path, a path for locally storing Milvus-Lite files:
vector_io:
- provider_id: milvus
provider_type: inline::milvus
config:
db_path: ~/.llama/distributions/together/milvus_store.db
Remote Configuration
Remote configuration is suitable for larger data storage requirements:
Standard Remote Connection
vector_io:
- provider_id: milvus
provider_type: remote::milvus
config:
uri: "http://<host>:<port>"
token: "<user>:<password>"
TLS-Enabled Remote Connection (One-way TLS)
For connections to Milvus instances with one-way TLS enabled:
vector_io:
- provider_id: milvus
provider_type: remote::milvus
config:
uri: "https://<host>:<port>"
token: "<user>:<password>"
secure: True
server_pem_path: "/path/to/server.pem"
Mutual TLS (mTLS) Remote Connection
For connections to Milvus instances with mutual TLS (mTLS) enabled:
vector_io:
- provider_id: milvus
provider_type: remote::milvus
config:
uri: "https://<host>:<port>"
token: "<user>:<password>"
secure: True
ca_pem_path: "/path/to/ca.pem"
client_pem_path: "/path/to/client.pem"
client_key_path: "/path/to/client.key"
Key Parameters for TLS Configuration
secure: Enables TLS encryption when set totrue. Defaults tofalse.server_pem_path: Path to the server certificate for verifying the server's identity (used in one-way TLS).ca_pem_path: Path to the Certificate Authority (CA) certificate for validating the server certificate (required in mTLS).client_pem_path: Path to the client certificate file (required for mTLS).client_key_path: Path to the client private key file (required for mTLS).
Documentation
See the Milvus documentation for more details about Milvus in general.
For more details on TLS configuration, refer to the TLS setup guide.
Configuration
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
uri |
<class 'str'> |
No | PydanticUndefined | The URI of the Milvus server |
token |
str | None |
No | PydanticUndefined | The token of the Milvus server |
consistency_level |
<class 'str'> |
No | Strong | The consistency level of the Milvus server |
kvstore |
utils.kvstore.config.RedisKVStoreConfig | utils.kvstore.config.SqliteKVStoreConfig | utils.kvstore.config.PostgresKVStoreConfig | utils.kvstore.config.MongoDBKVStoreConfig, annotation=NoneType, required=False, default='sqlite', discriminator='type' |
No | Config for KV store backend (SQLite only for now) | |
embedding_model |
str | None |
No | Optional default embedding model for this provider. If not specified, will use system default. | |
embedding_dimension |
int | None |
No | Optional embedding dimension override. Only needed for models with variable dimensions (e.g., Matryoshka embeddings). If not specified, will auto-lookup from model registry. | |
config |
dict |
No | {} | This configuration allows additional fields to be passed through to the underlying Milvus client. See the Milvus documentation for more details about Milvus in general. |
Note
: This configuration class accepts additional fields beyond those listed above. You can pass any additional configuration options that will be forwarded to the underlying provider.
Sample Configuration
uri: ${env.MILVUS_ENDPOINT}
token: ${env.MILVUS_TOKEN}