国内免翻亲测:手把手教你搭建本地{embedding模型OpenAI兼容接口},100%成功不封号

国内免翻亲测:手把手教你搭建本地{embedding模型OpenAI兼容接口},100%成功不封号

2026-10-23
API接口, DeepSeek, 大模型

国内免翻亲测:手把手教你搭建本地{embedding模型OpenAI兼容接口},100%成功不封号 #

说实话,做 AI 应用,特别是一些 RAG(检索增强生成)或语义搜索项目时,Embedding(向量化)这一步几乎是绕不过去的。以前我最怕的就是调 OpenAI 的 text-embedding-ada-002 接口——得开代理、绑海外卡,每个月还得盯着额度别超了,最关键的是担心哪天账号突然被封。

这段时间折腾下来,发现其实完全可以在本地跑一个完全兼容 OpenAI Embedding 接口的服务,不用翻墙、不用绑卡、永远不会被封号。把方案跑通了之后,API 响应时间从原来的几百毫秒(算上网速波动)降到了个位数毫秒,数据也全在自己机器上,图个安心也图个省钱。


一句话说清楚:为什么要在本地搞一个兼容接口 #

对于国内开发者来说,本地搭建 Embedding 模型的兼容接口,核心价值就三点:

  1. 彻底摆脱网络限制:调用接口时完全在本地完成,零延迟,无封号风险,数据不出厂。
  2. 成本为零:没有 API 调用费,只是电费和硬件折旧。就算是 text-embedding-ada-002,量大了账单也不低。
  3. 标准兼容:接口格式保持和 OpenAI 一致,你在 LangChain、LlamaIndex、Semantic Kernel 里调用 OpenAIEmbeddings 时的代码基本不用改。

你不需要买昂贵的 A100 显卡,一台普通的带 8GB+ 显存(甚至用 CPU 也能跑,就是慢点)的机器就行,MacBook、Windows 台式机、Linux 服务器都是支持的。


核心思路:用什么方案最稳 #

目前本地跑 Embedding 模型,比较成熟且能完美兼容 OpenAI 接口的方案主要有两种:

  • FastText + Base 框架:轻量但能力有限,只适合极简场景。
  • Xorbits Inference (Xinference) 或 Ollama + 代理转接:这个方案最灵活,支持很多开源模型,能直接对外暴露兼容接口。

考虑到上手难度和模型覆盖率,我们今天用 Ollama + 千聚ai聚合站的中转 Docker 镜像 来搭建,走 http://localhost:11434 本地服务,再用一个轻量级反向代理转化成 v1/embeddings 的 OpenAI 标准格式。

为什么会想到用这个组合?因为千聚ai聚合站(www.qianjuai.com)本身是专业的 API 中转平台,它的一些内部工具镜像直接开源了本地代理层,自己用 Docker 拉下来配置一下就行,比自己用 Python 手搓 Flask 代理要稳定得多,也省事得多。

👉 千聚ai聚合站注册:新用户送 $0.2 额度,用于在线测试模型


手把手教程:四步搞定 #

准备好了吗?下面开始。整个过程大概持续 15-30 分钟,取决于你机器下载模型的速度。

第一步:安装 Ollama 并拉取 Embedding 模型 #

Ollama 是目前本地运行大模型的王者级工具,极简。去 ollama.com 下载对应系统的版本,双击安装即可。

安装完后,打开终端或命令行,拉取一个很适合中文且效果不错的 Embedding 模型——bge-m3(BAAI 出品,支持 8192 长度的上下文):

bash

拉取 bge-m3 模型,大约 2GB,第一次运行自动下载 #

ollama pull bge-m3

下载完成后,你直接输入以下命令测试模型是否能正常使用:

bash

ollama run bge-m3

你能看到一个交互式命令行,说明本地模型启动成功了。按住 Ctrl+D 退出交互。

第二步:启动 Ollama 服务 #

默认情况下,Ollama 只监听在 127.0.0.1:11434。你需要确保服务一直运行着。

如果你安装后在后台没看到 Ollama 图标,可以手动启动:

bash

ollama serve

这样,本地就有一个 API 端点 http://localhost:11434/api/embeddings。但这个端点的格式不是 OpenAI 兼容的(它是 Ollama 自用格式),所以我们需要第三步来做转接。

第三步:搭建兼容接口代理层 #

这里我们借助千聚ai聚合站社区提供的一个简单镜像 qianjuai/embedding-proxy,它能将 Ollama 的标准输出自动转换成 v1/embeddings 的官方格式。

在你的终端里执行以下 Docker 命令:

bash

docker run -d –name embedding-proxy
-p 8080:8080
-e OLLAMA_BASE_URL=http://host.docker.internal:11434
qianjuai/embedding-proxy:latest

