Ollama Embedding Models Support
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)主要分为三个步骤:
- Generate Embeddings: 文本文档使用像
mxbai-embed-large这样的模型转换为向量嵌入并存储在集合中。 - Retrieve: 输入提示被转换为嵌入,然后用于查询向量数据库以检索语义最相关的文档。
- Generate: 检索到的文档作为上下文传递给生成模型(例如
llama2),以生成基于事实的回答。
Future Roadmap
Ollama 正在计划多项更新以增强嵌入工作流,包括:
- Batch embeddings: 同时处理多个输入提示的能力。
- OpenAI API Compatibility: 支持与 OpenAI 兼容的
/v1/embeddings端点。 - Expanded Architectures: 支持更多的嵌入模型架构,包括 ColBERT 和 RoBERTa。
Sources
- OriginalEmbedding models
相关
- Dispatch
- Dispatch
- Dispatch
- Dispatch
- Dispatch