1、使用 sentence-transformers 将文本编码为向量
安装 sentence-transformers
:
pip install -U sentence-transformers
在 huggingface 下载 all-MiniLM-L6-v2 模型权重(1_Pooling
是文件夹,里面包含一个 config.json
文件):
~$ ls
1_Pooling config_sentence_transformers.json model.safetensors sentence_bert_config.json tokenizer_config.json train_script.py
config.json data_config.json modules.json special_tokens_map.json tokenizer.json vocab.txt
运行下面的示例脚本,将一句话编码为一个向量:
from sentence_transformers import SentenceTransformer
model_path = "/hub/weights/all-MiniLM-L6-v2"
model = SentenceTransformer(model_path)
sentence = ['This framework generates embeddings for each input sentence']
embedding = model.encode(sentence)
print(len(embedding), len(embedding[0])) # 1 384
2、使用SQuAD-explorer数据集构建向量数据库
下载 SQuAD-explorer 数据集,这个数据集分为 Training Set 和 Dev Set ,Dev Set 更小更方便格式化预览数据集的结构,也更方便调试。
也可以使用其他的数据集,像第一节演示的那样,只需要是模型支持的语言的句子就可以编码成向量。
.json
文件加载后的第一层是一个Python dict
,包含两个key
:"version"
和"data"
,"data"
对应的值是一个list
,可以看一下这个list
的长度:
import json
with open("dev-v2.0.json", "r") as f:
data = json.load(f)
data = data["data"]
print(len(data)