Я бы предложил использовать loop / recur, если вы хотите сделать это эффективно, возможно, что-то вроде следующего:
(defn min-index [v]
(let [length (count v)]
(loop [minimum (v 0)
min-index 0
i 1]
(if (< i length)
(let [value (v i)]
(if (< value minimum)
(recur value i (inc i))
(recur minimum min-index (inc i))))
min-index))))
Идея состоит в том, чтобы выполнить итерацию по всему вектору, отслеживая минимум и индекс минимального значения, найденного до сих пор в каждой точке.