{"record":{"id":"bcc03895a05e7e17","repo":"microsoft/semantic-kernel","slug":"no-vector-and-or-keywords-provided-for-search","errorCode":null,"errorMessage":"No vector and/or keywords provided for search.","messagePattern":"No vector and/or keywords provided for search\\.","errorType":"exception","errorClass":"VectorStoreOperationException","httpStatus":null,"severity":"warning","filePath":"python/semantic_kernel/connectors/azure_ai_search.py","lineNumber":596,"sourceCode":"                    if generated_vector is not None:\n                        search_args[\"vector_queries\"] = [\n                            VectorizedQuery(\n                                vector=generated_vector,  # type: ignore\n                                fields=vector_field.storage_name or vector_field.name if vector_field else None,\n                            )\n                        ]\n                    else:\n                        search_args[\"vector_queries\"] = [\n                            VectorizableTextQuery(\n                                text=values,\n                                fields=vector_field.storage_name or vector_field.name if vector_field else None,\n                            )\n                        ]\n                else:\n                    raise VectorStoreOperationException(\"No vector or keywords provided for vector search.\")\n            case SearchType.KEYWORD_HYBRID:\n                if values is None:\n                    raise VectorStoreOperationException(\"No vector and/or keywords provided for search.\")\n                vector_field = self.definition.try_get_vector_field(options.vector_property_name)\n                search_args[\"search_fields\"] = (\n                    [options.additional_property_name]\n                    if options.additional_property_name is not None\n                    else [\n                        field.name\n                        for field in self.definition.fields\n                        if field.field_type == FieldTypes.DATA and field.is_full_text_indexed\n                    ]\n                )\n                if not search_args[\"search_fields\"]:\n                    raise VectorStoreOperationException(\"No searchable fields found for hybrid search.\")\n                search_args[\"search_text\"] = values\n\n                vector = await self._generate_vector_from_values(values, options) if vector is None else vector\n                if vector is not None:\n                    search_args[\"vector_queries\"] = [\n                        VectorizedQuery(","sourceCodeStart":578,"sourceCodeEnd":614,"githubUrl":"https://github.com/microsoft/semantic-kernel/blob/c028a0c7dc4f0814cdcbaba9d998f187a41197bf/python/semantic_kernel/connectors/azure_ai_search.py#L578-L614","documentation":"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.","triggerScenarios":"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.","commonSituations":"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.","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."],"exampleFix":"// before\nresults = await collection.search(search_type=SearchType.KEYWORD_HYBRID, vector=vec)\n\n// after\nresults = await collection.search(\n    search_type=SearchType.KEYWORD_HYBRID, values=query_text, vector=vec,\n)","handlingStrategy":"validation","validationCode":"def require_hybrid_values(values):\n    if values is None:\n        raise ValueError(\"KEYWORD_HYBRID search requires a non-None values string\")\n\nrequire_hybrid_values(query_text)","typeGuard":null,"tryCatchPattern":"from semantic_kernel.exceptions import VectorStoreOperationException\ntry:\n    res = await collection.search(search_type=SearchType.KEYWORD_HYBRID, values=q)\nexcept VectorStoreOperationException as e:\n    if \"No vector and/or keywords\" in str(e):\n        res = await collection.search(search_type=SearchType.VECTOR, vector=vec)\n    raise","preventionTips":["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."],"tags":["api-misuse","azure-ai-search","hybrid-search"],"backgroundTag":null,"analyzedSha":"c028a0c7dc4f0814cdcbaba9d998f187a41197bf","analyzedAt":"2026-08-13T13:48:05.040Z","schemaVersion":2},"datasetVersion":"2026-08-13T14:17:21.547Z"}