AI 一、Python中,使用Embeddings(嵌入)和向量数据库(Vector Database)

在Python中,使用Embeddings(嵌入)和向量数据库(Vector Database)常用于自然语言处理(NLP)任务,如文本相似度计算、搜索引擎优化等。Embeddings是将文本转换为固定大小的向量表示,这些向量可以通过距离度量来比较它们的相似度。常用的技术包括Word2Vec、GloVe、BERT等。

1. Embeddings

Embeddings通常是使用深度学习模型生成的,如BERT、GPT或使用预训练模型。使用这些嵌入,可以将文本转换为向量表示。

示例:使用transformers库和BERT生成文本嵌入
from transformers import BertTokenizer, BertModel
import torch

# 加载预训练的BERT模型和tokenizer
tokenizer = BertTokenizer.from_pretrained('bert-base-uncased')
model = BertModel.from_pretrained('bert-base-uncased')

# 示例文本
text = "Hello, how are you?"

# 编码文本并生成嵌入
inputs = tokenizer(text, return_tensors='pt')
with torch.no_grad():
    outputs = model(**inputs)
    embeddings = outputs.last_hidden_state.mean(dim=1)  # 获取句子级别的嵌入(平均池化)

print(embeddings)

2. 向量数据库

向量数据库(如FAISS、Weaviate等)用于存储和搜索嵌入向量。它们通过高效的索引结构(例如IVF、HNSW)来加速向量相似度搜索。

示例:使用FAISS进行向量相似度搜索

FAISS(Facebook AI Similarity Search)是一个高效的相似度搜索库,支持大规模的向量检索。

安装FAISS:

pip install faiss-cpu

然后使用FAISS创建一个简单的向量搜索系统:

import faiss
import numpy as np

# 创建示例数据:10个随机向量,每个向量是128维
d = 128  # 向量维度
nb = 1000  # 数据库大小
nq = 5  # 查询数量

# 生成数据库向量(1000个128维向量)
np.random.seed(1234)
xb = np.random.random((nb, d)).astype('float32')

# 创建查询向量(5个128维向量)
xq = np.random.random((nq, d)).astype('float32')

# 创建一个FAISS索引
index = faiss.IndexFlatL2(d)  # 使用L2距离
index.add(xb)  # 将数据库向量添加到索引中

# 查询最相似的向量
D, I = index.search(xq, 5)  # 查询5个最相似的向量

print("Distances:", D)
print("Indices:", I)

3. 使用向量数据库(Weaviate)

Weaviate是一个基于向量的开源数据库,支持图形和文本的语义搜索,通常用于存储和管理嵌入向量。

pip install weaviate-client

使用Weaviate来存储和查询向量:

import weaviate

# 连接到Weaviate服务
client = weaviate.Client("http://localhost:8080")

# 创建Schema(如果没有)
client.schema.create({
    "classes": [{
        "class": "TextData",
        "properties": [{
            "name": "text",
            "dataType": ["text"]
        }]
    }]
})

# 插入数据
data = [
    {"text": "Hello, how are you?"},
    {"text": "This is an example sentence."}
]

# 向Weaviate中插入向量
for item in data:
    client.data_object.create(item, "TextData")

总结

  • Embeddings:将文本转换为向量,可以使用预训练模型(如BERT)来生成。
  • 向量数据库:用于存储和查询向量,常见的选择包括FAISS和Weaviate。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

十方来财

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值