TestCosineSimilarity Class — langchain Architecture
Architecture documentation for the TestCosineSimilarity class in test_utils.py from the langchain codebase.
Entity Profile
Dependency Diagram
graph TD 4c1938a2_4a1a_35a8_d156_8347ebb84129["TestCosineSimilarity"] 9d1d5598_d06a_fe3a_f56b_4817abb4a2d1["test_utils.py"] 4c1938a2_4a1a_35a8_d156_8347ebb84129 -->|defined in| 9d1d5598_d06a_fe3a_f56b_4817abb4a2d1 c47691f3_cb84_dcdc_db85_f95bcc2cec1d["test_basic_cosine_similarity()"] 4c1938a2_4a1a_35a8_d156_8347ebb84129 -->|method| c47691f3_cb84_dcdc_db85_f95bcc2cec1d 69019c6d_5648_82aa_da72_478faa741c4d["test_identical_vectors()"] 4c1938a2_4a1a_35a8_d156_8347ebb84129 -->|method| 69019c6d_5648_82aa_da72_478faa741c4d 4f855709_7cde_2176_4ffc_84acab6254b0["test_opposite_vectors()"] 4c1938a2_4a1a_35a8_d156_8347ebb84129 -->|method| 4f855709_7cde_2176_4ffc_84acab6254b0 676197f1_1894_f037_f692_097e89a9ba02["test_zero_vector()"] 4c1938a2_4a1a_35a8_d156_8347ebb84129 -->|method| 676197f1_1894_f037_f692_097e89a9ba02 7482ab9a_8f0f_3235_fb2a_98f0c87b6cb6["test_multiple_vectors()"] 4c1938a2_4a1a_35a8_d156_8347ebb84129 -->|method| 7482ab9a_8f0f_3235_fb2a_98f0c87b6cb6 0f9ab9a5_2826_441c_97a9_d7209bd77373["test_numpy_array_input()"] 4c1938a2_4a1a_35a8_d156_8347ebb84129 -->|method| 0f9ab9a5_2826_441c_97a9_d7209bd77373 e6a9261f_91b0_6bd7_2134_f30c043adbee["test_mixed_input_types()"] 4c1938a2_4a1a_35a8_d156_8347ebb84129 -->|method| e6a9261f_91b0_6bd7_2134_f30c043adbee 342f769f_341b_6100_0448_5bcef47c5add["test_higher_dimensions()"] 4c1938a2_4a1a_35a8_d156_8347ebb84129 -->|method| 342f769f_341b_6100_0448_5bcef47c5add 95ce910b_b872_97fc_1b29_5f4e9f2253e9["test_empty_matrices()"] 4c1938a2_4a1a_35a8_d156_8347ebb84129 -->|method| 95ce910b_b872_97fc_1b29_5f4e9f2253e9 af2a855c_74c0_a052_4a2c_072829d3a103["test_single_empty_matrix()"] 4c1938a2_4a1a_35a8_d156_8347ebb84129 -->|method| af2a855c_74c0_a052_4a2c_072829d3a103 900445fe_99d6_9e7b_2109_48e0615875b3["test_dimension_mismatch_error()"] 4c1938a2_4a1a_35a8_d156_8347ebb84129 -->|method| 900445fe_99d6_9e7b_2109_48e0615875b3 2a5b7dd4_7fd8_26c2_efe3_bce66a4aca25["test_nan_and_inf_handling()"] 4c1938a2_4a1a_35a8_d156_8347ebb84129 -->|method| 2a5b7dd4_7fd8_26c2_efe3_bce66a4aca25 d222f185_b8af_f9cb_5174_9b7340cddfde["test_large_values()"] 4c1938a2_4a1a_35a8_d156_8347ebb84129 -->|method| d222f185_b8af_f9cb_5174_9b7340cddfde
Relationship Graph
Source Code
libs/core/tests/unit_tests/vectorstores/test_utils.py lines 13–164
class TestCosineSimilarity:
"""Tests for _cosine_similarity function."""
def test_basic_cosine_similarity(self) -> None:
"""Test basic cosine similarity calculation."""
# Simple orthogonal vectors
x: list[list[float]] = [[1, 0], [0, 1]]
y: list[list[float]] = [[1, 0], [0, 1]]
result = _cosine_similarity(x, y)
expected = np.array([[1.0, 0.0], [0.0, 1.0]])
np.testing.assert_array_almost_equal(result, expected)
def test_identical_vectors(self) -> None:
"""Test cosine similarity of identical vectors."""
x: list[list[float]] = [[1, 2, 3]]
y: list[list[float]] = [[1, 2, 3]]
result = _cosine_similarity(x, y)
expected = np.array([[1.0]])
np.testing.assert_array_almost_equal(result, expected)
def test_opposite_vectors(self) -> None:
"""Test cosine similarity of opposite vectors."""
x: list[list[float]] = [[1, 2, 3]]
y: list[list[float]] = [[-1, -2, -3]]
result = _cosine_similarity(x, y)
expected = np.array([[-1.0]])
np.testing.assert_array_almost_equal(result, expected)
def test_zero_vector(self) -> None:
"""Test cosine similarity with zero vector."""
x: list[list[float]] = [[0, 0, 0]]
y: list[list[float]] = [[1, 2, 3]]
with pytest.raises(ValueError, match="NaN values found"):
_cosine_similarity(x, y)
def test_multiple_vectors(self) -> None:
"""Test cosine similarity with multiple vectors."""
x: list[list[float]] = [[1, 0], [0, 1], [1, 1]]
y: list[list[float]] = [[1, 0], [0, 1]]
result = _cosine_similarity(x, y)
expected = np.array(
[
[1.0, 0.0],
[0.0, 1.0],
[1 / math.sqrt(2), 1 / math.sqrt(2)],
]
)
np.testing.assert_array_almost_equal(result, expected)
def test_numpy_array_input(self) -> None:
"""Test with numpy array inputs."""
x: np.ndarray = np.array([[1, 0], [0, 1]])
y: np.ndarray = np.array([[1, 0], [0, 1]])
result = _cosine_similarity(x, y)
expected = np.array([[1.0, 0.0], [0.0, 1.0]])
np.testing.assert_array_almost_equal(result, expected)
def test_mixed_input_types(self) -> None:
"""Test with mixed input types (list and numpy array)."""
x: list[list[float]] = [[1, 0], [0, 1]]
y: np.ndarray = np.array([[1, 0], [0, 1]])
result = _cosine_similarity(x, y)
expected = np.array([[1.0, 0.0], [0.0, 1.0]])
np.testing.assert_array_almost_equal(result, expected)
def test_higher_dimensions(self) -> None:
"""Test with higher dimensional vectors."""
x: list[list[float]] = [[1, 0, 0, 0], [0, 1, 0, 0]]
y: list[list[float]] = [[1, 0, 0, 0], [0, 0, 1, 0], [0, 0, 0, 1]]
result = _cosine_similarity(x, y)
expected = np.array([[1.0, 0.0, 0.0], [0.0, 0.0, 0.0]])
np.testing.assert_array_almost_equal(result, expected)
def test_empty_matrices(self) -> None:
"""Test with empty matrices."""
x: list[list[float]] = []
y: list[list[float]] = []
result = _cosine_similarity(x, y)
expected = np.array([[]])
np.testing.assert_array_equal(result, expected)
Source
Frequently Asked Questions
What is the TestCosineSimilarity class?
TestCosineSimilarity is a class in the langchain codebase, defined in libs/core/tests/unit_tests/vectorstores/test_utils.py.
Where is TestCosineSimilarity defined?
TestCosineSimilarity is defined in libs/core/tests/unit_tests/vectorstores/test_utils.py at line 13.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free