Spring / Spring AI interview questions
What is the SearchRequest API in Spring AI's VectorStore?
SearchRequest is the query object you pass to VectorStore.similaritySearch(). It encapsulates the query string plus optional filters — maximum results, similarity threshold, and metadata filter expressions — so you can constrain what documents come back rather than retrieving everything above some similarity floor.
// Basic: top-5 most similar documents List<Document> docs = vectorStore.similaritySearch( SearchRequest.query(userQuestion).withTopK(5)); // With similarity threshold â only return docs scoring above 0.75 List<Document> precise = vectorStore.similaritySearch( SearchRequest.query(userQuestion) .withTopK(5) .withSimilarityThreshold(0.75)); // With metadata filter â only search documents from a specific source Filter.Expression filter = new Filter.ExpressionBuilder() .eq("source", "spring-ai-docs.pdf") .build(); List<Document> filtered = vectorStore.similaritySearch( SearchRequest.query(userQuestion) .withTopK(5) .withFilterExpression(filter));
The metadata filter uses an expression builder API that is translated by each VectorStore implementation into its native query language — SQL WHERE clause for PgVector, Redis filter syntax for Redis, Pinecone metadata filter JSON, etc. This means your filter logic is portable and does not leak provider-specific syntax into application code.
Tuning topK and similarityThreshold is a key RAG quality lever. Returning too many low-relevance documents bloats the prompt and can confuse the model; returning too few may miss critical context.
More Related questions...