CLOVER🍀

That was when it all began.

Qdrant Clientのmodelsはqdrant_client.modelsパッケージとqdrant_client.http.modelsパッケージのどちらを使えばいい?

これは、なにをしたくて書いたもの?

Qdrant Clientを使っていて、時々パッケージ名に戸惑うことがあります。

modelsパッケージのインポートが、ドキュメントによって

from qdrant_client.models import Distance,VectorParams

だったり

from qdrant_client.http.models import Distance, VectorParams

だったりするからです。

なんとなくどちらでもよさそうだったのですが、気になるのでちょっと確認してみました。

qdrant_client.modelsパッケージでいいのでは?

結果からすると、qdrant_client.modelsパッケージを使う方で良さそうです。

少なくとも、実体としては同じものを指しています。

バージョン1.8.0のqdrant_client/models/__init__.pyの定義は以下のようになっています。

from qdrant_client.http.models import *
from qdrant_client.fastembed_common import *

https://github.com/qdrant/qdrant-client/blob/v1.8.0/qdrant_client/models/__init__.py

qdrant_client.modelsパッケージには、他のファイルはありません。

そして実体はqdrant_client.http.modelsパッケージにあります。

https://github.com/qdrant/qdrant-client/tree/v1.8.0/qdrant_client/http/models

つまり、qdrant_client.modelsパッケージはqdrant_client.http.modelsパッケージとqdrant_client.fastembed_commonパッケージを
まとめて公開したものです。

過去の履歴を見ると、最初にあったのはqdrant_client.http.modelsパッケージです。これがv0.10.0の時にqdrant_client/models/__init__.pyで
まとめられるようにしてリリースされたようです。

その後、Qdrant Clientのドキュメント内でもqdrant_client.http.modelsパッケージの記述がqdrant_client.modelsパッケージに
変わっていきます。
Qdrant自体のドキュメントではqdrant_client.modelsパッケージを使っていたりqdrant_client.http.modelsパッケージを使っていたりと
揺れているのですが、こちらは修正されていない(かつ動くので問題はない)という状態だと見るのがよさそうかなと。

というわけで、Qdrant Clientとしてはqdrant_client.modelsパッケージとして使った方が良さそうなので、今後はこちらで合わせて
いこうと思います。

そして、qdrant_client.http.modelsパッケージとして使ったところで、結局同じものを見ているので完全な間違いでもないことも
わかったので安心ですね。