microsoft/semantic-kernel · error · VectorStoreOperationException

No searchable fields found for hybrid search.

Error message

No searchable fields found for hybrid search.

What it means

Raised by _inner_search for SearchType.KEYWORD_HYBRID when no searchable text fields can be resolved. Search fields come from either options.additional_property_name (a single explicit field) or, by default, from DATA fields in the definition with is_full_text_indexed=True. If additional_property_name is None and no DATA field has is_full_text_indexed set, search_fields is empty and hybrid search cannot run, so a VectorStoreOperationException fires.

Source

Thrown at python/semantic_kernel/connectors/azure_ai_search.py:608

                            )
                        ]
                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(
                            vector=vector,  # type: ignore
                            fields=vector_field.name if vector_field else None,
                        )
                    ]
                else:
                    search_args["vector_queries"] = [
                        VectorizableTextQuery(
                            text=values,
                            fields=vector_field.name if vector_field else None,
                        )
                    ]
        try:

View on GitHub (pinned to c028a0c7dc)

Solutions

  1. Mark at least one DATA field with is_full_text_indexed=True in your VectorStoreCollectionDefinition (e.g. the field holding the text content).
  2. Alternatively, set VectorSearchOptions.additional_property_name to the name of the field to search.
  3. Re-create the collection/index after changing the definition so the schema reflects the searchable field.

Example fix

// before
fields=[key_field, vector_field]  # no searchable text field

// after
fields=[
    key_field,
    field(type_='str', name='content', is_full_text_indexed=True),
    vector_field,
]
Defensive patterns

Strategy: validation

Validate before calling

def has_searchable_fields(definition, additional_property_name=None) -> bool:
    if additional_property_name is not None:
        return True
    return any(
        f.field_type.value == "data" and f.is_full_text_indexed
        for f in definition.fields
    )

assert has_searchable_fields(collection.definition, opts.additional_property_name)

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 searchable fields" in str(e):
        # mark a DATA field is_full_text_indexed=True, recreate index, then retry
        ...
    raise

Prevention

When it happens

Trigger: Running a KEYWORD_HYBRID search on a collection whose definition marks no data field as is_full_text_indexed=True, and where VectorSearchOptions.additional_property_name is not set. The keyword half of hybrid search has no field to search over.

Common situations: Defining a record with only a key + vector field and no searchable text field; setting is_full_text_indexed on a VECTOR field instead of a DATA field; forgetting to mark the content/title field as full-text searchable.

Related errors


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