maximal_marginal_relevance() — langchain Function Reference
Architecture documentation for the maximal_marginal_relevance() function in utils.py from the langchain codebase.
Entity Profile
Dependency Diagram
graph TD 0c88bb05_2797_2c68_7ac3_726357557644["maximal_marginal_relevance()"] 530fd015_66ee_ef3b_a35b_3710e1b1764c["utils.py"] 0c88bb05_2797_2c68_7ac3_726357557644 -->|defined in| 530fd015_66ee_ef3b_a35b_3710e1b1764c 4c281b40_1396_20c6_d4c7_0be61771cba1["_cosine_similarity()"] 0c88bb05_2797_2c68_7ac3_726357557644 -->|calls| 4c281b40_1396_20c6_d4c7_0be61771cba1 style 0c88bb05_2797_2c68_7ac3_726357557644 fill:#6366f1,stroke:#818cf8,color:#fff
Relationship Graph
Source Code
libs/core/langchain_core/vectorstores/utils.py lines 106–157
def maximal_marginal_relevance(
query_embedding: np.ndarray,
embedding_list: list,
lambda_mult: float = 0.5,
k: int = 4,
) -> list[int]:
"""Calculate maximal marginal relevance.
Args:
query_embedding: The query embedding.
embedding_list: A list of embeddings.
lambda_mult: The lambda parameter for MMR.
k: The number of embeddings to return.
Returns:
A list of indices of the embeddings to return.
Raises:
ImportError: If numpy is not installed.
"""
if not _HAS_NUMPY:
msg = (
"maximal_marginal_relevance requires numpy to be installed. "
"Please install numpy with `pip install numpy`."
)
raise ImportError(msg)
if min(k, len(embedding_list)) <= 0:
return []
if query_embedding.ndim == 1:
query_embedding = np.expand_dims(query_embedding, axis=0)
similarity_to_query = _cosine_similarity(query_embedding, embedding_list)[0]
most_similar = int(np.argmax(similarity_to_query))
idxs = [most_similar]
selected = np.array([embedding_list[most_similar]])
while len(idxs) < min(k, len(embedding_list)):
best_score = -np.inf
idx_to_add = -1
similarity_to_selected = _cosine_similarity(embedding_list, selected)
for i, query_score in enumerate(similarity_to_query):
if i in idxs:
continue
redundant_score = max(similarity_to_selected[i])
equation_score = (
lambda_mult * query_score - (1 - lambda_mult) * redundant_score
)
if equation_score > best_score:
best_score = equation_score
idx_to_add = i
idxs.append(idx_to_add)
selected = np.append(selected, [embedding_list[idx_to_add]], axis=0)
return idxs
Domain
Subdomains
Calls
Source
Frequently Asked Questions
What does maximal_marginal_relevance() do?
maximal_marginal_relevance() is a function in the langchain codebase, defined in libs/core/langchain_core/vectorstores/utils.py.
Where is maximal_marginal_relevance() defined?
maximal_marginal_relevance() is defined in libs/core/langchain_core/vectorstores/utils.py at line 106.
What does maximal_marginal_relevance() call?
maximal_marginal_relevance() calls 1 function(s): _cosine_similarity.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free