Ollama 嵌入模型支援

Ollama 已推出對嵌入模型(embedding models)的支持,讓開發者能夠構建檢索增強生成(RAG)應用程式,將文本提示與本地文件或外部數據相結合。此次更新可以在 Ollama 環境中直接生成向量嵌入(vector embeddings)——即語義含義的數值表示。

Understanding Embedding Models

嵌入模型將文本序列轉換為向量嵌入,這些是代表輸入語義含義的長數值陣列。這些陣列可以存儲在向量數據庫中,透過與其進行比較來搜尋語義相似而非僅依賴簡單關鍵字匹配的數據。

Supported Embedding Models

Ollama 提供多種不同規模的嵌入模型,以平衡效能與資源使用量:

Model Parameter Size
mxbai-embed-large 334M
nomic-embed-text 137M
all-minilm 23M

Implementation and Usage

在 Ollama 中生成向量嵌入是透過拉取模型並利用現有的介面來完成的。在執行 ollama pull mxbai-embed-large 後,使用者可以透過以下方法生成嵌入:

REST API

使用者可以使用 /api/embed 端點來生成嵌入:

curl http://localhost:11434/api/embed -d '{
  "model": "mxbai-embed-large",
  "input": "Llamas are members of the camelid family"
}'

Client Libraries

Ollama 為 Python 和 JavaScript 提供官方函式庫,以簡化嵌入流程:

Python:

ollama.embed(
  model='mxbai-embed-large',
  input='Llamas are members of the camelid family',
)

ollama.embed({
    model: 'mxbai-embed-large',
    input: 'Llamas are members of the camelid family',
})

Ollama 也與 LangChain 和 LlamaIndex 等熱門的編排框架整合。

Building a RAG Application

使用 Ollama 和 ChromaDB 等向量數據庫實現檢索增強生成(RAG)主要分為三個步驟:

  1. Generate Embeddings: 文本文件透過 mxbai-embed-large 等模型轉換為向量嵌入並存儲在集合中。
  2. Retrieve: 輸入提示被轉換為嵌入,接著用於查詢向量數據庫以檢取最語義相關的文件。
  3. Generate: 檢取到的文件作為上下文傳遞給生成模型(例如 llama2)以產生基於事實的回答。

Future Roadmap

Ollama 正在計劃多項更新以增強嵌入工作流,包括:

  • Batch embeddings: 同時處理多個輸入提示的能力。
  • OpenAI API Compatibility: 支援 /v1/embeddings OpenAI 相容端點。
  • Expanded Architectures: 支援更多嵌入模型架構,包括 ColBERT 和 RoBERTa。

Sources

相關