Ollama + Jina Embeddings:本地运行超强语义向量模型

4 阅读3分钟

Jina AI 出品的 Embeddings 模型现已登陆 Ollama,可以在本地运行高性能语义向量服务。


一、为什么需要本地 Embedding?

在 RAG(检索增强生成)系统中,Embedding(向量化) 是核心环节:

文档 → Embedding → 向量存储
查询 → Embedding → 向量检索

之前的选择:

  • 云端 API:效果好,但有成本、数据隐私顾虑
  • 本地模型:开源选择少,效果参差不齐

现在,Jina Embeddings 提供了新选择。


二、Jina Embeddings 简介

2.1 模型系列

模型参数特点
jina-embeddings-v2-small-en33M轻量,快速
jina-embeddings-v2-base-en137M平衡性能与效果
jina-embeddings-v2-base-de137M德英双语
jina-embeddings-v2-base-es137M西班牙英双语

2.2 核心技术

特性说明
架构JinaBERT(基于 BERT)
序列长度支持 8192 token
训练数据4亿+ 句子对
推理单 GPU 即可运行

2.3 性能表现

根据 LlamaIndex 的测试:

最佳组合:Jina Embeddings + Cohere Reranker

在 Hit Rate 和 MRR 指标上表现最优。


三、快速开始

3.1 安装 Ollama

# macOS
brew install ollama

# Linux
curl -fsSL https://ollama.com/install.sh | sh

3.2 下载模型

# 拉取 Jina Embeddings 模型
ollama pull jina/jina-embeddings-v2-base-en

3.3 使用方式

REST API

curl http://localhost:11434/api/embeddings -d '{
  "model": "jina/jina-embeddings-v2-base-en",
  "prompt": "The sky is blue because of Rayleigh scattering"
}'

响应:

{
  "embedding": [0.123, -0.456, 0.789, ...],
  "model": "jina/jina-embeddings-v2-base-en",
  "done": true
}

Python

import ollama

response = ollama.embeddings(
    model='jina/jina-embeddings-v2-base-en',
    prompt='The sky is blue because of Rayleigh scattering'
)

embedding = response['embedding']
print(f"向量维度: {len(embedding)}")

JavaScript

const response = await ollama.embeddings({
  model: 'jina/jina-embeddings-v2-base-en',
  prompt: 'The sky is blue because of Rayleigh scattering'
});

console.log(response.embedding);

四、实战:构建本地 RAG

4.1 架构

┌─────────────────────────────────────┐
│         用户查询                     │
└─────────────────┬───────────────────┘
                  │
                  ▼
┌─────────────────────────────────────┐
│   Ollama (Jina Embeddings)          │
│   将查询转为向量                     │
└─────────────────┬───────────────────┘
                  │
                  ▼
┌─────────────────────────────────────┐
│        向量检索 (Chroma/Qdrant)     │
└─────────────────┬───────────────────┘
                  │
                  ▼
┌─────────────────────────────────────┐
│         LLM 生成答案                 │
└─────────────────────────────────────┘

4.2 完整代码示例

from ollama import embeddings
import chromadb

# 1. 生成查询向量
query = "什么是机器学习?"
query_embedding = embeddings(
    model='jina/jina-embeddings-v2-base-en',
    prompt=query
)['embedding']

# 2. 向量检索
client = chromadb.Client()
collection = client.get_collection("knowledge_base")

results = collection.query(
    query_embeddings=[query_embedding],
    n_results=3
)

# 3. 输出结果
for doc in results['documents'][0]:
    print(doc)

五、与云端 API 对比

维度Jina (Ollama)OpenAI API
成本免费(GPU自备)按调用付费
隐私✅ 完全本地❌ 数据上传
延迟本地网络依赖网络
效果接近云端最佳
维护需运维托管理

六、适用场景

场景推荐
企业内部知识库✅ 本地部署,数据不出网
个人/小团队项目✅ 零成本
大规模生产环境⚠️ 考虑云端 API
对延迟敏感⚠️ 需优化硬件

七、硬件要求

模型GPU显存
small (33M)可选~2GB
base (137M)推荐~4GB

消费级显卡(如 RTX 3060)即可运行。


八、总结

Jina Embeddings 登陆 Ollama 后,本地 RAG 变得更简单:

优点说明
✅ 免费开源无 API 费用
✅ 隐私安全数据不出本地
✅ 效果出色接近商业 API
✅ 8192 序列长文档处理能力强

推荐组合:Jina Embeddings + bge-reranker-large


参考资料


💡 提示:如果你的 GPU 显存有限,可以先从 jina-embeddings-v2-small-en 开始体验!