qdrant-haystack 3.8.0__py3-none-any.whl → 3.8.1__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- haystack_integrations/document_stores/qdrant/document_store.py +271 -7
- {qdrant_haystack-3.8.0.dist-info → qdrant_haystack-3.8.1.dist-info}/METADATA +1 -1
- {qdrant_haystack-3.8.0.dist-info → qdrant_haystack-3.8.1.dist-info}/RECORD +5 -5
- {qdrant_haystack-3.8.0.dist-info → qdrant_haystack-3.8.1.dist-info}/WHEEL +0 -0
- {qdrant_haystack-3.8.0.dist-info → qdrant_haystack-3.8.1.dist-info}/licenses/LICENSE.txt +0 -0
|
@@ -49,6 +49,44 @@ def get_batches_from_generator(iterable, n):
|
|
|
49
49
|
|
|
50
50
|
|
|
51
51
|
class QdrantDocumentStore:
|
|
52
|
+
"""
|
|
53
|
+
QdrantDocumentStore is a Document Store for Qdrant.
|
|
54
|
+
It can be used with any Qdrant instance: in-memory, disk-persisted, Docker-based,
|
|
55
|
+
and Qdrant Cloud Cluster deployments.
|
|
56
|
+
|
|
57
|
+
Usage example by creating an in-memory instance:
|
|
58
|
+
|
|
59
|
+
```python
|
|
60
|
+
from haystack.dataclasses.document import Document
|
|
61
|
+
from haystack_integrations.document_stores.qdrant import QdrantDocumentStore
|
|
62
|
+
|
|
63
|
+
document_store = QdrantDocumentStore(
|
|
64
|
+
":memory:",
|
|
65
|
+
recreate_index=True
|
|
66
|
+
)
|
|
67
|
+
document_store.write_documents([
|
|
68
|
+
Document(content="This is first", embedding=[0.0]*5),
|
|
69
|
+
Document(content="This is second", embedding=[0.1, 0.2, 0.3, 0.4, 0.5])
|
|
70
|
+
])
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
Usage example with Qdrant Cloud:
|
|
74
|
+
|
|
75
|
+
```python
|
|
76
|
+
from haystack.dataclasses.document import Document
|
|
77
|
+
from haystack_integrations.document_stores.qdrant import QdrantDocumentStore
|
|
78
|
+
|
|
79
|
+
document_store = QdrantDocumentStore(
|
|
80
|
+
url="https://xxxxxx-xxxxx-xxxxx-xxxx-xxxxxxxxx.us-east.aws.cloud.qdrant.io:6333",
|
|
81
|
+
api_key="<your-api-key>",
|
|
82
|
+
)
|
|
83
|
+
document_store.write_documents([
|
|
84
|
+
Document(content="This is first", embedding=[0.0]*5),
|
|
85
|
+
Document(content="This is second", embedding=[0.1, 0.2, 0.3, 0.4, 0.5])
|
|
86
|
+
])
|
|
87
|
+
```
|
|
88
|
+
"""
|
|
89
|
+
|
|
52
90
|
SIMILARITY: ClassVar[Dict[str, str]] = {
|
|
53
91
|
"cosine": rest.Distance.COSINE,
|
|
54
92
|
"dot_product": rest.Distance.DOT,
|
|
@@ -96,6 +134,98 @@ class QdrantDocumentStore:
|
|
|
96
134
|
scroll_size: int = 10_000,
|
|
97
135
|
payload_fields_to_index: Optional[List[dict]] = None,
|
|
98
136
|
):
|
|
137
|
+
"""
|
|
138
|
+
:param location:
|
|
139
|
+
If `memory` - use in-memory Qdrant instance.
|
|
140
|
+
If `str` - use it as a URL parameter.
|
|
141
|
+
If `None` - use default values for host and port.
|
|
142
|
+
:param url:
|
|
143
|
+
Either host or str of `Optional[scheme], host, Optional[port], Optional[prefix]`.
|
|
144
|
+
:param port:
|
|
145
|
+
Port of the REST API interface.
|
|
146
|
+
:param grpc_port:
|
|
147
|
+
Port of the gRPC interface.
|
|
148
|
+
:param prefer_grpc:
|
|
149
|
+
If `True` - use gRPC interface whenever possible in custom methods.
|
|
150
|
+
:param https:
|
|
151
|
+
If `True` - use HTTPS(SSL) protocol.
|
|
152
|
+
:param api_key:
|
|
153
|
+
API key for authentication in Qdrant Cloud.
|
|
154
|
+
:param prefix:
|
|
155
|
+
If not `None` - add prefix to the REST URL path.
|
|
156
|
+
Example: service/v1 will result in http://localhost:6333/service/v1/{qdrant-endpoint}
|
|
157
|
+
for REST API.
|
|
158
|
+
:param timeout:
|
|
159
|
+
Timeout for REST and gRPC API requests.
|
|
160
|
+
:param host:
|
|
161
|
+
Host name of Qdrant service. If ùrl` and `host` are `None`, set to `localhost`.
|
|
162
|
+
:param path:
|
|
163
|
+
Persistence path for QdrantLocal.
|
|
164
|
+
:param force_disable_check_same_thread:
|
|
165
|
+
For QdrantLocal, force disable check_same_thread.
|
|
166
|
+
Only use this if you can guarantee that you can resolve the thread safety outside QdrantClient.
|
|
167
|
+
:param index:
|
|
168
|
+
Name of the index.
|
|
169
|
+
:param embedding_dim:
|
|
170
|
+
Dimension of the embeddings.
|
|
171
|
+
:param on_disk:
|
|
172
|
+
Whether to store the collection on disk.
|
|
173
|
+
:param content_field:
|
|
174
|
+
The field for the document content.
|
|
175
|
+
:param name_field:
|
|
176
|
+
The field for the document name.
|
|
177
|
+
:param embedding_field:
|
|
178
|
+
The field for the document embeddings.
|
|
179
|
+
:param use_sparse_embedding:
|
|
180
|
+
If set to `True`, enables support for sparse embeddings.
|
|
181
|
+
:param similarity:
|
|
182
|
+
The similarity metric to use.
|
|
183
|
+
:param return_embedding:
|
|
184
|
+
Whether to return embeddings in the search results.
|
|
185
|
+
:param progress_bar:
|
|
186
|
+
Whether to show a progress bar or not.
|
|
187
|
+
:param duplicate_documents:
|
|
188
|
+
The parameter is not used and will be removed in future release.
|
|
189
|
+
:param recreate_index:
|
|
190
|
+
Whether to recreate the index.
|
|
191
|
+
:param shard_number:
|
|
192
|
+
Number of shards in the collection.
|
|
193
|
+
:param replication_factor:
|
|
194
|
+
Replication factor for the collection.
|
|
195
|
+
Defines how many copies of each shard will be created. Effective only in distributed mode.
|
|
196
|
+
:param write_consistency_factor:
|
|
197
|
+
Write consistency factor for the collection. Minimum value is 1.
|
|
198
|
+
Defines how many replicas should apply to the operation for it to be considered successful.
|
|
199
|
+
Increasing this number makes the collection more resilient to inconsistencies
|
|
200
|
+
but will cause failures if not enough replicas are available.
|
|
201
|
+
Effective only in distributed mode.
|
|
202
|
+
:param on_disk_payload:
|
|
203
|
+
If `True`, the point's payload will not be stored in memory and
|
|
204
|
+
will be read from the disk every time it is requested.
|
|
205
|
+
This setting saves RAM by slightly increasing response time.
|
|
206
|
+
Note: indexed payload values remain in RAM.
|
|
207
|
+
:param hnsw_config:
|
|
208
|
+
Params for HNSW index.
|
|
209
|
+
:param optimizers_config:
|
|
210
|
+
Params for optimizer.
|
|
211
|
+
:param wal_config:
|
|
212
|
+
Params for Write-Ahead-Log.
|
|
213
|
+
:param quantization_config:
|
|
214
|
+
Params for quantization. If `None`, quantization will be disabled.
|
|
215
|
+
:param init_from:
|
|
216
|
+
Use data stored in another collection to initialize this collection.
|
|
217
|
+
:param wait_result_from_api:
|
|
218
|
+
Whether to wait for the result from the API after each request.
|
|
219
|
+
:param metadata:
|
|
220
|
+
Additional metadata to include with the documents.
|
|
221
|
+
:param write_batch_size:
|
|
222
|
+
The batch size for writing documents.
|
|
223
|
+
:param scroll_size:
|
|
224
|
+
The scroll size for reading documents.
|
|
225
|
+
:param payload_fields_to_index:
|
|
226
|
+
List of payload fields to index.
|
|
227
|
+
"""
|
|
228
|
+
|
|
99
229
|
self._client = None
|
|
100
230
|
|
|
101
231
|
# Store the Qdrant client specific attributes
|
|
@@ -172,6 +302,9 @@ class QdrantDocumentStore:
|
|
|
172
302
|
return self._client
|
|
173
303
|
|
|
174
304
|
def count_documents(self) -> int:
|
|
305
|
+
"""
|
|
306
|
+
Returns the number of documents present in the Document Store.
|
|
307
|
+
"""
|
|
175
308
|
try:
|
|
176
309
|
response = self.client.count(
|
|
177
310
|
collection_name=self.index,
|
|
@@ -187,6 +320,15 @@ class QdrantDocumentStore:
|
|
|
187
320
|
self,
|
|
188
321
|
filters: Optional[Union[Dict[str, Any], rest.Filter]] = None,
|
|
189
322
|
) -> List[Document]:
|
|
323
|
+
"""
|
|
324
|
+
Returns the documents that match the provided filters.
|
|
325
|
+
|
|
326
|
+
For a detailed specification of the filters, refer to the
|
|
327
|
+
[documentation](https://docs.haystack.deepset.ai/docs/metadata-filtering)
|
|
328
|
+
|
|
329
|
+
:param filters: The filters to apply to the document list.
|
|
330
|
+
:returns: A list of documents that match the given filters.
|
|
331
|
+
"""
|
|
190
332
|
if filters and not isinstance(filters, dict) and not isinstance(filters, rest.Filter):
|
|
191
333
|
msg = "Filter must be a dictionary or an instance of `qdrant_client.http.models.Filter`"
|
|
192
334
|
raise ValueError(msg)
|
|
@@ -204,6 +346,19 @@ class QdrantDocumentStore:
|
|
|
204
346
|
documents: List[Document],
|
|
205
347
|
policy: DuplicatePolicy = DuplicatePolicy.FAIL,
|
|
206
348
|
):
|
|
349
|
+
"""
|
|
350
|
+
Writes documents to Qdrant using the specified policy.
|
|
351
|
+
The QdrantDocumentStore can handle duplicate documents based on the given policy.
|
|
352
|
+
The available policies are:
|
|
353
|
+
- `FAIL`: The operation will raise an error if any document already exists.
|
|
354
|
+
- `OVERWRITE`: Existing documents will be overwritten with the new ones.
|
|
355
|
+
- `SKIP`: Existing documents will be skipped, and only new documents will be added.
|
|
356
|
+
|
|
357
|
+
:param documents: A list of Document objects to write to Qdrant.
|
|
358
|
+
:param policy: The policy for handling duplicate documents.
|
|
359
|
+
|
|
360
|
+
:returns: The number of documents written to the document store.
|
|
361
|
+
"""
|
|
207
362
|
for doc in documents:
|
|
208
363
|
if not isinstance(doc, Document):
|
|
209
364
|
msg = f"DocumentStore.write_documents() expects a list of Documents but got an element of {type(doc)}."
|
|
@@ -239,6 +394,11 @@ class QdrantDocumentStore:
|
|
|
239
394
|
return len(document_objects)
|
|
240
395
|
|
|
241
396
|
def delete_documents(self, ids: List[str]):
|
|
397
|
+
"""
|
|
398
|
+
Deletes documents that match the provided `document_ids` from the document store.
|
|
399
|
+
|
|
400
|
+
:param document_ids: the document ids to delete
|
|
401
|
+
"""
|
|
242
402
|
ids = [convert_id(_id) for _id in ids]
|
|
243
403
|
try:
|
|
244
404
|
self.client.delete(
|
|
@@ -253,10 +413,24 @@ class QdrantDocumentStore:
|
|
|
253
413
|
|
|
254
414
|
@classmethod
|
|
255
415
|
def from_dict(cls, data: Dict[str, Any]) -> "QdrantDocumentStore":
|
|
416
|
+
"""
|
|
417
|
+
Deserializes the component from a dictionary.
|
|
418
|
+
|
|
419
|
+
:param data:
|
|
420
|
+
The dictionary to deserialize from.
|
|
421
|
+
:returns:
|
|
422
|
+
The deserialized component.
|
|
423
|
+
"""
|
|
256
424
|
deserialize_secrets_inplace(data["init_parameters"], keys=["api_key"])
|
|
257
425
|
return default_from_dict(cls, data)
|
|
258
426
|
|
|
259
427
|
def to_dict(self) -> Dict[str, Any]:
|
|
428
|
+
"""
|
|
429
|
+
Serializes the component to a dictionary.
|
|
430
|
+
|
|
431
|
+
:returns:
|
|
432
|
+
Dictionary with serialized data.
|
|
433
|
+
"""
|
|
260
434
|
params = inspect.signature(self.__init__).parameters # type: ignore
|
|
261
435
|
# All the __init__ params must be set as attributes
|
|
262
436
|
# Set as init_parms without default values
|
|
@@ -271,6 +445,13 @@ class QdrantDocumentStore:
|
|
|
271
445
|
self,
|
|
272
446
|
filters: Optional[Union[Dict[str, Any], rest.Filter]] = None,
|
|
273
447
|
) -> Generator[Document, None, None]:
|
|
448
|
+
"""
|
|
449
|
+
Returns a generator that yields documents from Qdrant based on the provided filters.
|
|
450
|
+
|
|
451
|
+
:param filters: Filters applied to the retrieved documents.
|
|
452
|
+
:returns: A generator that yields documents retrieved from Qdrant.
|
|
453
|
+
"""
|
|
454
|
+
|
|
274
455
|
index = self.index
|
|
275
456
|
qdrant_filters = convert_filters_to_qdrant(filters)
|
|
276
457
|
|
|
@@ -299,6 +480,16 @@ class QdrantDocumentStore:
|
|
|
299
480
|
ids: List[str],
|
|
300
481
|
index: Optional[str] = None,
|
|
301
482
|
) -> List[Document]:
|
|
483
|
+
"""
|
|
484
|
+
Retrieves documents from Qdrant by their IDs.
|
|
485
|
+
|
|
486
|
+
:param ids:
|
|
487
|
+
A list of document IDs to retrieve.
|
|
488
|
+
:param index:
|
|
489
|
+
The name of the index to retrieve documents from.
|
|
490
|
+
:returns:
|
|
491
|
+
A list of documents.
|
|
492
|
+
"""
|
|
302
493
|
index = index or self.index
|
|
303
494
|
|
|
304
495
|
documents: List[Document] = []
|
|
@@ -325,6 +516,21 @@ class QdrantDocumentStore:
|
|
|
325
516
|
scale_score: bool = True,
|
|
326
517
|
return_embedding: bool = False,
|
|
327
518
|
) -> List[Document]:
|
|
519
|
+
"""
|
|
520
|
+
Queries Qdrant using a sparse embedding and returns the most relevant documents.
|
|
521
|
+
|
|
522
|
+
:param query_sparse_embedding: Sparse embedding of the query.
|
|
523
|
+
:param filters: Filters applied to the retrieved documents.
|
|
524
|
+
:param top_k: Maximum number of documents to return.
|
|
525
|
+
:param scale_score: Whether to scale the scores of the retrieved documents.
|
|
526
|
+
:param return_embedding: Whether to return the embeddings of the retrieved documents.
|
|
527
|
+
|
|
528
|
+
:returns: List of documents that are most similar to `query_sparse_embedding`.
|
|
529
|
+
|
|
530
|
+
:raises QdrantStoreError:
|
|
531
|
+
If the Document Store was initialized with `use_sparse_embeddings=False`.
|
|
532
|
+
"""
|
|
533
|
+
|
|
328
534
|
if not self.use_sparse_embeddings:
|
|
329
535
|
message = (
|
|
330
536
|
"You are trying to query using sparse embeddings, but the Document Store "
|
|
@@ -367,6 +573,17 @@ class QdrantDocumentStore:
|
|
|
367
573
|
scale_score: bool = True,
|
|
368
574
|
return_embedding: bool = False,
|
|
369
575
|
) -> List[Document]:
|
|
576
|
+
"""
|
|
577
|
+
Queries Qdrant using a dense embedding and returns the most relevant documents.
|
|
578
|
+
|
|
579
|
+
:param query_embedding: Dense embedding of the query.
|
|
580
|
+
:param filters: Filters applied to the retrieved documents.
|
|
581
|
+
:param top_k: Maximum number of documents to return.
|
|
582
|
+
:param scale_score: Whether to scale the scores of the retrieved documents.
|
|
583
|
+
:param return_embedding: Whether to return the embeddings of the retrieved documents.
|
|
584
|
+
|
|
585
|
+
:returns: List of documents that are most similar to `query_embedding`.
|
|
586
|
+
"""
|
|
370
587
|
qdrant_filters = convert_filters_to_qdrant(filters)
|
|
371
588
|
|
|
372
589
|
points = self.client.search(
|
|
@@ -409,8 +626,8 @@ class QdrantDocumentStore:
|
|
|
409
626
|
|
|
410
627
|
:param query_embedding: Dense embedding of the query.
|
|
411
628
|
:param query_sparse_embedding: Sparse embedding of the query.
|
|
412
|
-
:param filters: Filters applied to the retrieved
|
|
413
|
-
:param top_k: Maximum number of
|
|
629
|
+
:param filters: Filters applied to the retrieved documents.
|
|
630
|
+
:param top_k: Maximum number of documents to return.
|
|
414
631
|
:param return_embedding: Whether to return the embeddings of the retrieved documents.
|
|
415
632
|
|
|
416
633
|
:returns: List of Document that are most similar to `query_embedding` and `query_sparse_embedding`.
|
|
@@ -474,6 +691,16 @@ class QdrantDocumentStore:
|
|
|
474
691
|
return results
|
|
475
692
|
|
|
476
693
|
def get_distance(self, similarity: str) -> rest.Distance:
|
|
694
|
+
"""
|
|
695
|
+
Retrieves the distance metric for the specified similarity measure.
|
|
696
|
+
|
|
697
|
+
:param similarity:
|
|
698
|
+
The similarity measure to retrieve the distance.
|
|
699
|
+
:returns:
|
|
700
|
+
The corresponding rest.Distance object.
|
|
701
|
+
:raises QdrantStoreError:
|
|
702
|
+
If the provided similarity measure is not supported.
|
|
703
|
+
"""
|
|
477
704
|
try:
|
|
478
705
|
return self.SIMILARITY[similarity]
|
|
479
706
|
except KeyError as ke:
|
|
@@ -507,6 +734,29 @@ class QdrantDocumentStore:
|
|
|
507
734
|
on_disk: bool = False,
|
|
508
735
|
payload_fields_to_index: Optional[List[dict]] = None,
|
|
509
736
|
):
|
|
737
|
+
"""
|
|
738
|
+
Sets up the Qdrant collection with the specified parameters.
|
|
739
|
+
:param collection_name:
|
|
740
|
+
The name of the collection to set up.
|
|
741
|
+
:param embedding_dim:
|
|
742
|
+
The dimension of the embeddings.
|
|
743
|
+
:param recreate_collection:
|
|
744
|
+
Whether to recreate the collection if it already exists.
|
|
745
|
+
:param similarity:
|
|
746
|
+
The similarity measure to use.
|
|
747
|
+
:param use_sparse_embeddings:
|
|
748
|
+
Whether to use sparse embeddings.
|
|
749
|
+
:param on_disk:
|
|
750
|
+
Whether to store the collection on disk.
|
|
751
|
+
:param payload_fields_to_index:
|
|
752
|
+
List of payload fields to index.
|
|
753
|
+
|
|
754
|
+
:raises QdrantStoreError:
|
|
755
|
+
If the collection exists with incompatible settings.
|
|
756
|
+
:raises ValueError:
|
|
757
|
+
If the collection exists with a different similarity measure or embedding dimension.
|
|
758
|
+
|
|
759
|
+
"""
|
|
510
760
|
distance = self.get_distance(similarity)
|
|
511
761
|
|
|
512
762
|
if recreate_collection or not self.client.collection_exists(collection_name):
|
|
@@ -576,6 +826,20 @@ class QdrantDocumentStore:
|
|
|
576
826
|
on_disk: Optional[bool] = None,
|
|
577
827
|
use_sparse_embeddings: Optional[bool] = None,
|
|
578
828
|
):
|
|
829
|
+
"""
|
|
830
|
+
Recreates the Qdrant collection with the specified parameters.
|
|
831
|
+
|
|
832
|
+
:param collection_name:
|
|
833
|
+
The name of the collection to recreate.
|
|
834
|
+
:param distance:
|
|
835
|
+
The distance metric to use for the collection.
|
|
836
|
+
:param embedding_dim:
|
|
837
|
+
The dimension of the embeddings.
|
|
838
|
+
:param on_disk:
|
|
839
|
+
Whether to store the collection on disk.
|
|
840
|
+
:param use_sparse_embeddings:
|
|
841
|
+
Whether to use sparse embeddings.
|
|
842
|
+
"""
|
|
579
843
|
if on_disk is None:
|
|
580
844
|
on_disk = self.on_disk
|
|
581
845
|
|
|
@@ -627,11 +891,11 @@ class QdrantDocumentStore:
|
|
|
627
891
|
|
|
628
892
|
:param documents: A list of Haystack Document objects.
|
|
629
893
|
:param index: name of the index
|
|
630
|
-
:param duplicate_documents: Handle
|
|
894
|
+
:param duplicate_documents: Handle duplicate documents based on parameter options.
|
|
631
895
|
Parameter options : ( 'skip','overwrite','fail')
|
|
632
|
-
skip (default option): Ignore the duplicates documents
|
|
896
|
+
skip (default option): Ignore the duplicates documents.
|
|
633
897
|
overwrite: Update any existing documents with the same ID when adding documents.
|
|
634
|
-
fail:
|
|
898
|
+
fail: An error is raised if the document ID of the document being added already
|
|
635
899
|
exists.
|
|
636
900
|
:returns: A list of Haystack Document objects.
|
|
637
901
|
"""
|
|
@@ -652,10 +916,10 @@ class QdrantDocumentStore:
|
|
|
652
916
|
|
|
653
917
|
def _drop_duplicate_documents(self, documents: List[Document], index: Optional[str] = None) -> List[Document]:
|
|
654
918
|
"""
|
|
655
|
-
Drop
|
|
919
|
+
Drop duplicate documents based on same hash ID.
|
|
656
920
|
|
|
657
921
|
:param documents: A list of Haystack Document objects.
|
|
658
|
-
:param index:
|
|
922
|
+
:param index: Name of the index.
|
|
659
923
|
:returns: A list of Haystack Document objects.
|
|
660
924
|
"""
|
|
661
925
|
_hash_ids: Set = set()
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.3
|
|
2
2
|
Name: qdrant-haystack
|
|
3
|
-
Version: 3.8.
|
|
3
|
+
Version: 3.8.1
|
|
4
4
|
Summary: An integration of Qdrant ANN vector database backend with Haystack
|
|
5
5
|
Project-URL: Source, https://github.com/deepset-ai/haystack-core-integrations
|
|
6
6
|
Project-URL: Documentation, https://github.com/deepset-ai/haystack-core-integrations/blob/main/integrations/qdrant/README.md
|
|
@@ -2,10 +2,10 @@ haystack_integrations/components/retrievers/qdrant/__init__.py,sha256=IRjcM4f8b5
|
|
|
2
2
|
haystack_integrations/components/retrievers/qdrant/retriever.py,sha256=r416_a7_6l7ehfPLdFtyHncsPrHj3mFCyROeJJF9rwM,13463
|
|
3
3
|
haystack_integrations/document_stores/qdrant/__init__.py,sha256=kUGc5uewqArhmVR-JqB_NmJ4kNkTIQIvYDNSoO2ELn0,302
|
|
4
4
|
haystack_integrations/document_stores/qdrant/converters.py,sha256=oSO2YlsWEQbcw9CPlWfSg_HoTZlnkAhZw_6VlYWzKKs,2525
|
|
5
|
-
haystack_integrations/document_stores/qdrant/document_store.py,sha256=
|
|
5
|
+
haystack_integrations/document_stores/qdrant/document_store.py,sha256=DdWh493xfUAy7cjMVUHA6iYtWDh6r4bwsfVKFn3kIYA,37308
|
|
6
6
|
haystack_integrations/document_stores/qdrant/filters.py,sha256=0w70Wa3Za1fNdbJ5O95sZDIpXfblJG_sBBUv0JTQ0-o,8337
|
|
7
7
|
haystack_integrations/document_stores/qdrant/migrate_to_sparse.py,sha256=i6wBC_9_JVzYZtqKm3dhHKTxhwNdcAdpgki8GABDp1c,4909
|
|
8
|
-
qdrant_haystack-3.8.
|
|
9
|
-
qdrant_haystack-3.8.
|
|
10
|
-
qdrant_haystack-3.8.
|
|
11
|
-
qdrant_haystack-3.8.
|
|
8
|
+
qdrant_haystack-3.8.1.dist-info/METADATA,sha256=GzvcN3CPjIiYjz1eVWO64HYPzGP8SH7k5TskcrVGvMA,1862
|
|
9
|
+
qdrant_haystack-3.8.1.dist-info/WHEEL,sha256=zEMcRr9Kr03x1ozGwg5v9NQBKn3kndp6LSoSlVg-jhU,87
|
|
10
|
+
qdrant_haystack-3.8.1.dist-info/licenses/LICENSE.txt,sha256=B05uMshqTA74s-0ltyHKI6yoPfJ3zYgQbvcXfDVGFf8,10280
|
|
11
|
+
qdrant_haystack-3.8.1.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|