使用Ollama Embedding API代替Azure
前一篇文章所用的是Azure API,但畢竟是要錢,有些公司可能會傾向全部都在本機端佈署,所以本篇文章示範如何使用Ollama提供的API,首先建立接收Response的類別:
public class EmbeddingResult
{
public string model { get; set; } = string.Empty;
public float[][] embeddings { get; set; } = Array.Empty<float[]>();
}
呼叫Ollama的Embedding API,並回傳float陣列:
HttpClient httpClient = new HttpClient();
httpClient.BaseAddress = new Uri("http://localhost:11434");
var requestModel = new
{
model = "nomic-embed-text",
input = textData.text
};
var jsonResponse = await httpClient.PostAsJsonAsync(@"/api/embed", requestModel);
Stream? stream = await jsonResponse.Content.ReadAsStreamAsync();
StreamReader sr = new StreamReader(stream);
string jsonStr = sr.ReadToEnd();
var embeddingResult = System.Text.Json.JsonSerializer.Deserialize<EmbeddingResult>(jsonStr);
return embeddingResult.embeddings[0];
呼叫Ollama API的方式很單純,其實重點在於你選擇的模型,nomic-embed-text模型目前測試下來,筆者覺得沒有到好用,所以時間會花比較多在測試合適的模型。
參考資料