大模型学习笔记:向量

Vector向量就把一段文字的语义信息,转换成一串固定长度的数字列表,让计算机能“看懂”文字的含义并做相似度计算。简单说就是让计算机连接不同的文本是否表达同一个意思。
文本嵌入模型通过深度学习等技术,从文本提取语义特征并映射为固定长度的数字序列。向量嵌入的过程,我们一般选择合适的文本嵌入模型来完成。
text-embedding-v1模型可以生成1536维的向量。生成向量维度越多,就更好的记录文本的语义特征,做语义匹配会更加精准。更多的向量会在计算、存储和匹配过程中,带来更大压力:tradeoff of precise and performance.
向量的匹配通过算法实现,如余弦相似度。向量的数字序列,共同决定了向量在高纬度空间中的方向长度,而余弦相似度主要就是撇去长度的影响,得到方向的夹角。夹角越小越相似,即方向相同。
余弦相似度:两个向量的点积 / 两个向量模长的乘积

import numpy as np

def get_dot(vec1, vec2):
    """
    计算两个向量的点积
    :param vec1: 向量1
    :param vec2: 向量2
    :return: 点积结果
    """
    if len(vec1) != len(vec2):
        raise ValueError("两个向量的长度必须相同")
    dot_product = np.dot(vec1, vec2)
    return dot_product

def get_norm(vec):
    """
    计算向量的范数
    :param vec: 向量
    :return: 范数结果
    """
    norm = np.linalg.norm(vec)
    return norm

def cosine_similarity(vec1, vec2):
    """
    计算两个向量的余弦相似度
    :param vec1: 向量1
    :param vec2: 向量2
    :return: 余弦相似度
    """
    ans = get_dot(vec1, vec2) / (get_norm(vec1) * get_norm(vec2))
    print(ans)
    return ans

if __name__ == "__main__":
    vec1 = [1, 2, 3]
    vec2 = [4, 5, 6]
    cosine_similarity(vec1, vec2)

 

 

Leave a Comment

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.