一、作用定位

把 Chunk 文本 高维浮点向量。语义相近→向量空间距离近,用于向量库余弦相似度检索 RAG 链路:分片chunk → EmbeddingModel 多维向量 → 存入向量库;用户 Query 同样用同一个模型向量化,才能匹配召回。

关键:入库、查询必须使用同一个 Embedding 模型否则向量空间不匹配,召回失效。

二、三大分类:闭源 API 模型 / 开源本地模型 / 多模态 Embedding

1. 商用闭源嵌入(API 调用,省心、效果优)

① OpenAI Embedding(工业最常用)

python

运行

from langchain_openai import OpenAIEmbeddings
embedding = OpenAIEmbeddings(model="text-embedding-3-small")
# 可选:text-embedding-3-large(高精度、向量维度3072)
vec = embedding.embed_query("北京住宿报销标准")
  • 优点:泛化强、中英文通用、不用本地部署;缺点:付费、依赖外网。
② 阿里通义 / 百度千帆 / 讯飞 embedding

国产云端嵌入,适配中文,国内企业内网云场景。

2. 开源本地 Embedding(离线私有化首选,无费用、本地 CPU/GPU 运行)

国内 RAG 标配:BGE 系列(BGE-small、BGE-base-zh),中文 SOTA,LangChain 通过HuggingFaceEmbeddings加载。

示例代码

bash

运行

pip install sentence-transformers

python

运行

from langchain_community.embeddings import HuggingFaceEmbeddings

# 中文最优:bge-small-zh-v1.5
model_name = "BAAI/bge-small-zh-v1.5"
embedding = HuggingFaceEmbeddings(model_name=model_name)

# 单个文本向量化
vec = embedding.embed_query("江南春天景色")
# 批量文档向量化(RAG入库用)
doc_vecs = embedding.embed_documents([chunk1,chunk2])

主流开源清单:

  1. BGE(BAAI):国内 RAG 首选,bge-small/base/large-zh,中文语义匹配极强;
  2. all-MiniLM:英文轻量化、体积小、速度快;
  3. m3e:另一款国产轻量化中文嵌入。

3. 多模态 Embedding(图文混合 RAG:PDF 带图片、图表)

如 CLIP、bge-visual,同时编码文字 + 图片,适合图纸、说明书、教材类文档。

三、两个关键 API 接口(LangChain 统一规范)

  1. .embed_query(text:str) → list[float]用户问题向量化
  2. .embed_documents(list[str]) → list[list[float]]知识库批量分片入库向量化

Retriever 底层自动调用这两个方法做相似度比对。

四、和 RAG 全链路结合完整示例

python

运行

from langchain.text_splitter import RecursiveCharacterTextSplitter
from langchain_core.documents import Document
from langchain_chroma import Chroma
from langchain_community.embeddings import HuggingFaceEmbeddings

# 1.原文
article = """江南的春天,总在绵绵细雨里悄悄降临。清晨推开窗,潮湿的水汽裹挟着草木清香扑面而来。"""
docs = [Document(page_content=article)]

# 2.递归切分
splitter = RecursiveCharacterTextSplitter(chunk_size=150,chunk_overlap=20,separators=["\n\n","\n","。",","])
chunks = splitter.split_documents(docs)

# 3.加载本地BGE嵌入模型
emb = HuggingFaceEmbeddings(model_name="BAAI/bge-small-zh-v1.5")

# 4.向量化+存入向量库
db = Chroma.from_documents(chunks,embedding=emb,persist_directory="./emb_db")
ret = db.as_retriever(k=2)

# 5.检索测试
res = ret.invoke("江南春季风景")

五、选型落地标准

  1. 公有云项目、追求简单高效:OpenAI / 百度千帆 API Embedding
  2. 企业内网、涉密离线部署、私有化 RAG:BGE 本地开源模型(首选)
  3. 文档带图纸、图片、扫描件:多模态 Embedding

六、重要避坑点

  1. 入库和查询不能混用两个不同 Embedding
  2. 嵌入维度:small≈384 维、base≈768 维、large≈1024+,维度越大精度越高、存储开销越大;
  3. 中文文档严禁使用英文专用 embedding (all-MiniLM),召回效果暴跌。
Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