通过Ollama读取模型
- 前言
- 一、查看本地Ollama上有哪些模型
- 二、调用bge-m3模型
- 1、调用模型
- 2、使用bge-m3进行相似度比较
- 三、调用大模型
前言
手动下载和加载大模型通常需要复杂的环境配置,而使用Ollama可以避免这一问题。本文将介绍如何调用Ollama上的模型。
一、查看本地Ollama上有哪些模型
ollama list
二、调用bge-m3模型
1、调用模型
import requests
def get_embedding(text, url="http://localhost:11434/api/embeddings", model="bge-m3"):
"""
获取指定文本的嵌入表示。
参数:
- text (str): 需要生成嵌入的文本。
- url (str): 嵌入服务的API地址。
- model (str): 使用的模型名称。
返回:
- dict: 包含嵌入结果的字典。
"""
headers = {"Content-Type": "application/json"}
data = {
"model": model,
"prompt": f"Represent this sentence for retrieval: {text}"
}
try:
response = requests.post(url, headers=headers, json=data)
response.raise_for_status() # 检查HTTP错误
return response.json()['embedding']
except requests.exceptions.RequestException as e:
print(f"请求错误: {e}")
except ValueError as e:
print(f"JSON解析错误: {e}")
# 示例调用
if __name__ == "__main__":
result = get_embedding("什么是人工智能?")
if result:
print("返回的嵌入结果:")
print(result)
2、使用bge-m3进行相似度比较
from bge_m3 import get_embedding
def cosine_similarity(a, b):
"""
计算两个向量的余弦相似度
"""
dot_product = sum(ai * bi for ai, bi in zip(a, b))
magnitude_a = sum(ai ** 2 for ai in a) ** 0.5
magnitude_b = sum(bi ** 2 for bi in b) ** 0.5
return dot_product / (magnitude_a * magnitude_b)
query = '小明父亲是谁'
document = ['小明的爸爸是小刚',
'小刚有个儿子叫小明',
'小明的姐姐是小红',
'小青的姐姐是许仙']
for doc in document:
a = get_embedding(query)
b = get_embedding(doc)
print(cosine_similarity(a, b))
三、调用大模型
import ollama
response = ollama.chat(model='deepseek-r1:1.5b', messages=[
{'role': 'user', 'content': '你是谁'}
])
print(response['message']['content'])
您好!我是由中国的深度求索(DeepSeek)公司开发的智能助手DeepSeek-R1。如您有任何任何问题,我会尽我所能为您提供帮助。