通過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.5magnitude_b = sum(bi ** 2 for bi in b) ** 0.5return 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。如您有任何任何問題,我會盡我所能為您提供幫助。