これは、なにをしたくて書いたもの?
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パッケージとして使ったところで、結局同じものを見ているので完全な間違いでもないことも
わかったので安心ですね。