Hypereal AIHypereal AI
Video StudioVideo AgentMedia APICoding LLMsMCP
视频 APISeedance 2.0KlingVeo 3.1Gemini Omni VideoHappyHorse 1.1HappyHorse 1.0全部模型 →
图像 APIGPT Image 2Nano BananaFLUXMidjourney Alternative全部模型 →
LLM APIClaude OpusClaude SonnetClaude FableGPT-5.5GPT-5.5 ProGemini 3 ProGemini 3.5 FastGemini 3.5 ThinkingDeepSeek全部模型 →
价格
API 参考示例集
企业版推广计划关于我们更新日志联系我们

价格

返回文章列表
AILLMTutorialOpen Source

如何在 Ollama 中使用 Qwen 3 Embedding 和 Reranker (2026)

在本地为 RAG 流水线部署 Qwen 3 嵌入模型

Hypereal AI TeamHypereal AI Team
10 min read
2026年2月6日
100+ AI 模型,一个 API

开始使用 Hypereal AI 构建

通过单个 API 访问 Kling、Flux、Sora、Veo 等模型。免费额度即可起步,可扩展至千万级。

获取免费 API Key查看文档

无需信用卡 • 10 万+ 开发者 • 企业级服务

如何通过 Ollama 使用 Qwen 3 Embedding 和 Reranker (2026)

Qwen 3 Embedding 和 Qwen 3 Reranker 是阿里巴巴最新推出的开源模型,专为检索增强生成(RAG)工作流量身定制。它们在 Embedding 基准测试中表现出顶尖性能,同时能够通过 Ollama 在消费级硬件上高效运行。

本指南将带你完成两个模型的本地部署,并演示如何将它们集成到 RAG 流程中,以及如何针对生产环境进行性能优化。

什么是 Embedding 和 Reranker 模型?

在开始配置之前,我们先明确这些模型在 RAG 流程中的作用:

模型 角色 作用
Embedding 模型 检索 (Retrieval) 将文本转换为数值向量,用于语义搜索
Reranker 模型 精排 (Refinement) 对检索到的文档进行重新打分,判断其与查询的相关性
LLM 生成 (Generation) 结合检索到的上下文生成最终答案

一个典型的 RAG 流程如下:

查询 → Embedding 模型 → 向量搜索 → Top-K 结果
     → Reranker 模型 → 重排后的 Top-N → LLM → 答案

Embedding 模型负责快速找到候选结果,而 Reranker 模型负责过滤以提升精度。两者结合使用,比起仅使用 Embedding 能显著提升回答质量。

Qwen 3 Embedding:模型版本

Qwen 3 提供多种尺寸的 Embedding 模型:

模型 参数量 维度 最大 Token MTEB 评分 所需显存 (VRAM)
qwen3-embedding-0.6b 0.6B 1024 8,192 68.2 ~1.5 GB
qwen3-embedding-1.5b 1.5B 1536 8,192 71.8 ~3 GB
qwen3-embedding-4b 4B 2560 32,768 74.1 ~6 GB
qwen3-embedding-8b 8B 4096 32,768 76.3 ~10 GB

对于大多数用例,4B 模型在质量和性能之间达到了最佳平衡。

第一步:安装 Ollama

如果你还没有安装 Ollama:

# macOS
brew install ollama

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

# Windows
# 从 https://ollama.com/download 下载

启动 Ollama 服务:

ollama serve

第二步:拉取 Qwen 3 Embedding 模型

# 拉取推荐的 4B 模型
ollama pull qwen3-embedding:4b

# 显存较低的系统拉取较小模型
ollama pull qwen3-embedding:1.5b

# 需要最高质量则拉取最大尺寸模型
ollama pull qwen3-embedding:8b

验证模型是否可用:

ollama list

第三步:生成 Embedding

使用 Ollama API

通过 REST API 生成向量:

curl http://localhost:11434/api/embed -d '{
  "model": "qwen3-embedding:4b",
  "input": "检索增强生成是如何工作的?"
}'

响应:

{
  "model": "qwen3-embedding:4b",
  "embeddings": [
    [0.0123, -0.0456, 0.0789, ...]
  ]
}

使用 Python

import ollama

# 单个文本向量化
response = ollama.embed(
    model="qwen3-embedding:4b",
    input="检索增强生成是如何工作的?"
)
embedding = response["embeddings"][0]
print(f"维度: {len(embedding)}")  # 4B 模型为 2560