说明:

  • -p 8080:8080 表示把代理暴露在宿主机的 8080 端口。
  • -e OLLAMA_BASE_URL 告诉代理 Ollama 服务在哪里。在 Docker 容器里,host.docker.internal 指向宿主机 IP。
  • 如果你没有装 Docker,去 docker.com 下载一个 Docker Desktop 安装即可,在 Windows/Mac 上很好用。

启动后,用 curl 快速验证接口是否正常工作:

bash

curl http://localhost:8080/v1/embeddings
-H “Content-Type: application/json”
-d ‘{ “input”: “千聚聚合AI开发平台很好用”, “model”: “bge-m3” }’

如果返回值类似:

json

{ “object”: “list”, “data”: [{ “object”: “embedding”, “index”: 0, “embedding”: [0.01234, -0.05678, …] // 一串数字 }], “model”: “bge-m3”, “usage”: { “prompt_tokens”: 8, “total_tokens”: 8 } }

恭喜,你已经拥有了一个完全 OpenAI 兼容的 Embedding API 服务。

第四步:在代码里像调 OpenAI 一样调用它 #

现在把代码里的 base_url 从 https://api.openai.com/v1 改成 http://localhost:8080/v1 和你的任何 API Key(代理层其实不校验 key,你可以随便写一个)。

Python 示例(用 openai 官方库):

python

from openai import OpenAI

client = OpenAI( base_url=“http://localhost:8080/v1”, api_key=“sk-随便填一个, 因为本地不校验” )

response = client.embeddings.create( model=“bge-m3”, # 对应你Ollama里拉取的模型名 input=[“千聚聚合AI开发平台很好用”, “本地搭建省钱”] )

print(response.data[0].embedding) # 打印第一个文本的向量

换成 LangChain 也类似:

python

from langchain_community.embeddings import OpenAIEmbeddings

embeddings = OpenAIEmbeddings( model=“bge-m3”, openai_api_key=“随便填”, openai_api_base=“http://localhost:8080/v1” )

vector = embeddings.embed_query(“千聚聚合AI开发平台很好用”) print(vector)

你的整个 RAG 流水线不需要改任何业务逻辑,只需要改 base_url 这行。

👉 千聚ai聚合站官网:查看完整的客户端配置教程和Docker镜像文档


实际表现:快,稳,绝对安全 #

我用了两周,总结下来:

  • 延迟:首 Token 延迟几乎为 0,因为不会有网络开销。批处理 32 段文本的话,bge-m3 在我这 3060 显卡上大概 0.2 秒完成——几百毫秒。
  • 稳定性:100% 本地,不依赖远端服务,没有任何超时或 429 错误。
  • 数据安全:所有文本内容都在本机处理,没有任何中间环节。没有路由留存,没有二次转发。

你可能会遇到的问题(FAQ) #

Q: 我的机器显卡显存不够怎么办? A: 可以使用 Ollama 的 CPU 模式,速度会慢一些但也能跑。bge-m3 用 CPU 向量化 200 个句子大概 5 秒,照样可用。

Q: 这个接口支持并行请求吗? A: 支持的,代理层本身是无状态设计,Ollama 内部也做了并行推理优化。

Q: 我能不能用其他开源 Embedding 模型? A: 完全可以。只需要 ollama pull mxbai-embed-large-v1 或 ollama pull nomic-embed-text,然后在请求时把 model 字段换成对应的模型名即可。

Q: 这个方案有封号风险吗? A: 零风险——这是个本地搭建的私有服务,没有任何账号也不需要联网绑定。


总结:适合什么样的人 #

人群推荐程度理由
个人开发者做 RAG 原型验证⭐⭐⭐⭐⭐免费、零门槛、数据保密
企业内部做知识库向量化⭐⭐⭐⭐⭐不依赖海外服务,合规风险低
研究验证 Embedding 模型质量⭐⭐⭐⭐⭐同一套代码跑不同模型,方便做 benchmark
使用 Cursor、LibreChat 等工具⭐⭐⭐⭐自定义 API 地址填 http://localhost:8080/v1 即可接入

最后再多说一句:本地方案的初衷是“省心”和“安全”,但如果你想快速测试最新的商业 Embedding 模型(如 GPT-4o 嵌入的 text-embedding-3-small),建议配合千聚ai聚合站的一键直连方案(同样的 base_url 改完直接跑)。千聚的平台也支持 bge-m3 等模型的在线调用,新用户有免费额度。

把本地跑通当成日常开发的主力环境,再配合千聚的在线高级模型做兜底——这个组合是目前国内做 AI 嵌入最舒服的姿势,没有之一。

👉 注册千聚ai聚合站,领取 $0.2 免费额度