Qdrant
全文検索エンジンも搭載しているっぽい
クラウド版が太っ腹でAWSのインスタンスを1つ使える、メモリ1GB
QdrantのAPIを利用する
- あるタイトルのページのIDを取得する
- これは簡単にできた
> code
POST collections/inline/points/scroll
{
"limit": 10,
"filter": {
"must": [
{
"key": "title",
"match": {
"any": [
"RakuChord"
]
}
}
]
}
}
<<
- でもvectorがNULLになってるな
- デフォルトではこういうことらしいwithVector=Trueなどとすると付いてくる
- 複数に分割されたページはどれが1ページめか不明
- 複数IDをもとに推薦できるのでそこまで問題ではない
- あるIDに似たPointを探す
- POST /collections/{collection_name}/points/recommend を使うとできそう
- positiveに元となるページのベクトルを配列で渡す
- withPayload=Trueにするとページタイトルもすぐとれる
- Python client
- retrieveでidに対応するpointが取れる(がpayloadを見ればよかった)
できたっぽい
Pythonからの利用
> code python
from qdrant_client import QdrantClient
from qdrant_client.http.models import Distance, VectorParams
from qdrant_client.http.models import Filter, FieldCondition, MatchValue
client = QdrantClient(HOST, port=6333, api_key=KEY)
results, offset = client.scroll(
collection_name="inline",
limit=40,
for r in results:
print()
points = client.retrieve(
collection_name="inline",
with_vectors = True
)
results = client.search(
collection_name="inline",
query_vector=points0.vector, limit=40
)
print()
for r in results:
<<
容量
inlineとina_aniを入れてこんな感じ
pickleの容量ベースで
- inline 103MB
- ina_ani 679MB
https://inline.inajob.tk/img/twitter-5643382/Qdrant/90cc5fb4-4713-11ee-8669-c20e5d086943#.png
- nishioが781MB
- 多分入らないな・・
- 一旦ina_aniを消す
- 即座にはメモリは解放されない様子
- restartしてみる
- うーん使用量が変わらない・・
- 気にせずnishioをuploadしよう
- 15-20分くらい
https://inline.inajob.tk/img/twitter-5643382/Qdrant/0a492577-4716-11ee-8669-c20e5d086943#.png
- あまりメモリは関係ないのかも
- とにかくインポートできた