Skip to content

Commit b6f5ce4

Browse files
committed
Adding support of multi-vector collection
1 parent 92a176f commit b6f5ce4

File tree

3 files changed

+11
-1
lines changed

3 files changed

+11
-1
lines changed

docs/source/user_guide_rag.rst

Lines changed: 1 addition & 0 deletions
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

Lines changed: 8 additions & 1 deletion
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
@@ -201,7 +206,8 @@ def get_search_results(
201206

202207
points = self.client.query_points(
203208
collection_name=self.collection_name,
204-
query=query_vector,
209+
query= query_vector,
210+
using=self.using,
205211
limit=top_k,
206212
with_payload=[self.id_property_external],
207213
**kwargs,
@@ -235,3 +241,4 @@ def get_search_results(
235241
)
236242

237243
return RawSearchResult(records=records)
244+

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,8 +48,10 @@ 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
5455
result_formatter: Optional[Callable[[neo4j.Record], RetrieverResultItem]] = None
5556
neo4j_database: Optional[str] = None
57+

0 commit comments

Comments
 (0)