Home / Class/ EmbeddingDistanceEvalChain Class — langchain Architecture

EmbeddingDistanceEvalChain Class — langchain Architecture

Architecture documentation for the EmbeddingDistanceEvalChain class in base.py from the langchain codebase.

Entity Profile

Dependency Diagram

graph TD
  c2a7bfb1_d4f1_c46f_534a_487b3119e542["EmbeddingDistanceEvalChain"]
  d0582f8c_2e5f_12bf_68a0_bce7d9fd7e39["_EmbeddingDistanceChainMixin"]
  c2a7bfb1_d4f1_c46f_534a_487b3119e542 -->|extends| d0582f8c_2e5f_12bf_68a0_bce7d9fd7e39
  42f35457_68a1_961e_1ac4_cbaa4a2b48b3["StringEvaluator"]
  c2a7bfb1_d4f1_c46f_534a_487b3119e542 -->|extends| 42f35457_68a1_961e_1ac4_cbaa4a2b48b3
  8d2afa68_e16d_c06a_fbe2_08321c12e529["base.py"]
  c2a7bfb1_d4f1_c46f_534a_487b3119e542 -->|defined in| 8d2afa68_e16d_c06a_fbe2_08321c12e529
  df63338e_45e8_6a76_ac2b_e91282e81926["requires_reference()"]
  c2a7bfb1_d4f1_c46f_534a_487b3119e542 -->|method| df63338e_45e8_6a76_ac2b_e91282e81926
  c68592fc_89dd_f898_d403_cd3bd0d99880["evaluation_name()"]
  c2a7bfb1_d4f1_c46f_534a_487b3119e542 -->|method| c68592fc_89dd_f898_d403_cd3bd0d99880
  683480c7_cf8c_063d_1987_f4ee3331164a["input_keys()"]
  c2a7bfb1_d4f1_c46f_534a_487b3119e542 -->|method| 683480c7_cf8c_063d_1987_f4ee3331164a
  12e9b250_b454_000c_4858_a49730fa7a3e["_call()"]
  c2a7bfb1_d4f1_c46f_534a_487b3119e542 -->|method| 12e9b250_b454_000c_4858_a49730fa7a3e
  3d33cf76_6e72_55ec_9bae_9f4a88f05b68["_acall()"]
  c2a7bfb1_d4f1_c46f_534a_487b3119e542 -->|method| 3d33cf76_6e72_55ec_9bae_9f4a88f05b68
  0f3c36bd_438a_564b_36ee_74c330a7949a["_evaluate_strings()"]
  c2a7bfb1_d4f1_c46f_534a_487b3119e542 -->|method| 0f3c36bd_438a_564b_36ee_74c330a7949a
  773c62a1_eb70_8929_0b30_05bf9c46776c["_aevaluate_strings()"]
  c2a7bfb1_d4f1_c46f_534a_487b3119e542 -->|method| 773c62a1_eb70_8929_0b30_05bf9c46776c

Relationship Graph

Source Code

libs/langchain/langchain_classic/evaluation/embedding_distance/base.py lines 346–503

class EmbeddingDistanceEvalChain(_EmbeddingDistanceChainMixin, StringEvaluator):
    """Embedding distance evaluation chain.

    Use embedding distances to score semantic difference between
    a prediction and reference.

    Examples:
        >>> chain = EmbeddingDistanceEvalChain()
        >>> result = chain.evaluate_strings(prediction="Hello", reference="Hi")
        >>> print(result)
        {'score': 0.5}
    """

    @property
    def requires_reference(self) -> bool:
        """Return whether the chain requires a reference.

        Returns:
            True if a reference is required, `False` otherwise.
        """
        return True

    @property
    @override
    def evaluation_name(self) -> str:
        return f"embedding_{self.distance_metric.value}_distance"

    @property
    def input_keys(self) -> list[str]:
        """Return the input keys of the chain.

        Returns:
            The input keys.
        """
        return ["prediction", "reference"]

    @override
    def _call(
        self,
        inputs: dict[str, Any],
        run_manager: CallbackManagerForChainRun | None = None,
    ) -> dict[str, Any]:
        """Compute the score for a prediction and reference.

        Args:
            inputs: The input data.
            run_manager: The callback manager.

        Returns:
            The computed score.
        """
        vectors = self.embeddings.embed_documents(
            [inputs["prediction"], inputs["reference"]],
        )
        if _check_numpy():
            np = _import_numpy()
            vectors = np.array(vectors)
        score = self._compute_score(vectors)
        return {"score": score}

    @override
    async def _acall(
        self,
        inputs: dict[str, Any],
        run_manager: AsyncCallbackManagerForChainRun | None = None,
    ) -> dict[str, Any]:
        """Asynchronously compute the score for a prediction and reference.

        Args:
            inputs: The input data.
            run_manager: The callback manager.

        Returns:
            The computed score.
        """
        vectors = await self.embeddings.aembed_documents(
            [
                inputs["prediction"],
                inputs["reference"],
            ],
        )

Frequently Asked Questions

What is the EmbeddingDistanceEvalChain class?
EmbeddingDistanceEvalChain is a class in the langchain codebase, defined in libs/langchain/langchain_classic/evaluation/embedding_distance/base.py.
Where is EmbeddingDistanceEvalChain defined?
EmbeddingDistanceEvalChain is defined in libs/langchain/langchain_classic/evaluation/embedding_distance/base.py at line 346.
What does EmbeddingDistanceEvalChain extend?
EmbeddingDistanceEvalChain extends _EmbeddingDistanceChainMixin, StringEvaluator.

Analyze Your Own Codebase

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

Try Supermodel Free