{"record":{"id":"0d67e87930345842","repo":"microsoft/semantic-kernel","slug":"vector-is-required-for-search","errorCode":null,"errorMessage":"Vector is required for search.","messagePattern":"Vector is required for search\\.","errorType":"exception","errorClass":"VectorStoreOperationException","httpStatus":null,"severity":"error","filePath":"python/semantic_kernel/connectors/mongodb.py","lineNumber":354,"sourceCode":"\n    @override\n    async def ensure_collection_deleted(self, **kwargs) -> None:\n        await self._get_database().drop_collection(self.collection_name, **kwargs)\n\n    @override\n    async def _inner_search(\n        self,\n        search_type: SearchType,\n        options: VectorSearchOptions,\n        values: Any | None = None,\n        vector: Sequence[float | int] | None = None,\n        **kwargs: Any,\n    ) -> KernelSearchResults[VectorSearchResult[TModel]]:\n        if search_type == SearchType.VECTOR:\n            return await self._inner_vector_search(options, values, vector, **kwargs)\n        if search_type == SearchType.KEYWORD_HYBRID:\n            return await self._inner_keyword_hybrid_search(options, values, vector, **kwargs)\n        raise VectorStoreOperationException(\"Vector is required for search.\")\n\n    async def _inner_vector_search(\n        self,\n        options: VectorSearchOptions,\n        values: Any | None = None,\n        vector: Sequence[float | int] | None = None,\n        **kwargs: Any,\n    ) -> KernelSearchResults[VectorSearchResult[TModel]]:\n        collection = self._get_collection()\n        vector_field = self.definition.try_get_vector_field(options.vector_property_name)\n        if not vector_field:\n            raise VectorStoreModelException(\n                f\"Vector field '{options.vector_property_name}' not found in the data model definition.\"\n            )\n        if not vector:\n            vector = await self._generate_vector_from_values(values, options)\n        vector_search_query: dict[str, Any] = {\n            \"limit\": options.top + options.skip,","sourceCodeStart":336,"sourceCodeEnd":372,"githubUrl":"https://github.com/microsoft/semantic-kernel/blob/c028a0c7dc4f0814cdcbaba9d998f187a41197bf/python/semantic_kernel/connectors/mongodb.py#L336-L372","documentation":"Raised by MongoDBAtlasCollection._inner_search (VectorStoreOperationException) as the fallback when search_type is neither VECTOR nor KEYWORD_HYBRID — the only two modes this connector implements. Despite the message ('Vector is required for search.'), the real cause is an unsupported search type (e.g. a text-only KEYWORD search or a future/new SearchType value).","triggerScenarios":"Calling `collection.search(search_type=SearchType.KEYWORD, ...)` or passing a custom/raw search_type string. SearchType currently has only VECTOR and KEYWORD_HYBRID, so this is typically a new enum member or an externally-supplied value.","commonSituations":"Using generic cross-connector search code that passes SearchType.KEYWORD (text search); upgrading SK and using a new SearchType this connector hasn't mapped; misrouting a text-only query to the vector collection.","solutions":["Use SearchType.VECTOR (pure vector) or SearchType.KEYWORD_HYBRID for this collection.","For text-only keyword search, use a dedicated text-search collection/store instead of the Atlas vector collection.","Validate search_type against {VECTOR, KEYWORD_HYBRID} before calling search."],"exampleFix":"// before\nawait collection.search(search_type=SearchType.KEYWORD, vector=emb)\n// after\nawait collection.search(search_type=SearchType.VECTOR, vector=emb)","handlingStrategy":"validation","validationCode":"from semantic_kernel.data.vector import SearchType\nallowed = {SearchType.VECTOR, SearchType.KEYWORD_HYBRID}\nif search_type not in allowed:\n    raise ValueError(f'MongoDBAtlasCollection supports only {allowed}')\nawait collection.search(search_type=search_type, vector=emb)","typeGuard":"from semantic_kernel.data.vector import SearchType\n\ndef is_supported_search(st) -> bool:\n    return st in {SearchType.VECTOR, SearchType.KEYWORD_HYBRID}","tryCatchPattern":"from semantic_kernel.exceptions import VectorStoreOperationException\ntry:\n    await collection.search(search_type=search_type, vector=emb)\nexcept VectorStoreOperationException as e:\n    if 'required for search' in str(e):\n        await collection.search(search_type=SearchType.VECTOR, vector=emb)\n    else:\n        raise","preventionTips":["Use only VECTOR or KEYWORD_HYBRID search types with MongoDBAtlasCollection.","For text-only keyword search, use a dedicated text-search store.","Validate search_type against the connector's supported set before calling."],"tags":["mongodb","vector-store","search","unsupported-operation"],"backgroundTag":null,"analyzedSha":"c028a0c7dc4f0814cdcbaba9d998f187a41197bf","analyzedAt":"2026-08-13T13:48:05.040Z","schemaVersion":2},"datasetVersion":"2026-08-13T14:17:21.547Z"}