向量数据真正长什么样子呢?如何将一段非结构化的数据,例如文本,转换为向量数据呢?
以下是一个简单的示例:
1、如果用Python语言编程,则需要用到Sentence Transformers库,它是一个专门用于生成句子向量的Python库,通过使用统一的API将句子或段落编码为固定长度的向量表示。
安装sentence transformers 库
#pip install sentence-transformers
在你的Python文件中,编写Python代码,第一行引入sentence transformers库
from sentence_transformers import SentenceTransformer #引入SentenceTransformer库
2、然后需要根据任务需求选择一个的AI预训练模型:
AI预训练模型就像个多语言语义转换器——你可以把任何语言的句子丢给它(如中文“它是一只猫”或英文“it is a cat”),它可以立刻输出一串代表这段数据语义的数字向量。
在这里,我们选择的预训练模型为“all-MiniLM-L6-v2”(当然,还有其他很多模型可以选择)
你可以在HugginFace上下载这个模型,也可以在国内很多镜像网站上下载这个模型。例如 gitcode.com/hf_mirrors/…
下载后存储到本地目录(放在与python代码同一目录)下(可以看到,所谓的预训练模型,是由一组文件组成的)
编写Python代码,加载此模型
# 1. 加载预训练模型
model = SentenceTransformer('./all-MiniLM-L6-v2') # 支持多语言的小型模型
3、通过SentenceTransformer标准API将输入文本向量化:
# 2. 输入文本
sentence = "它是一只猫"
# 3. 将文本转换为向量
embeddings = model.encode(sentence)
print(f"{embeddings}")
运行你的代码,就可以看到“它是一只猫”这段文字,用“all-MiniLM-L6-v2”这个模型,转化为向量后的数据长得什么样子了。注意“all-MiniLM-L6-v2”模型转化的向量是384个维度
以下是完整代码:
from sentence_transformers import SentenceTransformer #引入SentenceTransformer库
# 1. 加载预训练模型
model = SentenceTransformer('./all-MiniLM-L6-v2') # 支持多语言的小型模型
# 2. 输入文本
sentence = "它是一只猫"
# 3. 将文本转换为向量
embeddings = model.encode(sentence)
print(f"{embeddings}")
文章转载自: 两棵雪松