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"],
],
)
Source
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