Embedding与语义检索
语义检索使用 Embedding 向量表示问题和文档,通过向量相似度找到语义相关内容。它是 RAG 的核心召回方式之一。
# 1. 语义检索流程
文档 Chunk
-> Embedding 模型
-> 文档向量
-> 向量库
用户问题
-> Embedding 模型
-> 问题向量
-> 相似度搜索
-> 返回相关 Chunk
# 2. 为什么不用纯关键词
关键词检索依赖字面匹配,遇到同义表达时可能失败。
| 用户问题 | 文档表达 |
|---|---|
| 怎么改密码 | 重置账户凭证 |
| 报销多久能到账 | 财务付款周期 |
| 服务挂了怎么办 | 应用不可用应急流程 |
语义检索可以捕捉“表达不同但含义相近”的内容。
# 3. 相似度检索
常见做法是取 Top K 个最相似 Chunk。
问题向量
-> 查找最近的 K 个文档向量
-> 返回候选 Chunk
Top K 不是越大越好。K 太小可能漏召回,K 太大可能引入噪声。
# 4. Embedding 模型选型
| 关注点 | 说明 |
|---|---|
| 语言能力 | 是否支持中文、多语言、代码 |
| 领域适配 | 对业务术语是否敏感 |
| 向量维度 | 影响存储和检索成本 |
| 性能 | 向量化速度和并发能力 |
| 成本 | API 或自部署资源成本 |
Embedding 模型要用检索评估集验证,不要只看通用榜单。
# 5. 语义检索的局限
| 局限 | 示例 |
|---|---|
| 精确词弱 | 错误码、订单号、接口名可能漏掉 |
| 数值条件弱 | “金额大于 1000”这类条件不适合纯向量 |
| 权限无感 | 向量相似不代表用户有权访问 |
| 版本无感 | 可能召回过期文档 |
因此企业 RAG 通常需要混合检索、元数据过滤和权限控制。
# 6. 优化建议
- 针对业务问题构建检索评估集。
- 对专有名词和编号类问题加入关键词检索。
- 使用元数据过滤版本、部门、权限和文档类型。
- 对召回结果做去重和重排。
- 记录用户问题和命中的 Chunk,方便排查。
# 7. Tips 快问快答
Q:同一个 Embedding 模型能适合所有场景吗?
A:不一定。代码、中文、法律、医疗、企业术语等场景可能需要不同模型或混合检索策略。
Q:Top K 应该设置多少?
A:没有固定值。要看 Chunk 大小、问题类型、重排能力和模型上下文窗口,通过评估集调整。
Q:语义检索能处理权限吗?
A:不能。权限必须由业务系统或检索层基于用户身份和元数据过滤。
上次更新: 2026/06/25, 17:53:09