Embedding 模型是什么:以 Qwen3-Embedding 与 pgvector 为例
本文是概念与接入示例整理,不包含本站设备的性能实测。模型规格以官方仓库说明为准,核验日期:2026-05-25。
Embedding 的用途
Embedding 模型会把文本转换成向量。语义接近的文本,在向量空间中通常更接近,因此可以用于文档语义检索、RAG 知识库的召回阶段、相似问答匹配、聚类或去重。
它不负责直接生成答案,而是帮助系统找到与问题更相关的资料。
Qwen3-Embedding 的型号不能混写
Qwen 官方仓库公布的 Qwen3-Embedding 系列包含多个规格,最大向量维度不同:
| 型号 | 参数规模 | 最大向量维度 | 最大序列长度 |
|---|---|---|---|
| Qwen3-Embedding-0.6B | 0.6B | 1024 | 32K |
| Qwen3-Embedding-4B | 4B | 2560 | 32K |
| Qwen3-Embedding-8B | 8B | 4096 | 32K |
因此,“qwen3-embedding 输出 1024 维”只有在明确指向 0.6B 规格 时才成立。建表时的向量维度必须和实际使用模型及输出配置一致。
使用 pgvector 保存向量
以下以 1024 维的 Qwen3-Embedding-0.6B 为示例展示 pgvector 表结构;它不代表已经在本站服务器跑过性能测试。
CREATE EXTENSION IF NOT EXISTS vector;
CREATE TABLE IF NOT EXISTS documents (
id BIGSERIAL PRIMARY KEY,
content TEXT NOT NULL,
embedding vector(1024),
metadata JSONB,
created_at TIMESTAMP DEFAULT NOW()
);
CREATE INDEX IF NOT EXISTS documents_embedding_idx
ON documents USING hnsw (embedding vector_cosine_ops);Python 查询结构示例
from __future__ import annotations
import os
from typing import Sequence
import psycopg2
import requests
OLLAMA_URL = os.environ.get("OLLAMA_URL", "http://localhost:11434")
DB_DSN = os.environ["DB_DSN"]
MODEL_NAME = os.environ.get("EMBED_MODEL", "qwen3-embedding:0.6b")
def get_embedding(text: str) -> Sequence[float]:
response = requests.post(
f"{OLLAMA_URL}/api/embed",
json={"model": MODEL_NAME, "input": text},
timeout=30,
)
response.raise_for_status()
return response.json()["embeddings"][0]
def search(query: str, top_k: int = 5) -> list[tuple[str, float]]:
vector = get_embedding(query)
with psycopg2.connect(DB_DSN) as conn, conn.cursor() as cur:
cur.execute(
"SELECT content, 1 - (embedding <=> %s::vector) AS similarity "
"FROM documents ORDER BY embedding <=> %s::vector LIMIT %s",
(str(list(vector)), str(list(vector)), top_k),
)
return cur.fetchall()
for content, score in search("Docker 容器怎么管理"):
print(f"[{score:.4f}] {content[:80]}...")代码仍需在真实模型名称、数据库连接和实际向量维度确定后再运行验证。
参考来源
- Qwen3-Embedding 官方仓库:https://github.com/QwenLM/Qwen3-Embedding
- pgvector 官方仓库:https://github.com/pgvector/pgvector
评论
游客无需注册即可评论。
你提交的昵称、邮箱、网址和评论内容会保存在服务端,用于展示评论身份、接收回复及必要的安全审计。
浏览器会本地保存已填游客信息和评论草稿,方便下次免填。
回复提醒会通过站内消息和邮件通知。