feat(qdrant): implement hybrid and keyword search support (#4006)

# What does this PR do?
-  Part of #3009
- Implement hybrid search using Qdrant's native query filtering
- Add keyword search support
- Update test suites to include qdrant for keyword and hybrid modes


<!-- If resolving an issue, uncomment and update the line below -->
<!-- Closes #[issue-number] -->

## Test Plan
<!-- Describe the tests you ran to verify your changes with result
summaries. *Provide clear instructions so the plan can be easily
re-executed.* -->
```
pytest -sv tests/unit/providers/vector_io/

.......
============================================================================================== slowest 10 durations ===============================================================================================
0.20s call     tests/unit/providers/vector_io/test_vector_io_openai_vector_stores.py::test_max_concurrent_files_per_batch[qdrant]
0.20s call     tests/unit/providers/vector_io/test_vector_io_openai_vector_stores.py::test_max_concurrent_files_per_batch[pgvector]
0.20s call     tests/unit/providers/vector_io/test_vector_io_openai_vector_stores.py::test_max_concurrent_files_per_batch[sqlite_vec]
0.20s call     tests/unit/providers/vector_io/test_vector_io_openai_vector_stores.py::test_max_concurrent_files_per_batch[faiss]
0.06s setup    tests/unit/providers/vector_io/test_vector_io_openai_vector_stores.py::test_insert_chunks_with_missing_document_id[pgvector]
0.04s call     tests/unit/providers/vector_io/test_sqlite_vec.py::test_query_chunks_hybrid_tie_breaking
0.04s call     tests/unit/providers/vector_io/test_sqlite_vec.py::test_query_chunks_hybrid_weighted_reranker_parametrization
0.03s call     tests/unit/providers/vector_io/test_sqlite_vec.py::test_query_chunks_hybrid_score_selection
0.03s call     tests/unit/providers/vector_io/test_sqlite_vec.py::test_query_chunks_hybrid_edge_cases
0.03s setup    tests/unit/providers/vector_io/test_faiss.py::test_faiss_query_vector_returns_infinity_when_query_and_embedding_are_identical
======================================================================================== 180 passed, 47 warnings in 2.78s =========================================================================================
```

Signed-off-by: Varsha Prasad Narsing <varshaprasad96@gmail.com>
Co-authored-by: Francisco Javier Arceo <arceofrancisco@gmail.com>
This commit is contained in:
Varsha 2025-12-03 13:39:01 -08:00 committed by GitHub
parent 5873a316db
commit 743683ba26
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 226 additions and 3 deletions

View file

@ -57,16 +57,20 @@ def skip_if_provider_doesnt_support_openai_vector_stores_search(client_with_mode
],
"keyword": [
"inline::milvus",
"inline::qdrant",
"inline::sqlite-vec",
"remote::milvus",
"remote::pgvector",
"remote::qdrant",
"remote::weaviate",
],
"hybrid": [
"inline::milvus",
"inline::qdrant",
"inline::sqlite-vec",
"remote::milvus",
"remote::pgvector",
"remote::qdrant",
"remote::weaviate",
],
}