Milvex.Config (milvex v0.10.2)

Copy Markdown

Configuration module for Milvus client connections.

Handles parsing and validation of connection parameters from keyword lists, maps, or URI strings. Supports various authentication methods including username/password and API tokens.

Summary

Functions

Returns the default SSL options for secure connections.

Returns the default configuration with all default values applied.

Merges RPC-relevant defaults from a config map with user-provided opts.

Parse and validate configuration from keyword list or map.

Parse configuration from URI string.

Returns the configuration schema.

Types

t()

@type t() :: %{
  :timeout => integer(),
  optional(:port) => integer(),
  optional(:user) => binary(),
  :ssl => boolean(),
  :host => binary(),
  optional(:token) => binary(),
  optional(:password) => binary(),
  ssl_options: any(),
  database: binary(),
  reconnect_base_delay: integer(),
  reconnect_max_delay: integer(),
  reconnect_multiplier: float(),
  reconnect_jitter: float(),
  retry_max_attempts: integer(),
  retry_base_delay: integer(),
  retry_max_delay: integer(),
  retry_timeout: integer(),
  adapter: any(),
  adapter_opts: any()
}

Functions

default_ssl_options()

@spec default_ssl_options() :: keyword()

Returns the default SSL options for secure connections.

defaults()

@spec defaults() :: t()

Returns the default configuration with all default values applied.

merge_rpc_opts(config, opts)

@spec merge_rpc_opts(
  t(),
  keyword()
) :: keyword()

Merges RPC-relevant defaults from a config map with user-provided opts.

Extracts retry and timeout keys from the connection config and uses them as defaults. User-provided opts take precedence.

parse(config)

@spec parse(keyword() | map()) :: {:ok, t()} | {:error, Milvex.Error.t()}

Parse and validate configuration from keyword list or map.

Returns {:ok, config} on success or {:error, error} on validation failure.

Examples

iex> Milvex.Config.parse(host: "localhost", port: 19530)
{:ok, %{host: "localhost", port: 19530, ...}}

iex> Milvex.Config.parse(port: -1)
{:error, %Milvex.Errors.Invalid{...}}

parse_uri(uri)

@spec parse_uri(String.t()) :: {:ok, t()} | {:error, Milvex.Error.t()}

Parse configuration from URI string.

Supports formats:

  • http://localhost:19530
  • https://user:pass@host:19530/database
  • milvus://host:19530?timeout=60000

Examples

iex> Milvex.Config.parse_uri("http://localhost:19530")
{:ok, %{host: "localhost", port: 19530, ssl: false, ...}}

iex> Milvex.Config.parse_uri("https://user:pass@milvus.example.com:443/mydb")
{:ok, %{host: "milvus.example.com", port: 443, ssl: true, user: "user", ...}}

schema()

Returns the configuration schema.

Configuration options for connecting to a Milvus server

Options

  • :timeout (integer/0) - Required. Timeout for gRPC calls in milliseconds The default value is 30000.

  • :port (integer/0) - Milvus server port (1-65535)

  • :user (String.t/0) - Username for authentication

  • :ssl (boolean/0) - Required. Enable SSL/TLS encryption The default value is nil.

  • :host (String.t/0) - Required. Milvus server hostname or IP address The default value is "localhost".

  • :token (String.t/0) - API token for authentication (alternative to user/password)

  • :password (String.t/0) - Password for authentication

  • :ssl_options (term/0) - Required. SSL options passed to the underlying transport The default value is [].

  • :database (String.t/0) - Required. Database name to connect to The default value is "default".

  • :reconnect_base_delay (integer/0) - Required. Base delay for reconnection attempts in milliseconds The default value is 1000.

  • :reconnect_max_delay (integer/0) - Required. Maximum delay for reconnection attempts in milliseconds The default value is 60000.

  • :reconnect_multiplier (float/0) - Required. Multiplier for exponential backoff The default value is 2.0.

  • :reconnect_jitter (float/0) - Required. Jitter factor (0.0 to 1.0) to randomize delay The default value is 0.1.

  • :retry_max_attempts (integer/0) - Required. Maximum number of retry attempts for transient gRPC errors (0 to disable) The default value is 5.

  • :retry_base_delay (integer/0) - Required. Initial backoff delay in milliseconds for RPC retries The default value is 100.

  • :retry_max_delay (integer/0) - Required. Maximum backoff delay in milliseconds for RPC retries The default value is 3000.

  • :retry_timeout (integer/0) - Required. Total time budget in milliseconds for all retry attempts The default value is 15000.

  • :adapter (term/0) - Required. GRPC client adapter module The default value is GRPC.Client.Adapters.Gun.

  • :adapter_opts (term/0) - Required. Adapter-specific options passed to GRPC.Stub.connect The default value is [].

Example

iex> Zoi.example(Milvex.Config.schema())
%{timeout: 30000, port: 19530, host: "localhost", database: "default"}