Summary
When using spring-ai-starter-vector-store-pgvector to store embeddings from multiple domains (e.g., activities, nutrition, user profiles) in a single vector store, there is no first-class support for domain-level filtering during similarity search.
Current behavior
Documents can be stored with metadata, and SearchRequest supports a FilterExpression. However, filtering by a custom domain field requires manually constructing filter expressions, and the ergonomics could be improved for multi-domain RAG use cases.
Use case
In my fitness tracking microservice, I store embeddings from three domains in a single PgVector table:
domain: "activity" — workout/exercise data
domain: "nutrition" — food/calorie entries
domain: "user" — user profile context
When the AI chat endpoint performs RAG, I need to retrieve documents across all three domains with the ability to:
- Filter by specific domain(s) — e.g., only activity + nutrition for a calories question
- Weight domains differently in relevance scoring
- Set per-domain result limits (e.g., max 5 activities, max 3 nutrition entries)
Proposal
- Add a convenience method on
SearchRequest for domain/namespace filtering (e.g., .withDomains("activity", "nutrition"))
- Support per-domain
topK limits in a single search call
- Optionally, support domain-level boosting in similarity scoring
This would make multi-domain RAG architectures significantly easier to build with Spring AI.
Spring Boot version: 4.0.2
Spring AI version: 2.0.0-M2
Vector store: PgVector
Summary
When using
spring-ai-starter-vector-store-pgvectorto store embeddings from multiple domains (e.g., activities, nutrition, user profiles) in a single vector store, there is no first-class support for domain-level filtering during similarity search.Current behavior
Documents can be stored with metadata, and
SearchRequestsupports aFilterExpression. However, filtering by a custom domain field requires manually constructing filter expressions, and the ergonomics could be improved for multi-domain RAG use cases.Use case
In my fitness tracking microservice, I store embeddings from three domains in a single PgVector table:
domain: "activity"— workout/exercise datadomain: "nutrition"— food/calorie entriesdomain: "user"— user profile contextWhen the AI chat endpoint performs RAG, I need to retrieve documents across all three domains with the ability to:
Proposal
SearchRequestfor domain/namespace filtering (e.g.,.withDomains("activity", "nutrition"))topKlimits in a single search callThis would make multi-domain RAG architectures significantly easier to build with Spring AI.
Spring Boot version: 4.0.2
Spring AI version: 2.0.0-M2
Vector store: PgVector