Home / Function/ max_marginal_relevance_search_by_vector() — langchain Function Reference

max_marginal_relevance_search_by_vector() — langchain Function Reference

Architecture documentation for the max_marginal_relevance_search_by_vector() function in vectorstores.py from the langchain codebase.

Function python LangChainCore Runnables calls 2 called by 1

Entity Profile

Dependency Diagram

graph TD
  bb3acbcf_8fa2_3d2c_a026_5518a8745385["max_marginal_relevance_search_by_vector()"]
  babbef04_3a0c_25f4_58a8_9d3209d5867e["Chroma"]
  bb3acbcf_8fa2_3d2c_a026_5518a8745385 -->|defined in| babbef04_3a0c_25f4_58a8_9d3209d5867e
  30c96097_3740_4ac0_c651_e0cc5eacf83c["max_marginal_relevance_search()"]
  30c96097_3740_4ac0_c651_e0cc5eacf83c -->|calls| bb3acbcf_8fa2_3d2c_a026_5518a8745385
  4b1eec22_ecb8_c99c_8a5f_bbe2249bd26f["maximal_marginal_relevance()"]
  bb3acbcf_8fa2_3d2c_a026_5518a8745385 -->|calls| 4b1eec22_ecb8_c99c_8a5f_bbe2249bd26f
  dfdd464c_927a_bd24_fe08_0804d01cfe3e["_results_to_docs()"]
  bb3acbcf_8fa2_3d2c_a026_5518a8745385 -->|calls| dfdd464c_927a_bd24_fe08_0804d01cfe3e
  style bb3acbcf_8fa2_3d2c_a026_5518a8745385 fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

libs/partners/chroma/langchain_chroma/vectorstores.py lines 1026–1073

    def max_marginal_relevance_search_by_vector(
        self,
        embedding: list[float],
        k: int = DEFAULT_K,
        fetch_k: int = 20,
        lambda_mult: float = 0.5,
        filter: dict[str, str] | None = None,  # noqa: A002
        where_document: dict[str, str] | None = None,
        **kwargs: Any,
    ) -> list[Document]:
        """Return docs selected using the maximal marginal relevance.

        Maximal marginal relevance optimizes for similarity to query AND diversity
        among selected documents.

        Args:
            embedding: Embedding to look up documents similar to.
            k: Number of `Document` objects to return.
            fetch_k: Number of `Document` objects to fetch to pass to MMR algorithm.
            lambda_mult: Number between 0 and 1 that determines the degree
                of diversity among the results with `0` corresponding
                to maximum diversity and `1` to minimum diversity.
            filter: Filter by metadata.
            where_document: dict used to filter by the document contents.
                e.g. `{"$contains": "hello"}`.
            kwargs: Additional keyword arguments to pass to Chroma collection query.

        Returns:
            List of `Document` objects selected by maximal marginal relevance.
        """
        results = self.__query_collection(
            query_embeddings=[embedding],
            n_results=fetch_k,
            where=filter,
            where_document=where_document,
            include=["metadatas", "documents", "distances", "embeddings"],
            **kwargs,
        )
        mmr_selected = maximal_marginal_relevance(
            np.array(embedding, dtype=np.float32),
            results["embeddings"][0],
            k=k,
            lambda_mult=lambda_mult,
        )

        candidates = _results_to_docs(results)

        return [r for i, r in enumerate(candidates) if i in mmr_selected]

Domain

Subdomains

Frequently Asked Questions

What does max_marginal_relevance_search_by_vector() do?
max_marginal_relevance_search_by_vector() is a function in the langchain codebase, defined in libs/partners/chroma/langchain_chroma/vectorstores.py.
Where is max_marginal_relevance_search_by_vector() defined?
max_marginal_relevance_search_by_vector() is defined in libs/partners/chroma/langchain_chroma/vectorstores.py at line 1026.
What does max_marginal_relevance_search_by_vector() call?
max_marginal_relevance_search_by_vector() calls 2 function(s): _results_to_docs, maximal_marginal_relevance.
What calls max_marginal_relevance_search_by_vector()?
max_marginal_relevance_search_by_vector() is called by 1 function(s): max_marginal_relevance_search.

Analyze Your Own Codebase

Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.

Try Supermodel Free