# 批量向量化
documents = [
    "RAG 将检索与生成结合以提供准确答案。",
    "向量数据库存储向量以实现快速相似度搜索。",
    "Reranker 通过重新打分来提高检索进度。",
]

response = ollama.embed(
    model="qwen3-embedding:4b",
    input=documents
)
embeddings = response["embeddings"]
print(f"生成了 {len(embeddings)} 个向量")

第四步:设置 Qwen 3 Reranker

拉取 Reranker 模型:

ollama pull qwen3-reranker:4b

Reranker 的工作方式与 Embedding 模型不同。它不产生向量,而是输入“查询-文档对”并返回相关性分数。

使用 Reranker

import ollama
import json

def rerank(query: str, documents: list[str], model: str = "qwen3-reranker:4b") -> list[dict]:
    """根据与查询的相关性对文档进行重排。"""
    scored = []
    for doc in documents:
        # Reranker 需要特定的提示词格式
        prompt = f"Query: {query}\nDocument: {doc}\nRelevance:"
        response = ollama.generate(
            model=model,
            prompt=prompt,
            options={"temperature": 0}
        )
        # 从响应中解析相关性分数
        try:
            score = float(response["response"].strip())
        except ValueError:
            score = 0.0
        scored.append({"document": doc, "score": score})

    # 按分数降序排列
    scored.sort(key=lambda x: x["score"], reverse=True)
    return scored

# 示例用法
query = "RAG 有什么好处?"
documents = [
    "RAG 通过将回答建立在检索数据的基础上,减少了幻觉。",
    "东京现在的天气是 22 摄氏度。",
    "检索增强生成提高了 LLM 输出的事实准确性。",
    "Python 是一种在数据科学中流行的编程语言。",
]

results = rerank(query, documents)
for r in results:
    print(f"分数: {r['score']:.3f} | {r['document'][:60]}")

第五步:构建完整的 RAG 生命周期

下面是一个使用 Qwen 3 Embedding 进行检索并使用 Qwen 3 Reranker 进行精排的完整示例:

import ollama
import numpy as np
from typing import Optional

class SimpleRAG:
    def __init__(
        self,
        embed_model: str = "qwen3-embedding:4b",
        rerank_model: str = "qwen3-reranker:4b",
        llm_model: str = "qwen3:8b",
    ):
        self.embed_model = embed_model
        self.rerank_model = rerank_model
        self.llm_model = llm_model
        self.documents: list[str] = []
        self.embeddings: list[list[float]] = []

    def add_documents(self, documents: list[str]):
        """向知识库添加文档。"""
        self.documents.extend(documents)
        response = ollama.embed(model=self.embed_model, input=documents)
        self.embeddings.extend(response["embeddings"])
        print(f"已添加 {len(documents)} 个文档。总计: {len(self.documents)}")

    def _cosine_similarity(self, a: list[float], b: list[float]) -> float:
        a, b = np.array(a), np.array(b)
        return np.dot(a, b) / (np.linalg.norm(a) * np.linalg.norm(b))

    def retrieve(self, query: str, top_k: int = 10) -> list[dict]:
        """通过 Embedding 相似度检索 Top-K 文档。"""
        query_embedding = ollama.embed(
            model=self.embed_model, input=query
        )["embeddings"][0]

        scored = []
        for i, doc_embedding in enumerate(self.embeddings):
            score = self._cosine_similarity(query_embedding, doc_embedding)
            scored.append({"index": i, "document": self.documents[i], "score": score})

        scored.sort(key=lambda x: x["score"], reverse=True)
        return scored[:top_k]

    def rerank(self, query: str, candidates: list[dict], top_n: int = 3) -> list[dict]:
        """使用 Reranker 模型重新排列候选结果。"""
        for candidate in candidates:
            prompt = f"Query: {query}\nDocument: {candidate['document']}\nRelevance:"
            response = ollama.generate(
                model=self.rerank_model,
                prompt=prompt,
                options={"temperature": 0}
            )
            try:
                candidate["rerank_score"] = float(response["response"].strip())
            except ValueError:
                candidate["rerank_score"] = 0.0

        candidates.sort(key=lambda x: x["rerank_score"], reverse=True)
        return candidates[:top_n]

    def query(self, question: str, top_k: int = 10, top_n: int = 3) -> str:
        """完整 RAG 流程:检索、重排、生成。"""
        # 步骤 1: 检索
        candidates = self.retrieve(question, top_k=top_k)

        # 步骤 2: 重排
        reranked = self.rerank(question, candidates, top_n=top_n)

        # 步骤 3: 生成
        context = "\n\n".join([r["document"] for r in reranked])
        prompt = f"""请根据提供的上下文回答问题。

上下文:
{context}

问题: {question}

回答:"""

        response = ollama.generate(model=self.llm_model, prompt=prompt)
        return response["response"]


