Database: Text数据转化为向量. (高维往低维映射)

2023-12-13 06:08:52

问题的提出来自于使用VectorDB:?http://t.csdnimg.cn/z1UMG

VectorDB提供一个数据和嵌入向量匹配的数据结构, 如果我们想要这个DB存储自己的数据, 则还需要计算出数据对应的嵌入向量.??

如何准确的构建Text数据嵌入向量(embedding)之间的关系, 是本篇文章解决的目标.

参考了几个模型后, 我从Bert和Word2vec中选择了后者, 因为我的笔记本是个轻薄本, 只能跑些小型模型.

🔗Word2vec链接:?https://github.com/dav/word2vec

目标: 将下面的Text转化为128维度.

"Your long input text here"

实现思路: 使用transformer库中的GPT2模型, 把文本转化为768维度的嵌入向量.?

以下为依赖库:

pip install transformers

完整代码如下, 初次运行时比较慢, 因为需要下载GPT2模型:?

from transformers import GPT2Tokenizer, GPT2Model

tokenizer = GPT2Tokenizer.from_pretrained('gpt2')
model = GPT2Model.from_pretrained('gpt2')

def text2vec(input):
    inputs = tokenizer(input, return_tensors="pt")
    outputs = model(**inputs)
    embeddings = outputs.last_hidden_state.mean(dim=1).squeeze().detach().numpy()
    return embedding

if __name__ == "__main__":
    text = "Your long input text here"
    embedding=text2vec(text)
    print(f"text={text}\nembeddings={embedding}\nshape={len(embedding)}")
    

文章来源:https://blog.csdn.net/qq_41754202/article/details/134842768
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。