Skip to content

constacts/milvus-clj

Repository files navigation

Clojars Project

milvus-clj

Clojure library for Milvus.

Clojure CLI/deps.edn

com.constacts/milvus-clj {:mvn/version "0.2.2"}

Usage

(require '[milvus-clj.core :as milvus])

Create Client

(def client (milvus/client {:host "localhost" :port 19530 :database "mydb"}))

Create Collection

(milvus/create-collection client {:collection-name "mycoll"
                                  :description "a collection for search"
                                  :field-types [{:primary-key? true
                                                 :auto-id? false
                                                 :data-type :int64
                                                 :name "uid"
                                                 :description "unique id"}
                                                {:data-type :float-vector
                                                 :name "embedding"
                                                 :description "embeddings"
                                                 :dimension 3}]})

Create Index

(milvus/create-index client {:collection-name "mycoll"
                             :field-name "embedding"
                             :index-type :flat
                             :index-name "embedding_index"
                             :metric-type :l2})

Load Collection

(milvus/load-collection client {:collection-name "mycoll"})

Insert

(milvus/insert client {:collection-name "mycoll"
                       :fields [{:name "uid" :values [1 2]}
                                {:name "embedding" :values [(map float [0.1 0.2 0.3])
                                                            (map float [0.4 0.5 0.6])]}]})

Delete

(milvus/delete client {:collection-name "mycoll"
                       :expr "uid == 1"})

Search

(milvus/search client {:collection-name "mycoll"
                       :metric-type :l2
                       :vectors [(map float [0.3 0.4 0.5])
                                 (map float [0.1 0.2 0.3])]
                       :vector-field-name "embedding"
                       :out-fields ["uid" "embedding"]
                       :top-k 2})

Query

(milvus/query client {:collection-name "mycoll"
                      :expr "uid == 2"
                      :out-fields ["uid" "embedding"]})

Drop Index

(milvus/drop-index client {:collection-name "mycoll"
                           :index-name "embedding_index"})

Drop Collection

(milvus/drop-collection client "mycoll")

Release Collection

(milvus/release-collection client {:collection-name "mycoll"})