feat: implement keyword and hybrid search for Weaviate provider (#3264)

# What does this PR do?
<!-- Provide a short summary of what this PR does and why. Link to
relevant issues if applicable. -->
- This PR implements keyword and hybrid search for Weaviate DB based on
its inbuilt functions.
- Added fixtures to conftest.py for Weaviate.
- Enabled integration tests for remote Weaviate on all 3 search modes.

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

## 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.* -->
Unit tests and integration tests should pass on this PR.
This commit is contained in:
Christian Zaccaria 2025-10-03 09:22:30 +01:00 committed by GitHub
parent 52c8df2322
commit bcdbb53be3
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
6 changed files with 242 additions and 48 deletions

View file

@ -22,16 +22,16 @@ def skip_if_provider_doesnt_support_openai_vector_stores(client_with_models):
vector_io_providers = [p for p in client_with_models.providers.list() if p.api == "vector_io"]
for p in vector_io_providers:
if p.provider_type in [
"inline::faiss",
"inline::sqlite-vec",
"inline::milvus",
"inline::chromadb",
"remote::pgvector",
"remote::chromadb",
"remote::qdrant",
"inline::faiss",
"inline::milvus",
"inline::qdrant",
"remote::weaviate",
"inline::sqlite-vec",
"remote::chromadb",
"remote::milvus",
"remote::pgvector",
"remote::qdrant",
"remote::weaviate",
]:
return
@ -47,23 +47,25 @@ def skip_if_provider_doesnt_support_openai_vector_stores_search(client_with_mode
"inline::milvus",
"inline::chromadb",
"inline::qdrant",
"remote::pgvector",
"remote::chromadb",
"remote::weaviate",
"remote::qdrant",
"remote::milvus",
"remote::pgvector",
"remote::qdrant",
"remote::weaviate",
],
"keyword": [
"inline::milvus",
"inline::sqlite-vec",
"remote::milvus",
"inline::milvus",
"remote::pgvector",
"remote::weaviate",
],
"hybrid": [
"inline::sqlite-vec",
"inline::milvus",
"inline::sqlite-vec",
"remote::milvus",
"remote::pgvector",
"remote::weaviate",
],
}
supported_providers = search_mode_support.get(search_mode, [])

View file

@ -138,8 +138,8 @@ def test_insert_chunks(client_with_empty_registry, embedding_model_id, embedding
def test_insert_chunks_with_precomputed_embeddings(client_with_empty_registry, embedding_model_id, embedding_dimension):
vector_io_provider_params_dict = {
"inline::milvus": {"score_threshold": -1.0},
"remote::qdrant": {"score_threshold": -1.0},
"inline::qdrant": {"score_threshold": -1.0},
"remote::qdrant": {"score_threshold": -1.0},
}
vector_db_name = "test_precomputed_embeddings_db"
register_response = client_with_empty_registry.vector_dbs.register(