# 使用示例
rag = SimpleRAG()

# 添加您的知识库内容
rag.add_documents([
    "Qwen 3 Embedding 能够生成高质量的向量表示。",
    "Ollama 让您能在消费级硬件上本地运行模型。",
    "Reranker 通过对检索到的文档重新打分来提高精度。",
    "RAG 流程结合了检索和生成,以获得更好的答案。",
    "像 ChromaDB 和 Qdrant 这样的向量数据库可以高效存储向量。",
])

# 提出问题
answer = rag.query("Reranker 是如何改进 RAG 流程的?")
print(answer)

第六步:在 LangChain 或 LlamaIndex 中使用

LangChain 集成

from langchain_ollama import OllamaEmbeddings
from langchain_community.vectorstores import Chroma

# 创建向量模型实例
embeddings = OllamaEmbeddings(
    model="qwen3-embedding:4b",
    base_url="http://localhost:11434",
)

# 与 ChromaDB 配合使用
vectorstore = Chroma.from_texts(
    texts=["文档1", "文档2", "文档3"],
    embedding=embeddings,
    collection_name="my_collection",
)

# 搜索
results = vectorstore.similarity_search("我的查询", k=5)

LlamaIndex 集成

from llama_index.embeddings.ollama import OllamaEmbedding

embed_model = OllamaEmbedding(
    model_name="qwen3-embedding:4b",
    base_url="http://localhost:11434",
)

# 在 LlamaIndex 工作流中使用
from llama_index.core import VectorStoreIndex, SimpleDirectoryReader

documents = SimpleDirectoryReader("./data").load_data()
index = VectorStoreIndex.from_documents(
    documents,
    embed_model=embed_model,
)

性能调优

批处理优化

对于大规模文档集,请调整批大小以平衡速度和内存:

# 分批处理文档
batch_size = 32
for i in range(0, len(documents), batch_size):
    batch = documents[i:i + batch_size]
    embeddings = ollama.embed(model="qwen3-embedding:4b", input=batch)

硬件建议

显存 (VRAM) 推荐配置
4 GB Embedding: 0.6B, Reranker: 无, LLM: 1.5B
8 GB Embedding: 1.5B, Reranker: 1.5B, LLM: 4B
16 GB Embedding: 4B, Reranker: 4B, LLM: 8B
24 GB Embedding: 8B, Reranker: 4B, LLM: 14B

量化

Ollama 模型通常提供量化格式。对于 Embedding 模型,精度更为关键:

# 对 Embedding 模型使用 Q8 量化(获得更好质量)
ollama pull qwen3-embedding:4b-q8_0

# Reranker 和 LLM 使用 Q4 即可
ollama pull qwen3-reranker:4b-q4_K_M

故障排除

问题 解决方案
"Model not found" 运行 ollama pull qwen3-embedding:4b
显存溢出 (Out of memory) 使用较小的模型变体或增加交换内存
向量化速度慢 减少批大小或启用 GPU 加速
检索质量低 升级到 8B Embedding 模型
Reranker 分数不一致 确保 temperature 设置为 0

结论

将 Qwen 3 Embedding 和 Reranker 模型与 Ollama 结合,你可以获得一个完全本地化、保护隐私且性能媲美云端方案的 RAG 流程。4B 版本在质量和性能之间提供了极佳的平衡,而 8B 模型则将性能推向了顶尖水平。

如果你的 RAG 流程涉及根据检索信息生成图像、视频或音频等媒体内容,Hypereal AI 提供了快速且经济的 AI 媒体生成 API。将本地检索与云端生成结合,即可打造强大的端到端 AI 工作流。

相关文章

2026 年最佳开源 RAG 框架

14 min read

