client_base.py 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540
  1. from typing import Any, Iterable, Mapping, Optional, Sequence, Union
  2. from qdrant_client.conversions import common_types as types
  3. from qdrant_client.http import models
  4. class QdrantBase:
  5. def __init__(self, **kwargs: Any):
  6. pass
  7. def search_batch(
  8. self,
  9. collection_name: str,
  10. requests: Sequence[types.SearchRequest],
  11. **kwargs: Any,
  12. ) -> list[list[types.ScoredPoint]]:
  13. raise NotImplementedError()
  14. def search(
  15. self,
  16. collection_name: str,
  17. query_vector: Union[
  18. types.NumpyArray,
  19. Sequence[float],
  20. tuple[str, list[float]],
  21. types.NamedVector,
  22. types.NamedSparseVector,
  23. ],
  24. query_filter: Optional[models.Filter] = None,
  25. search_params: Optional[models.SearchParams] = None,
  26. limit: int = 10,
  27. offset: Optional[int] = None,
  28. with_payload: Union[bool, Sequence[str], models.PayloadSelector] = True,
  29. with_vectors: Union[bool, Sequence[str]] = False,
  30. score_threshold: Optional[float] = None,
  31. **kwargs: Any,
  32. ) -> list[types.ScoredPoint]:
  33. raise NotImplementedError()
  34. def search_groups(
  35. self,
  36. collection_name: str,
  37. query_vector: Union[
  38. types.NumpyArray,
  39. Sequence[float],
  40. tuple[str, list[float]],
  41. types.NamedVector,
  42. types.NamedSparseVector,
  43. ],
  44. group_by: str,
  45. query_filter: Optional[models.Filter] = None,
  46. search_params: Optional[models.SearchParams] = None,
  47. limit: int = 10,
  48. group_size: int = 1,
  49. with_payload: Union[bool, Sequence[str], models.PayloadSelector] = True,
  50. with_vectors: Union[bool, Sequence[str]] = False,
  51. score_threshold: Optional[float] = None,
  52. with_lookup: Optional[types.WithLookupInterface] = None,
  53. **kwargs: Any,
  54. ) -> types.GroupsResult:
  55. raise NotImplementedError()
  56. def search_matrix_offsets(
  57. self,
  58. collection_name: str,
  59. query_filter: Optional[types.Filter] = None,
  60. limit: int = 3,
  61. sample: int = 10,
  62. using: Optional[str] = None,
  63. **kwargs: Any,
  64. ) -> types.SearchMatrixOffsetsResponse:
  65. raise NotImplementedError()
  66. def search_matrix_pairs(
  67. self,
  68. collection_name: str,
  69. query_filter: Optional[types.Filter] = None,
  70. limit: int = 3,
  71. sample: int = 10,
  72. using: Optional[str] = None,
  73. **kwargs: Any,
  74. ) -> types.SearchMatrixPairsResponse:
  75. raise NotImplementedError()
  76. def query_batch_points(
  77. self,
  78. collection_name: str,
  79. requests: Sequence[types.QueryRequest],
  80. **kwargs: Any,
  81. ) -> list[types.QueryResponse]:
  82. raise NotImplementedError()
  83. def query_points(
  84. self,
  85. collection_name: str,
  86. query: Union[
  87. types.PointId,
  88. list[float],
  89. list[list[float]],
  90. types.SparseVector,
  91. types.Query,
  92. types.NumpyArray,
  93. types.Document,
  94. types.Image,
  95. types.InferenceObject,
  96. None,
  97. ] = None,
  98. using: Optional[str] = None,
  99. prefetch: Union[types.Prefetch, list[types.Prefetch], None] = None,
  100. query_filter: Optional[types.Filter] = None,
  101. search_params: Optional[types.SearchParams] = None,
  102. limit: int = 10,
  103. offset: Optional[int] = None,
  104. with_payload: Union[bool, Sequence[str], types.PayloadSelector] = True,
  105. with_vectors: Union[bool, Sequence[str]] = False,
  106. score_threshold: Optional[float] = None,
  107. lookup_from: Optional[types.LookupLocation] = None,
  108. **kwargs: Any,
  109. ) -> types.QueryResponse:
  110. raise NotImplementedError()
  111. def query_points_groups(
  112. self,
  113. collection_name: str,
  114. group_by: str,
  115. query: Union[
  116. types.PointId,
  117. list[float],
  118. list[list[float]],
  119. types.SparseVector,
  120. types.Query,
  121. types.NumpyArray,
  122. types.Document,
  123. types.Image,
  124. types.InferenceObject,
  125. None,
  126. ] = None,
  127. using: Optional[str] = None,
  128. prefetch: Union[types.Prefetch, list[types.Prefetch], None] = None,
  129. query_filter: Optional[types.Filter] = None,
  130. search_params: Optional[types.SearchParams] = None,
  131. limit: int = 10,
  132. group_size: int = 3,
  133. with_payload: Union[bool, Sequence[str], types.PayloadSelector] = True,
  134. with_vectors: Union[bool, Sequence[str]] = False,
  135. score_threshold: Optional[float] = None,
  136. with_lookup: Optional[types.WithLookupInterface] = None,
  137. lookup_from: Optional[types.LookupLocation] = None,
  138. **kwargs: Any,
  139. ) -> types.GroupsResult:
  140. raise NotImplementedError()
  141. def recommend_batch(
  142. self,
  143. collection_name: str,
  144. requests: Sequence[types.RecommendRequest],
  145. **kwargs: Any,
  146. ) -> list[list[types.ScoredPoint]]:
  147. raise NotImplementedError()
  148. def recommend(
  149. self,
  150. collection_name: str,
  151. positive: Optional[Sequence[types.RecommendExample]] = None,
  152. negative: Optional[Sequence[types.RecommendExample]] = None,
  153. query_filter: Optional[types.Filter] = None,
  154. search_params: Optional[types.SearchParams] = None,
  155. limit: int = 10,
  156. offset: int = 0,
  157. with_payload: Union[bool, list[str], types.PayloadSelector] = True,
  158. with_vectors: Union[bool, list[str]] = False,
  159. score_threshold: Optional[float] = None,
  160. using: Optional[str] = None,
  161. lookup_from: Optional[types.LookupLocation] = None,
  162. strategy: Optional[types.RecommendStrategy] = None,
  163. **kwargs: Any,
  164. ) -> list[types.ScoredPoint]:
  165. raise NotImplementedError()
  166. def recommend_groups(
  167. self,
  168. collection_name: str,
  169. group_by: str,
  170. positive: Optional[Sequence[types.RecommendExample]] = None,
  171. negative: Optional[Sequence[types.RecommendExample]] = None,
  172. query_filter: Optional[models.Filter] = None,
  173. search_params: Optional[models.SearchParams] = None,
  174. limit: int = 10,
  175. group_size: int = 1,
  176. score_threshold: Optional[float] = None,
  177. with_payload: Union[bool, Sequence[str], models.PayloadSelector] = True,
  178. with_vectors: Union[bool, Sequence[str]] = False,
  179. using: Optional[str] = None,
  180. lookup_from: Optional[models.LookupLocation] = None,
  181. with_lookup: Optional[types.WithLookupInterface] = None,
  182. strategy: Optional[types.RecommendStrategy] = None,
  183. **kwargs: Any,
  184. ) -> types.GroupsResult:
  185. raise NotImplementedError()
  186. def discover(
  187. self,
  188. collection_name: str,
  189. target: Optional[types.TargetVector] = None,
  190. context: Optional[Sequence[types.ContextExamplePair]] = None,
  191. query_filter: Optional[types.Filter] = None,
  192. search_params: Optional[types.SearchParams] = None,
  193. limit: int = 10,
  194. offset: int = 0,
  195. with_payload: Union[bool, list[str], types.PayloadSelector] = True,
  196. with_vectors: Union[bool, list[str]] = False,
  197. using: Optional[str] = None,
  198. lookup_from: Optional[types.LookupLocation] = None,
  199. consistency: Optional[types.ReadConsistency] = None,
  200. **kwargs: Any,
  201. ) -> list[types.ScoredPoint]:
  202. raise NotImplementedError()
  203. def discover_batch(
  204. self,
  205. collection_name: str,
  206. requests: Sequence[types.DiscoverRequest],
  207. **kwargs: Any,
  208. ) -> list[list[types.ScoredPoint]]:
  209. raise NotImplementedError()
  210. def scroll(
  211. self,
  212. collection_name: str,
  213. scroll_filter: Optional[types.Filter] = None,
  214. limit: int = 10,
  215. order_by: Optional[types.OrderBy] = None,
  216. offset: Optional[types.PointId] = None,
  217. with_payload: Union[bool, Sequence[str], types.PayloadSelector] = True,
  218. with_vectors: Union[bool, Sequence[str]] = False,
  219. **kwargs: Any,
  220. ) -> tuple[list[types.Record], Optional[types.PointId]]:
  221. raise NotImplementedError()
  222. def count(
  223. self,
  224. collection_name: str,
  225. count_filter: Optional[types.Filter] = None,
  226. exact: bool = True,
  227. **kwargs: Any,
  228. ) -> types.CountResult:
  229. raise NotImplementedError()
  230. def facet(
  231. self,
  232. collection_name: str,
  233. key: str,
  234. facet_filter: Optional[types.Filter] = None,
  235. limit: int = 10,
  236. exact: bool = False,
  237. **kwargs: Any,
  238. ) -> types.FacetResponse:
  239. raise NotImplementedError()
  240. def upsert(
  241. self,
  242. collection_name: str,
  243. points: types.Points,
  244. **kwargs: Any,
  245. ) -> types.UpdateResult:
  246. raise NotImplementedError()
  247. def update_vectors(
  248. self,
  249. collection_name: str,
  250. points: Sequence[types.PointVectors],
  251. **kwargs: Any,
  252. ) -> types.UpdateResult:
  253. raise NotImplementedError()
  254. def delete_vectors(
  255. self,
  256. collection_name: str,
  257. vectors: Sequence[str],
  258. points: types.PointsSelector,
  259. **kwargs: Any,
  260. ) -> types.UpdateResult:
  261. raise NotImplementedError()
  262. def retrieve(
  263. self,
  264. collection_name: str,
  265. ids: Sequence[types.PointId],
  266. with_payload: Union[bool, Sequence[str], types.PayloadSelector] = True,
  267. with_vectors: Union[bool, Sequence[str]] = False,
  268. **kwargs: Any,
  269. ) -> list[types.Record]:
  270. raise NotImplementedError()
  271. def delete(
  272. self,
  273. collection_name: str,
  274. points_selector: types.PointsSelector,
  275. **kwargs: Any,
  276. ) -> types.UpdateResult:
  277. raise NotImplementedError()
  278. def set_payload(
  279. self,
  280. collection_name: str,
  281. payload: types.Payload,
  282. points: types.PointsSelector,
  283. key: Optional[str] = None,
  284. **kwargs: Any,
  285. ) -> types.UpdateResult:
  286. raise NotImplementedError()
  287. def overwrite_payload(
  288. self,
  289. collection_name: str,
  290. payload: types.Payload,
  291. points: types.PointsSelector,
  292. **kwargs: Any,
  293. ) -> types.UpdateResult:
  294. raise NotImplementedError()
  295. def delete_payload(
  296. self,
  297. collection_name: str,
  298. keys: Sequence[str],
  299. points: types.PointsSelector,
  300. **kwargs: Any,
  301. ) -> types.UpdateResult:
  302. raise NotImplementedError()
  303. def clear_payload(
  304. self,
  305. collection_name: str,
  306. points_selector: types.PointsSelector,
  307. **kwargs: Any,
  308. ) -> types.UpdateResult:
  309. raise NotImplementedError()
  310. def batch_update_points(
  311. self,
  312. collection_name: str,
  313. update_operations: Sequence[types.UpdateOperation],
  314. **kwargs: Any,
  315. ) -> list[types.UpdateResult]:
  316. raise NotImplementedError()
  317. def update_collection_aliases(
  318. self,
  319. change_aliases_operations: Sequence[types.AliasOperations],
  320. **kwargs: Any,
  321. ) -> bool:
  322. raise NotImplementedError()
  323. def get_collection_aliases(
  324. self, collection_name: str, **kwargs: Any
  325. ) -> types.CollectionsAliasesResponse:
  326. raise NotImplementedError()
  327. def get_aliases(self, **kwargs: Any) -> types.CollectionsAliasesResponse:
  328. raise NotImplementedError()
  329. def get_collections(self, **kwargs: Any) -> types.CollectionsResponse:
  330. raise NotImplementedError()
  331. def get_collection(self, collection_name: str, **kwargs: Any) -> types.CollectionInfo:
  332. raise NotImplementedError()
  333. def collection_exists(self, collection_name: str, **kwargs: Any) -> bool:
  334. raise NotImplementedError()
  335. def update_collection(
  336. self,
  337. collection_name: str,
  338. **kwargs: Any,
  339. ) -> bool:
  340. raise NotImplementedError()
  341. def delete_collection(self, collection_name: str, **kwargs: Any) -> bool:
  342. raise NotImplementedError()
  343. def create_collection(
  344. self,
  345. collection_name: str,
  346. vectors_config: Union[types.VectorParams, Mapping[str, types.VectorParams]],
  347. **kwargs: Any,
  348. ) -> bool:
  349. raise NotImplementedError()
  350. def recreate_collection(
  351. self,
  352. collection_name: str,
  353. vectors_config: Union[types.VectorParams, Mapping[str, types.VectorParams]],
  354. **kwargs: Any,
  355. ) -> bool:
  356. raise NotImplementedError()
  357. def upload_records(
  358. self,
  359. collection_name: str,
  360. records: Iterable[types.Record],
  361. **kwargs: Any,
  362. ) -> None:
  363. raise NotImplementedError()
  364. def upload_points(
  365. self,
  366. collection_name: str,
  367. points: Iterable[types.PointStruct],
  368. **kwargs: Any,
  369. ) -> None:
  370. raise NotImplementedError()
  371. def upload_collection(
  372. self,
  373. collection_name: str,
  374. vectors: Union[
  375. dict[str, types.NumpyArray], types.NumpyArray, Iterable[types.VectorStruct]
  376. ],
  377. payload: Optional[Iterable[dict[Any, Any]]] = None,
  378. ids: Optional[Iterable[types.PointId]] = None,
  379. **kwargs: Any,
  380. ) -> None:
  381. raise NotImplementedError()
  382. def create_payload_index(
  383. self,
  384. collection_name: str,
  385. field_name: str,
  386. field_schema: Optional[types.PayloadSchemaType] = None,
  387. field_type: Optional[types.PayloadSchemaType] = None,
  388. **kwargs: Any,
  389. ) -> types.UpdateResult:
  390. raise NotImplementedError()
  391. def delete_payload_index(
  392. self,
  393. collection_name: str,
  394. field_name: str,
  395. **kwargs: Any,
  396. ) -> types.UpdateResult:
  397. raise NotImplementedError()
  398. def list_snapshots(
  399. self, collection_name: str, **kwargs: Any
  400. ) -> list[types.SnapshotDescription]:
  401. raise NotImplementedError()
  402. def create_snapshot(
  403. self, collection_name: str, **kwargs: Any
  404. ) -> Optional[types.SnapshotDescription]:
  405. raise NotImplementedError()
  406. def delete_snapshot(
  407. self, collection_name: str, snapshot_name: str, **kwargs: Any
  408. ) -> Optional[bool]:
  409. raise NotImplementedError()
  410. def list_full_snapshots(self, **kwargs: Any) -> list[types.SnapshotDescription]:
  411. raise NotImplementedError()
  412. def create_full_snapshot(self, **kwargs: Any) -> Optional[types.SnapshotDescription]:
  413. raise NotImplementedError()
  414. def delete_full_snapshot(self, snapshot_name: str, **kwargs: Any) -> Optional[bool]:
  415. raise NotImplementedError()
  416. def recover_snapshot(
  417. self,
  418. collection_name: str,
  419. location: str,
  420. **kwargs: Any,
  421. ) -> Optional[bool]:
  422. raise NotImplementedError()
  423. def list_shard_snapshots(
  424. self, collection_name: str, shard_id: int, **kwargs: Any
  425. ) -> list[types.SnapshotDescription]:
  426. raise NotImplementedError()
  427. def create_shard_snapshot(
  428. self, collection_name: str, shard_id: int, **kwargs: Any
  429. ) -> Optional[types.SnapshotDescription]:
  430. raise NotImplementedError()
  431. def delete_shard_snapshot(
  432. self, collection_name: str, shard_id: int, snapshot_name: str, **kwargs: Any
  433. ) -> Optional[bool]:
  434. raise NotImplementedError()
  435. def recover_shard_snapshot(
  436. self,
  437. collection_name: str,
  438. shard_id: int,
  439. location: str,
  440. **kwargs: Any,
  441. ) -> Optional[bool]:
  442. raise NotImplementedError()
  443. def lock_storage(self, reason: str, **kwargs: Any) -> types.LocksOption:
  444. raise NotImplementedError()
  445. def unlock_storage(self, **kwargs: Any) -> types.LocksOption:
  446. raise NotImplementedError()
  447. def get_locks(self, **kwargs: Any) -> types.LocksOption:
  448. raise NotImplementedError()
  449. def close(self, **kwargs: Any) -> None:
  450. pass
  451. def migrate(
  452. self,
  453. dest_client: "QdrantBase",
  454. collection_names: Optional[list[str]] = None,
  455. batch_size: int = 100,
  456. recreate_on_collision: bool = False,
  457. ) -> None:
  458. raise NotImplementedError()
  459. def create_shard_key(
  460. self,
  461. collection_name: str,
  462. shard_key: types.ShardKey,
  463. shards_number: Optional[int] = None,
  464. replication_factor: Optional[int] = None,
  465. placement: Optional[list[int]] = None,
  466. **kwargs: Any,
  467. ) -> bool:
  468. raise NotImplementedError()
  469. def delete_shard_key(
  470. self,
  471. collection_name: str,
  472. shard_key: types.ShardKey,
  473. **kwargs: Any,
  474. ) -> bool:
  475. raise NotImplementedError()
  476. def info(self) -> types.VersionInfo:
  477. raise NotImplementedError()