Source code for agentscope.service.retrieval.similarity
# -*- coding: utf-8 -*-"""Similarity functions for retrieval"""try:importnumpyasnpexceptImportError:np=Nonefromagentscope.service.service_statusimportServiceExecStatusfromagentscope.service.service_responseimportServiceResponsefromagentscope.constantsimportEmbedding
[docs]defcos_sim(a:Embedding,b:Embedding,)->ServiceResponse:"""Compute the cosine similarity between two different embeddings Args: a (`Embedding`): Embedding b (`Embedding`): Embedding Returns: `ServiceResponse`: A float. """ifnotlen(a)==len(b):returnServiceResponse(ServiceExecStatus.ERROR,"embedding length not equal",)a,b=np.array(a),np.array(b)returnServiceResponse(ServiceExecStatus.SUCCESS,np.dot(a,b)/(np.linalg.norm(a)*np.linalg.norm(b)),)