Home / Class/ _EmbeddingDistanceChainMixin Class — langchain Architecture

_EmbeddingDistanceChainMixin Class — langchain Architecture

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

Entity Profile

Dependency Diagram

graph TD
  d0582f8c_2e5f_12bf_68a0_bce7d9fd7e39["_EmbeddingDistanceChainMixin"]
  097a4781_5519_0b5d_6244_98c64eadc0d6["Chain"]
  d0582f8c_2e5f_12bf_68a0_bce7d9fd7e39 -->|extends| 097a4781_5519_0b5d_6244_98c64eadc0d6
  02ce964e_7ae0_baca_8a6a_784328c5c8a2["OpenAIEmbeddings"]
  d0582f8c_2e5f_12bf_68a0_bce7d9fd7e39 -->|extends| 02ce964e_7ae0_baca_8a6a_784328c5c8a2
  8d2afa68_e16d_c06a_fbe2_08321c12e529["base.py"]
  d0582f8c_2e5f_12bf_68a0_bce7d9fd7e39 -->|defined in| 8d2afa68_e16d_c06a_fbe2_08321c12e529
  ed61896e_0a5f_564e_a326_b78ad3c06d83["_validate_tiktoken_installed()"]
  d0582f8c_2e5f_12bf_68a0_bce7d9fd7e39 -->|method| ed61896e_0a5f_564e_a326_b78ad3c06d83
  3c8024c0_cc8b_41d2_e7bc_f293d76b987c["output_keys()"]
  d0582f8c_2e5f_12bf_68a0_bce7d9fd7e39 -->|method| 3c8024c0_cc8b_41d2_e7bc_f293d76b987c
  02f3c1c7_a1da_12a2_9b59_e729e9e30901["_prepare_output()"]
  d0582f8c_2e5f_12bf_68a0_bce7d9fd7e39 -->|method| 02f3c1c7_a1da_12a2_9b59_e729e9e30901
  dbaf3b63_5d10_a65d_83f7_3f9a26fe7d3f["_get_metric()"]
  d0582f8c_2e5f_12bf_68a0_bce7d9fd7e39 -->|method| dbaf3b63_5d10_a65d_83f7_3f9a26fe7d3f
  bf9f9f67_f5f8_2571_2dc1_e266897e01a4["_cosine_distance()"]
  d0582f8c_2e5f_12bf_68a0_bce7d9fd7e39 -->|method| bf9f9f67_f5f8_2571_2dc1_e266897e01a4
  7978ad6a_ad7c_8b2a_d31d_3a1e3883ef54["_euclidean_distance()"]
  d0582f8c_2e5f_12bf_68a0_bce7d9fd7e39 -->|method| 7978ad6a_ad7c_8b2a_d31d_3a1e3883ef54
  8f42f345_74a7_4765_d518_3075171577d4["_manhattan_distance()"]
  d0582f8c_2e5f_12bf_68a0_bce7d9fd7e39 -->|method| 8f42f345_74a7_4765_d518_3075171577d4
  36454c4e_837d_a1ca_590c_c73bc834adbc["_chebyshev_distance()"]
  d0582f8c_2e5f_12bf_68a0_bce7d9fd7e39 -->|method| 36454c4e_837d_a1ca_590c_c73bc834adbc
  370159a8_cf10_9186_6262_ecc8f7c4d513["_hamming_distance()"]
  d0582f8c_2e5f_12bf_68a0_bce7d9fd7e39 -->|method| 370159a8_cf10_9186_6262_ecc8f7c4d513
  282ac4a4_c95a_f131_7afb_31fcb1b30fcd["_compute_score()"]
  d0582f8c_2e5f_12bf_68a0_bce7d9fd7e39 -->|method| 282ac4a4_c95a_f131_7afb_31fcb1b30fcd

Relationship Graph

Source Code

libs/langchain/langchain_classic/evaluation/embedding_distance/base.py lines 93–343

class _EmbeddingDistanceChainMixin(Chain):
    """Shared functionality for embedding distance evaluators.

    Attributes:
        embeddings: The embedding objects to vectorize the outputs.
        distance_metric: The distance metric to use for comparing the embeddings.
    """

    embeddings: Embeddings = Field(default_factory=_embedding_factory)
    distance_metric: EmbeddingDistance = Field(default=EmbeddingDistance.COSINE)

    @pre_init
    def _validate_tiktoken_installed(cls, values: dict[str, Any]) -> dict[str, Any]:
        """Validate that the TikTok library is installed.

        Args:
            values: The values to validate.

        Returns:
            The validated values.
        """
        embeddings = values.get("embeddings")
        types_ = []
        try:
            from langchain_openai import OpenAIEmbeddings

            types_.append(OpenAIEmbeddings)
        except ImportError:
            pass

        try:
            from langchain_community.embeddings.openai import (
                OpenAIEmbeddings,
            )

            types_.append(OpenAIEmbeddings)
        except ImportError:
            pass

        if not types_:
            msg = (
                "Could not import OpenAIEmbeddings. Please install the "
                "OpenAIEmbeddings package using `pip install langchain-openai`."
            )
            raise ImportError(msg)

        if isinstance(embeddings, tuple(types_)):
            try:
                import tiktoken  # noqa: F401
            except ImportError as e:
                msg = (
                    "The tiktoken library is required to use the default "
                    "OpenAI embeddings with embedding distance evaluators."
                    " Please either manually select a different Embeddings object"
                    " or install tiktoken using `pip install tiktoken`."
                )
                raise ImportError(msg) from e
        return values

    model_config = ConfigDict(
        arbitrary_types_allowed=True,
    )

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

        Returns:
            The output keys.
        """
        return ["score"]

    def _prepare_output(self, result: dict) -> dict:
        parsed = {"score": result["score"]}
        if RUN_KEY in result:
            parsed[RUN_KEY] = result[RUN_KEY]
        return parsed

    def _get_metric(self, metric: EmbeddingDistance) -> Any:
        """Get the metric function for the given metric name.

Frequently Asked Questions

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

Analyze Your Own Codebase

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

Try Supermodel Free