什么是向量

本文主要介绍向量的基本概念,包括向量维度、距离度量方式、数据类型等,通过基本概念快速了解什么是向量,以及如何更好地使用向量检索服务。

向量的基本概念

在AI领域,向量是描述对象特征的抽象表达。以DashScope上的通用文本向量模型为例,通过输入一段文本,通用文本向量模型会将这段文本变成一个向量,将文本变成向量的过程叫 Embedding

调用示例

输入文本:“衣服的质量杠杠的,很漂亮,不枉我等了这么久啊,喜欢,以后还来这里买”

import dashscope
from dashscope import TextEmbedding

dashscope.api_key = {YOUR API KEY}

def embed_with_str():
    resp = TextEmbedding.call(
        model=TextEmbedding.Models.text_embedding_v1,
        input='衣服的质量杠杠的,很漂亮,不枉我等了这么久啊,喜欢,以后还来这里买')
    print(resp)


if __name__ == '__main__':
    embed_with_str()

调用输出

{
  "status_code": 200,
  "request_id": "617b3670-6f9e-9f47-ad57-997ed8aeba6a",
  "code": "",
  "message": "",
  "output": {
    "embeddings": [
      {
        "embedding": [
          0.09393704682588577,
          2.4155092239379883,
          -1.8923076391220093,
          .,
          .,
          .

        ],
        "text_index": 0
      }
    ]
  },
  "usage": {
    "total_tokens": 23
  }
}

在返回中embedding字段中的内容就是一条向量。

 [
    0.09393704682588577,
    2.4155092239379883,
    -1.8923076391220093,
    .,
    .,
    .
]

什么是向量维度和向量数据类型

从上文中可以看出,向量实际上是一串数字的组合,也就是一个数组,这个数组代表了这段文本的特征。向量的维度即为这个数组中元素的个数,例如,这个数组中有100个元素,那么向量就是100维的。仍以DashScope上的通用文本向量为例,通用文本向量返回的向量中都有1536个元素,则向量的维度为1536维,且返回的向量维度是不变的。从通用文本向量的说明文档中也可以查看向量的维度,如下表所示。

模型中文名

模型英文名

向量维度

单次请求文本最大行数

单行最大输入字符长度

支持语种

通用文本向量

text-embedding-v1

1536

25

2048

中文、英语、西班牙语、法语、葡萄牙语、印尼语。

而向量的数据类型指的是向量数组中元素的数据类型。还是以DashScope上通用文本向量为例,返回向量的元素均为Float型,则向量的数据类型为Float型。换言之,如果向量为[1,2,3,4],向量中的元素都为整数型,那么这个向量则为4维的INT型向量。

说明

向量的维度和数据类型,取决于您使用的Embedding的模型,不同的Embedding模型,向量的维度和数据类型可能也是不一样的。

什么是向量的距离度量方式

上文中讲到向量实际上是一个数组,那么向量与向量之间的相似性,通常使用向量之间的距离这个参数来衡量。向量检索服务(DashVector)支持三种典型的距离度量方式。

余弦距离 Cosine

余弦相似度是指两个向量之间的夹角余弦值,它的计算公式为:

image.png

其中,A B 分别表示两个向量,n 表示向量的维度,· 表示向量的点积,||A||,||B||分别表示两个向量的模长。

image.png

而在DashVector中使用余弦距离来表示相似度,余弦距离=1-余弦相似度,所以余弦距离取值范围为[0, 2],越接近 0 表示越相似,越接近 2 表示越不相似。余弦距离度量的计算公式如下:

image.png

欧式距离 Euclidean

欧几里得距离是指两个向量之间的距离,欧式距离越小,表示两个向量越相似,它的计算公式为:

image.png

其中, A B 分别表示两个向量,n 表示向量的维度。

image.png

点积 DotProduct

向量的点积相似度是指两个向量之间的点积值,也称内积。点积(内积)结果越大,代表越相似,它的计算公式为:

image.png

其中,AB 分别表示两个向量,n 表示向量的维度。

image.png

常见模型及向量参数设置参考

模型名称

向量维度

向量数据类型

距离度量方式(建议)

DashScope通用文本向量

1536

Float(32)

Cosine

DashScope OnePeace多模态向量表征

1536

Float(32)

Cosine

OpenAI 文本向量

1536

Float(32)

Cosine

在创建Collection时,可根据您使用的模型,选择对应的参数。image.png