为了实现从 Milvus 中获取数据,并基于嵌入向量重新排序的功能,你可以参考以下步骤对原代码进行完善和修改。
关键问题和修改:
- Milvus 数据获取:确保
query()
能获取插入的数据,尤其是向量。确保Collection
正确连接,并且output_fields
中字段名匹配 Milvus 中的定义。 - 加载数据:插入数据后,需要通过
load()
加载数据,确保数据在 Milvus 中可见。 - 优化向量查询逻辑:可以考虑使用
search()
方法,而不是直接从 Milvus 查询所有数据,再计算相似度。search()
可以直接根据查询文本的向量进行向量相似度搜索。
代码修改:
import torch
from transformers import AutoTokenizer, AutoModel
import numpy as np
from pymilvus import Collection, connections
# 计算余弦相似度的函数
def cos_sim(a, b):
return np.dot(a, b) / (np.linalg.norm(a) * np.linalg.norm(b))
# 生成文本的嵌入向量
def embed_texts(texts, model, tokenizer):
"""
使用 Jina-embeddings-v2 模型将文本转化为嵌入向量
"""
inputs = tokenizer(texts, return_tensors='pt'