如何下载与使用 Ollama:详细步骤指南 (2026)

11 min read

如何使用 Ollama:零基础新手全指南 (2026)

10 min read

On this page

  • 如何通过 Ollama 使用 Qwen 3 Embedding 和 Reranker (2026)
  • 什么是 Embedding 和 Reranker 模型?
  • Qwen 3 Embedding:模型版本
  • 第一步:安装 Ollama
  • 第二步:拉取 Qwen 3 Embedding 模型
  • 第三步:生成 Embedding
  • 使用 Ollama API
  • 使用 Python
  • 第四步:设置 Qwen 3 Reranker
  • 使用 Reranker
  • 第五步:构建完整的 RAG 生命周期
  • 第六步:在 LangChain 或 LlamaIndex 中使用
  • LangChain 集成
  • LlamaIndex 集成
  • 性能调优
  • 批处理优化
  • 硬件建议
  • 量化
  • 故障排除
  • 结论
Desktop agent

Download Hypereal Agent

Run a local AI media workspace for image generation, video prompts, model selection, credit tracking, and saved artifacts.

MacWindows
v0.1.2Requires a hypereal.cloud API keyRelease manifest
Hypereal Agent desktop app screenshot

立即开始构建

立即开始构建
LogoHypereal AI
所有系统正常
LLM API
  • Hypereal SDK
  • MCP Server
  • Enterprise API
  • All LLM Models
  • Claude Fable 5
  • Claude Opus 4.7
  • Claude Sonnet 4.6
  • GPT-5.5
  • Claude Haiku 4.5
  • GPT-5.5 Pro
  • Gemini 3.1 Pro Preview
  • Gemini 3.5 Thinking
  • Gemini 3.5 Fast
  • DeepSeek V4 Pro
  • Kimi K2.6
  • GLM 5.2
  • Claude API in China
  • OpenAI API in China
AI API
  • AI API Overview
  • Seedance 2.0 API
  • Kling 3.0 API
  • Veo 3.1 API
  • FLUX API
  • GPT Image 2 API
  • vs WaveSpeed
  • vs fal.ai
  • vs Replicate
  • vs KIE.ai
  • vs OpenRouter
  • vs Together AI
  • vs SiliconFlow
  • Midjourney Alternative
  • Higgsfield Alternative
  • OpenRouter Alternative
视频模型
  • Google Veo 3.1 API
  • Kling 3.0 API
  • Kling O3 Pro API
  • Seedance 2.0 API
  • HappyHorse 1.1 API
  • HappyHorse 1.0 API
  • WAN 2.7 API
  • WAN Video API
  • Grok Video API
  • Hunyuan Video API
  • PixVerse V6 API
  • Pika Video API
  • Luma Dream Machine API
  • MiniMax Video API
  • Vidu Video API
  • Gemini Omni Video API
图像模型
  • NanoBanana 2 API
  • FLUX 2 API
  • GPT Image 1 API
  • Grok Image API
  • SeeDream V5 API
  • Imagen 4 API
  • Ideogram API
  • Recraft API
  • DALL-E 3 API
  • Stable Diffusion API
  • Gemini Image API
工具
  • Face Swap API
  • Video Face Swap API
  • Virtual Try-On API
  • AI Talking Avatar API
  • Lip Sync API
  • OmniHuman Avatar API
  • Tripo3D H3.1 API
  • ElevenLabs TTS API
  • Fish Audio TTS API
  • Whisper STT API
  • Lyria Music API
生成器
  • Video Agent
  • AI 图像生成器
  • AI 视频生成器
合集
  • 最佳视频模型
  • 最佳图像模型
  • Seedance 2.0
  • WAN 2.7
  • Qwen Image 2
  • Grok AI
  • Seedance 1.5
  • 运动控制
  • 内容检测
  • 目标检测
公司
  • 关于我们
  • 文档
  • Hypereal SDK
  • Cookbook
  • 更新日志
  • 博客
  • 联系我们
  • 常见问题
  • 路线图
  • 企业版
  • 联盟分销计划
  • Be a Creator
  • 开发者计划
法律
  • 隐私政策
  • 服务条款
  • 退款政策
  • Cookie 政策
  • 价格
  • 所有模型
  • 站点地图
  • Status
© 版权所有 2026。保留所有权利。
TwitterGitHubLinkedInYouTubeEmail