# bge-m3模型
def dm01():
from milvus_model.hybrid import BGEM3EmbeddingFunction
m3_path = "../rag_qa/models/bge-m3"
embedding_function = BGEM3EmbeddingFunction(model_name_or_path=m3_path, use_fp16=False, device='cpu')
# 对文本进行Embedding
embed = embedding_function(["黑马JAVA", "黑马大模型"])
# 打印Embedding后的结果
print("embed-->", embed)
print("embed.dense-->", embed["dense"])
print("embed.sparse-->", embed["sparse"])
row = embed["dense"][0]
print("row-->", row)
# reranker 模型
def dm02():
from sentence_transformers import CrossEncoder
reranker_path = "../rag_qa/models/bge-reranker-large"
reranker = CrossEncoder(reranker_path)
queries = ["什么是机器学习?"]
documents = [
"深度学习是机器学习的一个分支。",
"今天的天气很好。",
"机器学习是一种让计算机从数据中自动学习规律的方法。",
]
pairs = [[queries[0], doc] for doc in documents]
print("pairs-->", pairs)
scores = reranker.predict(pairs)
print(f'scores-->', scores)
# 输出排序结果
for doc, score in sorted(zip(documents, scores), key=lambda x: x[1], reverse=True):
print(f"{score:.4f} - {doc}")
if __name__ == '__main__':
# dm01()
dm02()