Returns documents selected using maximal marginal relevance to balance relevance and diversity.
Available in Embedded and JS/TS SDK. The Python SDK does not currently support MMR search.
max_marginal_relevance_search(
query: str ,
k: int = 4 ,
fetch_k: int = 20 ,
lambda_mult: float = 0.5 ,
filter : Optional[Dict[ str , Any]] = None ,
** kwargs
) -> List[Document]
Parameters Parameter Type Description querystrQuery text to search for kintNumber of documents to return (default: 4) fetch_kintNumber of documents to fetch before reranking (default: 20) lambda_multfloatDiversity control: 0 = max diversity, 1 = min diversity (default: 0.5) filterOptional[Dict[str, Any]](Optional) Metadata filters to apply**kwargsAnyAdditional keyword arguments (currently unused)
Returns List[Document]: List of diverse, relevant Document objectsExample Usage # Search with balanced relevance and diversity
results = store.max_marginal_relevance_search(
"Python programming concepts" ,
k = 5 ,
fetch_k = 20 ,
lambda_mult = 0.5 # Balance relevance and diversity
)
# Maximum diversity (avoid similar documents)
diverse_results = store.max_marginal_relevance_search(
"data structures" ,
k = 5 ,
lambda_mult = 0.0 # Maximum diversity
)
# Maximum relevance (similar to standard search)
relevant_results = store.max_marginal_relevance_search(
"algorithms" ,
k = 5 ,
lambda_mult = 1.0 # Maximum relevance
)
By Vector Variant The Embedded library also provides max_marginal_relevance_search_by_vector for searching with a pre-computed embedding vector: max_marginal_relevance_search_by_vector(
embedding: Union[List[ float ], np.ndarray],
k: int = 4 ,
fetch_k: int = 20 ,
lambda_mult: float = 0.5 ,
filter : Optional[Dict[ str , Any]] = None ,
** kwargs
) -> List[Document]
Parameters: Parameter Type Description embeddingUnion[List[float], np.ndarray]Query embedding vector kintNumber of documents to return (default: 4) fetch_kintNumber of documents to fetch before reranking (default: 20) lambda_multfloatDiversity control: 0 = max diversity, 1 = min diversity (default: 0.5) filterOptional[Dict[str, Any]](Optional) Metadata filters to apply**kwargsAnyAdditional keyword arguments (currently unused)
Example: # Get query embedding
query_embedding = store.get_embeddings( "machine learning algorithms" )
# MMR search with embedding
results = store.max_marginal_relevance_search_by_vector(
query_embedding,
k = 5 ,
fetch_k = 30 ,
lambda_mult = 0.3 # Favor diversity
)
# With metadata filter
filtered_results = store.max_marginal_relevance_search_by_vector(
query_embedding,
k = 4 ,
filter = { "category" : "tutorial" },
lambda_mult = 0.7 # Favor relevance
)
maxMarginalRelevanceSearch (
query : string ,
options : { k? : number ; fetchK ?: number ; lambda ?: number ; filter ?: Record < string , any> }
): Promise < Document [] >
Parameters Parameter Type Description querystringQuery text to search for options.knumber(Optional) Number of documents to returnoptions.fetchKnumber(Optional) Number of documents to fetch before rerankingoptions.lambdanumber(Optional) Diversity control: 0 = max diversity, 1 = min diversityoptions.filterRecord<string, any>(Optional) Metadata filters to apply
Returns Promise<Document[]>: Array of diverse, relevant Document objectsThe JS/TS SDK does not have a separate by-vector variant. Use maxMarginalRelevanceSearch with a text query.
Example Usage const results = await store . maxMarginalRelevanceSearch (
"Python programming concepts" ,
{ k: 5 , fetchK: 20 , lambda: 0.5 }
);
// Maximum diversity
const diverse = await store . maxMarginalRelevanceSearch (
"data structures" ,
{ k: 5 , lambda: 0.0 }
);
Async
The Embedded library provides an async version of this method prefixed with a: # amax_marginal_relevance_search — async variant
docs = await store.amax_marginal_relevance_search( "query" , k = 5 , lambda_mult = 0.5 )
JS/TS methods are natively async — all signatures above already return Promise<...>. No separate async variant is needed.