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

  1. Pass a non-None values (the keyword/query text) whenever using SearchType.KEYWORD_HYBRID.
  2. If you only have a vector and no text, use SearchType.VECTOR instead.
  3. 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

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


AI-assisted analysis of microsoft/semantic-kernel@c028a0c7dc (2026-08-13). Data as JSON: /api/errors/bcc03895a05e7e17. Report an issue: GitHub.