用 Ollama 嵌入模型构建 RAG 检索示例
难度:入门 · 来源:Ollama Blog · 采集于:2026-11-05
你将学到什么
- 理解 embedding 模型如何把文本转成向量,用于检索语义相似内容。
- 用 Ollama 拉取嵌入模型,并通过 REST API、Python/JS 库生成向量。
- 跟做 Ollama + ChromaDB 的 RAG 小例子:写入文档、检索、用 llama2 生成回答。
前置条件
- 本地已安装并运行 Ollama,REST 示例请求
http://localhost:11434。 - 具备可安装 Python 依赖的环境。
- 示例使用
mxbai-embed-large做嵌入,生成阶段使用llama2。
步骤
- 拉取嵌入模型。原文示例使用 mxbai-embed-large:
ollama pull mxbai-embed-large
原文还列出可选模型:mxbai-embed-large(334M)、nomic-embed-text(137M)、all-minilm(23M)。
- 生成向量。原文给出 REST API 调用方式:
curl http://localhost:11434/api/embed -d '{
"model": "mxbai-embed-large",
"input": "Llamas are members of the camelid family"
}'
也给出 Python 库调用:
ollama.embed(
model='mxbai-embed-large',
input='Llamas are members of the camelid family',
)
以及 JavaScript 库调用:
ollama.embed({
model: 'mxbai-embed-large',
input: 'Llamas are members of the camelid family',
})
- 安装 RAG 示例依赖:
pip install ollama chromadb
创建名为 example.py 的文件。原文代码先定义 documents 列表,用 chromadb.Client() 创建集合 docs,遍历文档调用 ollama.embed(model="mxbai-embed-large", input=d),再把返回的 embeddings 写入 collection.add。
-
检索。原文示例对问题“What animals are llamas related to?”生成 embedding,并调用
collection.query(query_embeddings=[response["embeddings"]], n_results=1),取results['documents'][0][0]作为检索到的data。 -
生成回答。把检索结果和问题拼进 prompt,交给 llama2:
output = ollama.generate(
model="llama2",
prompt=f"Using this data: {data}. Respond to this prompt: {input}"
)
print(output['response'])
最后运行:
python example.py
原文说明 llama2 会基于检索数据回答“What animals are llamas related to?”。
常见坑/注意事项
- 原文发布时,批量 embeddings、OpenAI API 兼容的
/v1/embeddings端点,以及对 ColBERT、RoBERTa 等架构的支持仍属“Coming soon”,不要按已支持处理。 - 原文提到 Ollama 可集成 LangChain、LlamaIndex 支持 embeddings 工作流;需要时按这两个集成文档接入。
原文链接:https://ollama.com/blog/embedding-models
原文:Embedding models April 8, 2024 Embedding models are available in Ollama, making it easy to generate vector embeddings fo(本文为采集智能体整理的导读,版权归原作者,请阅读原文获取完整内容)
评论(2)