# Step 2: Embed query embeddings = self.embedding_model.embed(query, "search") # Step 3: Semantic search (over-fetch for scoring pool) internal_limit = max(limit * 4, 60) semantic_results = self.vector_store.search( query=query, vectors=embeddings, top_k=internal_limit, filters=filters ) # Step 4: Keyword search (if store supports it) keyword_results = self.vector_store.keyword_search( query=query_lemmatized, top_k=internal_limit, filters=filters )