What is missing
QdrantOnlineStore has retrieve_online_documents (v1) only — no retrieve_online_documents_v2
FeatureStore.retrieve_online_documents_v2() raises NotImplementedError for online_store.type: qdrant
- v1 ignores
requested_features; returns a 5-tuple, not Dict[str, ValueProto]
- No
query_string / hybrid path in Feast's Qdrant integration
create_collection configures dense vectors only (no sparse vectors for keyword search)
File: sdk/python/feast/infra/online_stores/qdrant_online_store/qdrant.py
What is required (v2 contract)
Implement retrieve_online_documents_v2 per OnlineStore interface:
- Input:
requested_features, embedding and/or query_string, top_k, distance_metric, table, config
- Output:
List[(event_ts, EntityKeyProto, Dict[str, ValueProto])] with requested features + distance (+ text_rank when text search is used)
Reference: milvus.py, mongodb.py, postgres.py
What to include
- Dense vector search —
query_points / Query API; honor requested_features in feature_dict; map score → distance
- Multi-feature per hit — handle Qdrant's one-feature-per-point write model (join/fetch or storage change)
- Hybrid /
query_string — sparse vector index + write path; encode query_string to sparse vector; Query API prefetch (dense + sparse) + fusion (RRF); support embedding-only, text-only, and combined queries
- Tests — unit and/or integration under
sdk/python/tests/
- Docs — update
docs/reference/alpha-vector-database.md and docs/reference/online-stores/qdrant.md
What is missing
QdrantOnlineStorehasretrieve_online_documents(v1) only — noretrieve_online_documents_v2FeatureStore.retrieve_online_documents_v2()raisesNotImplementedErrorforonline_store.type: qdrantrequested_features; returns a 5-tuple, notDict[str, ValueProto]query_string/ hybrid path in Feast's Qdrant integrationcreate_collectionconfigures dense vectors only (no sparse vectors for keyword search)File:
sdk/python/feast/infra/online_stores/qdrant_online_store/qdrant.pyWhat is required (v2 contract)
Implement
retrieve_online_documents_v2perOnlineStoreinterface:requested_features,embeddingand/orquery_string,top_k,distance_metric,table,configList[(event_ts, EntityKeyProto, Dict[str, ValueProto])]with requested features +distance(+text_rankwhen text search is used)Reference:
milvus.py,mongodb.py,postgres.pyWhat to include
query_points/ Query API; honorrequested_featuresinfeature_dict; map score →distancequery_string— sparse vector index + write path; encodequery_stringto sparse vector; Query API prefetch (dense + sparse) + fusion (RRF); support embedding-only, text-only, and combined queriessdk/python/tests/docs/reference/alpha-vector-database.mdanddocs/reference/online-stores/qdrant.md