Embedding 服务产品说明
功能简介
Baidu Milvus Embedding 服务是面向 Milvus 引擎实例提供的一站式文本向量化能力。开启后,用户无需单独部署 Embedding 推理服务,也无需在应用侧提前将文本转成向量;在 Milvus Collection 中配置 Function 后,即可在写入、更新和检索时直接传入原始文本,由 Milvus 调用百度智能云千帆 Embedding 模型完成向量生成,并将向量写入指定字段用于语义检索。
该能力用于降低 RAG、知识库问答、文档搜索、FAQ 检索、推荐召回等场景的接入复杂度,帮助用户把“文本切分 - 向量化 - 写入 Milvus - 查询向量化 - 相似度检索”的链路收敛到 Milvus 实例内完成。
核心能力
| 功能 | 说明 |
|---|---|
| 托管式 Embedding | 平台托管模型调用能力,用户无需自行部署 Embedding 服务 |
| 创建实例时开启 | 创建 Milvus 引擎实例时可选择开启 Embedding,实例创建成功后即可使用 |
| 存量实例开关 | 已创建的 Milvus 实例支持开启或关闭 Embedding 能力 |
| Milvus Function 集成 | 通过 Milvus FunctionType.TEXTEMBEDDING 绑定文本字段和向量字段,实现自动向量化 |
| 原始文本直接写入 | 写入数据时传入原始文本,系统自动生成向量并写入向量字段 |
| 原始文本直接检索 | 查询时传入自然语言文本,系统自动完成查询向量化并执行向量检索 |
| 实例级用量统计 | 按实例维度统计 token 用量、调用量、成功率、QPS 和响应延迟等指标,用于监控、告警和计费 |
| 生命周期联动 | 关闭 Embedding 后禁用实例内向量化配置;删除实例时清理平台托管的模型服务资源 |
适用场景
文搜文语义检索
用户将文档片段、FAQ、商品描述、工单内容等原始文本写入 Milvus。写入时,Milvus 自动调用 Embedding 模型生成向量并存储到向量字段。查询时,用户直接输入自然语言问题,Milvus 自动生成查询向量并返回语义最相关的结果。
适用于:
- 企业知识库问答
- FAQ 和客服工单检索
- 文档搜索和资料检索
- RAG 召回链路
- 商品、内容、文章的语义召回
应用侧向量化链路简化
传统接入方式需要应用侧自行维护 Embedding 服务调用、批量重试、字段映射、异常处理和计费统计。开启 Baidu Milvus Embedding 服务后,应用侧只需要维护原始文本字段和 Milvus Collection Schema,向量化由 Milvus 内置 Function 统一完成。
模型效果快速切换验证
Baidu Milvus Embedding 服务支持多种文本 Embedding 模型。用户可根据上下文长度、向量维度、语言类型、召回效果和成本要求选择模型,降低模型选型和验证成本。
使用流程
1. 开启 Embedding 服务
用户可通过以下方式开启 Embedding:
| 开启方式 | 说明 |
|---|---|
| 创建实例时开启 | 在创建 Milvus 引擎实例页面选择开启 Embedding |
| 存量实例开启 | 在实例详情或 Embedding 管理入口中,对运行中的 Milvus 实例开启 Embedding |
开启后,系统会为实例创建并绑定模型服务资源,完成配置下发。配置采用热加载方式生效,无需用户重建实例。
2. 创建 Collection 并绑定 Function
在 Collection Schema 中定义原始文本字段和向量字段,并通过 Milvus Function 将文本字段绑定到向量字段。
示例:
1from pymilvus import MilvusClient, DataType, Function, FunctionType
2
3client = MilvusClient(
4 uri="http://<milvus-endpoint>:19530",
5 token="root:<password>",
6)
7
8collection_name = "doc_search_demo"
9schema = client.create_schema()
10
11schema.add_field("id", DataType.INT64, is_primary=True, auto_id=False)
12schema.add_field("document", DataType.VARCHAR, max_length=8192)
13schema.add_field("dense", DataType.FLOAT_VECTOR, dim=1024)
14
15text_embedding_function = Function(
16 name="qianfan_text_embedding",
17 function_type=FunctionType.TEXTEMBEDDING,
18 input_field_names=["document"],
19 output_field_names=["dense"],
20 params={
21 "provider": "qianfan",
22 "model_name": "bge-large-zh"
23 }
24)
25
26schema.add_function(text_embedding_function)
27
28index_params = client.prepare_index_params()
29index_params.add_index(
30 field_name="dense",
31 index_type="AUTOINDEX",
32 metric_type="COSINE"
33)
34
35client.create_collection(
36 collection_name=collection_name,
37 schema=schema,
38 index_params=index_params
39)
说明:示例中的
dim需要与所选模型的输出向量维度一致。
3. 写入原始文本
写入数据时,用户只需要传入原始文本字段。Milvus 会根据 Function 配置自动生成向量并写入 dense 字段。
1client.insert(
2 collection_name,
3 [
4 {
5 "id": 1,
6 "document": "向量数据库通过将文本转换为高维向量来实现语义检索。"
7 },
8 {
9 "id": 2,
10 "document": "检索增强生成可以通过召回相关文档提升大模型回答可靠性。"
11 }
12 ]
13)
4. 使用自然语言检索
查询时,用户直接传入自然语言文本。Milvus 自动完成查询向量化,并基于向量字段执行相似度检索。
1results = client.search(
2 collection_name=collection_name,
3 data=["什么是语义检索?"],
4 anns_field="dense",
5 limit=3,
6 output_fields=["document"],
7)
支持模型与规格
| 模型名称 | model 参数 | 支持最大向量维度 | 最大输入 batch_size | 每个文本上下文长度 token | 服务速率限制 | 售卖方式 | 服务价格 |
|---|---|---|---|---|---|---|---|
| Embedding-V1 | embedding-v1 | 384 | 16 | 384 | 1800 RPM / 800000 TPM | 按量后付 | 0.0005 元/千 tokens |
| tao-8k | tao-8k | 1024 | 1 | 8192 | 1800 RPM / 800000 TPM | 按量后付 | 0.0005 元/千 tokens |
| bge-large-zh | bge-large-zh | 1024 | 16 | 512 | 1800 RPM / 800000 TPM | 按量后付 | 0.0005 元/千 tokens |
| bge-large-en | bge-large-en | 1024 | 16 | 512 | 1800 RPM / 800000 TPM | 按量后付 | 0.0005 元/千 tokens |
| Qwen3-Embedding-0.6B | qwen3-embedding-0.6b | 1024 | 16 | 8192 | 1800 RPM / 800000 TPM | 按量后付 | 0.0005 元/千 tokens |
| Qwen3-Embedding-4B | qwen3-embedding-4b | 2560 | 16 | 8192 | 1800 RPM / 800000 TPM | 按量后付 | 0.0005 元/千 tokens |
| Qwen3-Embedding-8B | qwen3-embedding-8b | 4096 | 16 | 8192 | 200 RPM / 50000 TPM | 按量后付 | 0.0005 元/千 tokens |
模型选择建议
| 场景 | 推荐模型 | 说明 |
|---|---|---|
| 中文知识库问答 | bge-large-zh、Qwen3-Embedding-0.6B | 适合中文文本检索、FAQ、知识库召回 |
| 英文文本检索 | bge-large-en | 适合英文语料的语义匹配和文档搜索 |
| 长文本切片召回 | tao-8k、Qwen3-Embedding-0.6B、Qwen3-Embedding-4B | 支持 8192 token 上下文,适合长文档片段 |
| 高维召回效果验证 | Qwen3-Embedding-4B、Qwen3-Embedding-8B | 输出维度更高,适合对召回效果要求更高的场景 |
| 低成本快速接入 | Embedding-V1、bge-large-zh | 适合基础语义检索和验证场景 |
计费说明
Baidu Milvus Embedding 服务采用按量后付费模式,按千帆 Embedding 模型调用消耗的 token 进行线性计费。
| 计费项 | 说明 |
|---|---|
| 计费方式 | 按量后付 |
| 计费粒度 | 按 token 用量计费 |
| 计费单位 | 千 tokens |
| 单价 | 0.0005 元/千 tokens |
| 用量归属 | 按 Milvus 实例维度绑定模型服务资源,并按用户账号推送账单 |
用户可在实例维度查看 token 用量、调用量、成功率、QPS 和响应延迟等指标,用于成本分析、容量评估和告警配置。
监控指标
开启 Embedding 后,支持以下监控项:
| 中文名称 | Metrics name | 单位 | 含义 |
|---|---|---|---|
| embedding 调用成功数 | ProxyEmbeddingCallSuccess | count | 节点级别 Embedding 调用成功数 |
| embedding 调用总数 | ProxyEmbeddingCallTotal | count | 节点级别 Embedding 调用总数 |
| embedding 请求成功率 | ProxyEmbeddingCallSuccessRate | % | 节点级别 Embedding 请求成功率 |
| embedding 每秒请求数 | ProxyEmbeddingCallTotalPerSecond | count/s | 节点级别 Embedding 每秒请求数 |
| embedding 响应时间平均延迟 | ProxyEmbeddingCallLatencyAvg | ms | 节点级别 Embedding 响应时间平均延迟 |
| embedding 响应时间 P99 延迟 | ProxyEmbeddingCallLatencyP99 | ms | 节点级别 Embedding 响应时间 P99 延迟 |
| embedding Token 每秒消耗使用率 | ProxyEmbeddingTokenUsageRatePerSecond | count/s | 节点级别 Embedding Token 每秒消耗量 |
| embedding Token 每监控周期消耗量 | ProxyEmbeddingTokenUsagePerCycle | count | 节点级别 Embedding Token 每 60 秒消耗量 |
| embedding 调用成功数 | AppEmbeddingCallSuccess | count | 实例级别 Embedding 调用成功数 |
| embedding 调用总数 | AppEmbeddingCallTotal | count | 实例级别 Embedding 调用总数 |
| embedding 每秒请求数 | AppEmbeddingCallTotalPerSecond | count/s | 实例级别 Embedding 每秒请求数 |
| embedding 响应时间平均延迟 | AppEmbeddingCallLatencyAvg | ms | 实例级别 Embedding 响应时间平均延迟 |
| embedding 响应时间 P99 延迟 | AppEmbeddingCallLatencyP99 | ms | 实例级别 Embedding 响应时间 P99 延迟 |
| embedding Token 每秒消耗使用率 | AppEmbeddingTokenUsageRatePerSecond | count/s | 实例级别 Embedding Token 每秒消耗量 |
| embedding Token 每监控周期消耗量 | AppEmbeddingTokenUsagePerCycle | count | 实例级别 Embedding Token 每 60 秒消耗量 |
| embedding Token 消耗总量 | AppEmbeddingUsageSum | count | 实例级别 Embedding Token 累计消耗总量 |
使用限制与注意事项
- Embedding 服务仅适用于已支持该能力的 Milvus 引擎实例。
- Collection 的向量字段维度必须与所选模型的输出维度一致。
- 写入和检索会触发模型调用,调用延迟会影响端到端写入或查询耗时。
- 每个模型存在 RPM、TPM 等服务速率限制,请根据业务峰值选择合适模型。
- 关闭 Embedding 后,实例不再自动调用模型服务;已写入的向量数据不受影响。
- 删除实例时,平台会清理随实例创建的模型服务资源。
- 默认使用平台托管的 API Key 与 AppID;如需使用用户自有 API Key,需要联系运维或产品支持确认接入方式。
FAQ
Q1:开启 Embedding 后,用户是否还需要自己调用 Embedding API?
不需要。用户在 Milvus 中配置 Function 后,写入和检索时直接传入原始文本即可,由 Milvus 自动调用模型服务生成向量。
Q2:关闭 Embedding 会删除已经写入的向量吗?
不会。关闭 Embedding 只是不再自动调用模型服务,已写入 Collection 的向量字段数据不受影响。
Q3:一个实例可以绑定多个模型吗?
同一个实例可在不同 Collection 或不同 Function 中选择不同模型,具体以 Milvus Function 支持能力和控制台配置为准。
Q4:为什么向量字段维度必须和模型一致?
Milvus 向量字段在建表时需要固定维度。如果模型输出 1024 维,向量字段也必须定义为 1024 维,否则写入或检索会失败。
Q5:是否支持多模态输入?
首期产品说明以文本 Embedding 为主。阿里云对标能力已包含多模态检索,Baidu 如需同步上线多模态能力,需要补充多模态模型、媒体 URL 输入、对象存储访问和检索示例等产品与技术方案。
评价此篇文章
