hugegraph-llm/src/hugegraph_llm/models/embeddings/base.py [33:50]:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
def similarity(
        embedding1: Union[List[float], np.ndarray],
        embedding2: Union[List[float], np.ndarray],
        mode: SimilarityMode = SimilarityMode.DEFAULT,
) -> float:
    """Get embedding similarity."""
    if isinstance(embedding1, list):
        embedding1 = np.array(embedding1)
    if isinstance(embedding2, list):
        embedding2 = np.array(embedding2)
    if mode == SimilarityMode.EUCLIDEAN:
        # Using - Euclidean distance as similarity to achieve the same ranking order
        return -float(np.linalg.norm(embedding1 - embedding2))
    if mode == SimilarityMode.DOT_PRODUCT:
        return np.dot(embedding1, embedding2)
    product = np.dot(embedding1, embedding2)
    norm = np.linalg.norm(embedding1) * np.linalg.norm(embedding2)
    return product / norm
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -



