microsoft/semantic-kernel · warning · VectorStoreOperationException
No vector and/or keywords provided for search.
Error message
No vector and/or keywords provided for search.
What it means
Raised by _inner_search for SearchType.KEYWORD_HYBRID when the 'values' argument is None. Hybrid search combines keyword text search with vector search, so a non-None values string is mandatory (it is used both as search_text and as input for embedding). A missing values means there is no keyword query to run, so a VectorStoreOperationException fires immediately.
Source
Thrown at python/semantic_kernel/connectors/azure_ai_search.py:596
if generated_vector is not None:
search_args["vector_queries"] = [
VectorizedQuery(
vector=generated_vector, # type: ignore
fields=vector_field.storage_name or vector_field.name if vector_field else None,
)
]
else:
search_args["vector_queries"] = [
VectorizableTextQuery(
text=values,
fields=vector_field.storage_name or vector_field.name if vector_field else None,
)
]
else:
raise VectorStoreOperationException("No vector or keywords provided for vector search.")
case SearchType.KEYWORD_HYBRID:
if values is None:
raise VectorStoreOperationException("No vector and/or keywords provided for search.")
vector_field = self.definition.try_get_vector_field(options.vector_property_name)
search_args["search_fields"] = (
[options.additional_property_name]
if options.additional_property_name is not None
else [
field.name
for field in self.definition.fields
if field.field_type == FieldTypes.DATA and field.is_full_text_indexed
]
)
if not search_args["search_fields"]:
raise VectorStoreOperationException("No searchable fields found for hybrid search.")
search_args["search_text"] = values
vector = await self._generate_vector_from_values(values, options) if vector is None else vector
if vector is not None:
search_args["vector_queries"] = [
VectorizedQuery(View on GitHub (pinned to c028a0c7dc)
Solutions
- Pass a non-None values (the keyword/query text) whenever using SearchType.KEYWORD_HYBRID.
- If you only have a vector and no text, use SearchType.VECTOR instead.
- Validate at the call site that values is a non-empty string before issuing a hybrid search.
Example fix
// before
results = await collection.search(search_type=SearchType.KEYWORD_HYBRID, vector=vec)
// after
results = await collection.search(
search_type=SearchType.KEYWORD_HYBRID, values=query_text, vector=vec,
) Defensive patterns
Strategy: validation
Validate before calling
def require_hybrid_values(values):
if values is None:
raise ValueError("KEYWORD_HYBRID search requires a non-None values string")
require_hybrid_values(query_text) Try / catch
from semantic_kernel.exceptions import VectorStoreOperationException
try:
res = await collection.search(search_type=SearchType.KEYWORD_HYBRID, values=q)
except VectorStoreOperationException as e:
if "No vector and/or keywords" in str(e):
res = await collection.search(search_type=SearchType.VECTOR, vector=vec)
raise Prevention
- Always supply a non-empty values string for KEYWORD_HYBRID search.
- If you only have a vector, use SearchType.VECTOR instead.
- Validate that values is a non-empty string before issuing a hybrid search.
When it happens
Trigger: Calling search with search_type=SearchType.KEYWORD_HYBRID and values=None (vector may or may not be supplied; the check only gates on values). E.g. attempting a hybrid search using only a precomputed vector with no text.
Common situations: Assuming hybrid search can run on a vector alone (it cannot — it needs the keyword half); forwarding an optional query string that defaulted to None; mixing up VECTOR and KEYWORD_HYBRID search types.
Related errors
- No keys or options provided for get operation.
- Invalid index type supplied, should be a SearchIndex object.
- No vector or keywords provided for vector search.
- No searchable fields found for hybrid search.
- Azure AI Search tool definition must have both 'index_connec
AI-assisted analysis of microsoft/semantic-kernel@c028a0c7dc (2026-08-13).
Data as JSON: /api/errors/bcc03895a05e7e17.
Report an issue: GitHub.