It’s not an operator, it’s syntax. It is used like ~, but for optional parameters only and assumes that the corresponding variable already has an option type.
Example:
let f1 ?(opt = 42) () = ignore (opt + 1)
let _ =
f1 ~opt:0 (); (* Pass an actual value *)
f1 ?opt:(Some 1) (); (* Pass an actual value through an option *)
f1 ?opt:(None) (); (* Explicitly set no value; default will be used if any *)
let opt = Some 3 in
f1 ?opt () (* Punning *)