{"record":{"id":"10538e90fb0cf3e1","repo":"BerriAI/litellm","slug":"no-query-found-in-messages-for-rag-query","errorCode":null,"errorMessage":"No query found in messages for RAG query","messagePattern":"No query found in messages for RAG query","errorType":"validation","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"litellm/rag/main.py","lineNumber":223,"sourceCode":"async def _execute_query_pipeline(\n    model: str,\n    messages: list[Any],\n    retrieval_config: dict[str, Any],\n    rerank: dict[str, Any] | None = None,\n    stream: bool = False,\n    **kwargs,\n) -> ModelResponse:\n    \"\"\"\n    Execute the RAG query pipeline.\n    \"\"\"\n    # Extract router from kwargs - use it for completion if available\n    # to properly resolve virtual model names\n    router: Final[Router | None] = kwargs.pop(\"router\", None)\n\n    # 1. Extract query from last user message\n    query_text: Final = RAGQuery.extract_query_from_messages(messages)\n    if not query_text:\n        raise ValueError(\"No query found in messages for RAG query\")\n\n    # 2. Search vector store\n    with _suppressed_sub_call_billing():\n        search_response: Final = await litellm.vector_stores.asearch(\n            vector_store_id=retrieval_config[\"vector_store_id\"],\n            query=query_text,\n            max_num_results=retrieval_config.get(\"top_k\", 10),\n            custom_llm_provider=retrieval_config.get(\"custom_llm_provider\", \"openai\"),\n            **kwargs,\n        )\n\n    search_provider: Final = retrieval_config.get(\"custom_llm_provider\", \"openai\")\n    try:\n        search_cost = sum(\n            vector_store_search_cost(\n                model=search_provider if \"/\" in search_provider else None,\n                custom_llm_provider=search_provider,\n                response=search_response,","sourceCodeStart":205,"sourceCodeEnd":241,"githubUrl":"https://github.com/BerriAI/litellm/blob/77b7c6c40c0c5aa5fbcb1d6a1825ac39ca8829b8/litellm/rag/main.py#L205-L241","documentation":"Raised when the RAG query pipeline cannot extract any query text from the request messages (no non-empty last user message), so there is nothing to retrieve with; the completion request is malformed for RAG mode.","triggerScenarios":"Thrown at litellm/rag/main.py:223 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Include a user message with query text in the messages array for the RAG query."],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"77b7c6c40c0c5aa5fbcb1d6a1825ac39ca8829b8","analyzedAt":"2026-08-18T11:44:31.656Z","contentChangedAt":null,"schemaVersion":2},"datasetVersion":"2026-09-14T00:17:10.932Z"}