Skip to content

Commit bb8fe0a

Browse files
authored
Adding support of multi-vector collection for Qdrant driver (neo4j#312)
* Adding support of multi-vector collection * update file format * update changelog: Added support for multi-vector collection in Qdrant driver." "
1 parent d707409 commit bb8fe0a

File tree

4 files changed

+12
-0
lines changed

4 files changed

+12
-0
lines changed

CHANGELOG.md

+4
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,10 @@
22

33
## Next
44

5+
### Added
6+
7+
- Added support for multi-vector collection in Qdrant driver.
8+
59
### Changed
610

711
- Improved log output readability in Retrievers and GraphRAG and added embedded vector to retriever result metadata for debugging.

docs/source/user_guide_rag.rst

+1
Original file line numberDiff line numberDiff line change
@@ -704,6 +704,7 @@ Qdrant Retrievers
704704
driver=driver,
705705
client=client,
706706
collection_name="my-collection",
707+
using="my-vector",
707708
id_property_external="neo4j_id", # The payload field that contains identifier to a corresponding Neo4j node id property
708709
id_property_neo4j="id",
709710
embedder=embedder,

src/neo4j_graphrag/retrievers/external/qdrant/qdrant.py

+6
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,7 @@ class QdrantNeo4jRetriever(ExternalRetriever):
6262
driver=neo4j_driver,
6363
client=client,
6464
collection_name="my_collection",
65+
using="my_vector",
6566
id_property_external="neo4j_id"
6667
)
6768
embedding = ...
@@ -71,6 +72,7 @@ class QdrantNeo4jRetriever(ExternalRetriever):
7172
driver (neo4j.Driver): The Neo4j Python driver.
7273
client (QdrantClient): The Qdrant client object.
7374
collection_name (str): The name of the Qdrant collection to use.
75+
using (str): The name of the Qdrant vector contained in your collection in case of multi-vector collection
7476
id_property_neo4j (str): The name of the Neo4j node property that's used as the identifier for relating matches from Qdrant to Neo4j nodes.
7577
id_property_external (str): The name of the Qdrant payload property with identifier that refers to a corresponding Neo4j node id property.
7678
embedder (Optional[Embedder]): Embedder object to embed query text.
@@ -89,6 +91,7 @@ def __init__(
8991
collection_name: str,
9092
id_property_neo4j: str,
9193
id_property_external: str = "id",
94+
using: Optional[str] = None,
9295
embedder: Optional[Embedder] = None,
9396
return_properties: Optional[list[str]] = None,
9497
retrieval_query: Optional[str] = None,
@@ -105,6 +108,7 @@ def __init__(
105108
driver_model=driver_model,
106109
client_model=client_model,
107110
collection_name=collection_name,
111+
using=using,
108112
id_property_neo4j=id_property_neo4j,
109113
id_property_external=id_property_external,
110114
embedder_model=embedder_model,
@@ -125,6 +129,7 @@ def __init__(
125129
self.driver = validated_data.driver_model.driver
126130
self.client = validated_data.client_model.client
127131
self.collection_name = validated_data.collection_name
132+
self.using = validated_data.using
128133
self.embedder = (
129134
validated_data.embedder_model.embedder
130135
if validated_data.embedder_model
@@ -202,6 +207,7 @@ def get_search_results(
202207
points = self.client.query_points(
203208
collection_name=self.collection_name,
204209
query=query_vector,
210+
using=self.using,
205211
limit=top_k,
206212
with_payload=[self.id_property_external],
207213
**kwargs,

src/neo4j_graphrag/retrievers/external/qdrant/types.py

+1
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@ class QdrantNeo4jRetrieverModel(BaseModel):
4848
collection_name: str
4949
id_property_external: str
5050
id_property_neo4j: str
51+
using: Optional[str] = None
5152
embedder_model: Optional[EmbedderModel] = None
5253
return_properties: Optional[list[str]] = None
5354
retrieval_query: Optional[str] = None

0 commit comments

Comments
 (0)