戳戳猫的小窝
更新日志
关于
Embeddings(向量化)是一种将高维稀疏的特征向量转化为低维稠密的词向量的技术,可以用于降维、升维、相似度计算等。  例如,假设有一个二维的坐标系,我们使用[1,3]代表女人,[3,1]代表男人,[2,2]代表国家元首。 那么我们可以计算出女王在此坐标系中的坐标,“女人+国家元首=女王”,也就是[1,3]+[2,2]=[3,5]。 同理,我们也可以计算出国王的坐标,“男人+国家元首=国王”,即[3,1]+[2,2]=[5,3]。 上图只是为了说明Embeddings而写的一个简单的例子,简化了向量的维数。 正常情况下一个向量模型生成的向量的维数在几百到一千维左右,而且它存储的是浮点数,而不是整数。 ## 1 调用Embeddings模型 我们可以向https://api.siliconflow.cn/v1/embeddings发送请求,获取向量。 发送的内容为: ```json { "model": "BAAI/bge-m3", "input": "今天我要去学校上学" } ``` `"model": "BAAI/bge-m3"`表示我们使用`BAAI/bge-m3`模型作为向量模型。 `"input": "今天我要去学校上学"`是我们要向量的文本。 返回的结果如下: ```json { "object": "list", "data": [ { "embedding": [ -0.0111763785, 0.0522527, -0.01338085, -0.009313649, ......省略了中间的浮点数,共1024维 -0.004278984, -0.018126719, -0.00064136623, -0.04882566, 0.0007887722 ], "index": 0, "object": "embedding" } ], "model": "BAAI/bge-m3", "usage": { "prompt_tokens": 7, "completion_tokens": 0, "total_tokens": 7 } } ``` 通过向量化,我们获得了一个1024维的浮点数向量。 ## 2 Python实现 ```python from openai import OpenAI client = OpenAI( api_key="sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxx", base_url="https://api.siliconflow.cn/v1" ) response = client.embeddings.create( input="今天我要去学校上学", model="BAAI/bge-m3" ) print(response.data[0].embedding) ``` 同样会显示上面的embedding中的结果。 ## 3 函数化 ```python def get_embedding(text): client = OpenAI( api_key="sk-ueevfplclqkevhemiecndpzfuzzeiadfzlcxosmiqdlyqbrm", base_url="https://api.siliconflow.cn/v1" ) response = client.embeddings.create( input=text, model="BAAI/bge-m3" ) return response.data[0].embedding ``` 将代码用函数的形式编写,一遍之后的程序可以方便调用。
向量化