_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.
Extends
Source
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