AI 技能说明书 · 第4篇
工具怎么选|用人话讲透|建议收藏
做 RAG、语义搜索、推荐,都绕不开Embedding(嵌入向量)和向量数据库。很多人卡在:模型选 1536 还是 1024 维?Milvus 和 Pinecone 差在哪?为什么搜出来不相关?这篇专讲地基层,不重复 RAG 业务故事(见第 2 篇)。
一、一句话搞懂
Embedding 把文本变成「语义坐标」;向量库负责存坐标、按相似度快搜。
「苹果」和「iPhone」在向量空间里距离近,「苹果」和「香蕉」也近但簇不同——模型用海量语料学过这种关系。检索时,问题向量和文档块向量做余弦相似度,取最近的 K 个,就是「语义搜文」。
二、深度拆解:到底差在哪?
### 1. Embedding 模型怎么选
OpenAI text-embedding-3-small
1536(可降) | 均衡,按 token 计费
text-embedding-3-large
3072 | 更准,贵
BGE / M3E 等开源
768–1024 | 可私有化,中英常见
原则:PoC 用 small;中文为主测国产/多语;同一库内禁止混用不同模型(维度/空间不一致)。
### 2. 向量库在干什么
存储:百万~十亿级向量 + 可选 metadata(部门、日期、doc_id)
索引:HNSW、IVF 等,在recall 与 latency间 trade-off
过滤:`where department='sales'` 再 ANN,企业必备
### 3. Milvus vs Pinecone(典型选型)
部署
自建/K8s/Zilliz Cloud | 全托管 SaaS
数据主权
可完全内网 | 在 Pinecone 云
运维
要懂集群 | 几乎零运维
成本
机器成本 | 按向量数+查询量
适合
金融/政务/大数据量 | 创业团队快速验证
### 4. 搜不准的 4 个技术原因
1.Chunk 质量差(占一半)
2.只用向量不用关键词→ 专有名词用Hybrid(BM25 + dense)
3.Embedding 与查询语言不一致(英问中 doc)
4.未 normalize / 距离度量选错(一般 cosine)
三、适合谁 / 不适合谁
适合:要做语义搜索/RAG 的开发、架构师;评估内网部署 vs SaaS的技术负责人;想搞懂面试题「HNSW 是什么」的人。
不适合:完全零代码且不愿学概念——可直接 Dify 黑盒;文档量 <100 页且只 10 个问题——暴力 fine chunk + 关键词可能更省事。
典型决策:
1.PoC <100 万向量→ Pinecone Serverless 或 Zilliz Cloud 免费档
2.生产内网→ Milvus + MinIO(存原始文件)+ 自研 ingest
3.已有 Elasticsearch→ 8.x _dense_vector + hybrid,少引入新组件
4.预算紧→ pgvector(Postgres 插件),量小够用
四、核心对比(收藏这张)
成本粗算(示例):100 万 chunk × 500 token × embed 单价 + 向量库存储 + 每日 1 万 query
→ PoC often几百 USD/月量级,要先算清楚再立项。
Embedding API
文本→向量 | 不做权限
向量库
存+搜 | 不做复杂 NLP
LLM
读片段写答案 | 不做全库扫描
五、和别的概念 / 工具怎么分?
Embedding vs 关键词搜索:「离职流程」和「辞职手续」向量近;SKU 编号 keyword 更准 →混合
向量库 vs 传统 DB:MySQL B-tree 不做高维 ANN
LangChain 在这里的角色:统一 `embed_query` / `similarity_search`,不是替代品
六、真实工作流(可以直接抄)
本地最小闭环(Python 伪流程)
1. 文档 list → chunk → 调 OpenAI Embedding → 得到 `[(id, vector, meta)]`
2. 写入 Pinecone index(`upsert`),metadata 带 `source_page`
3. 用户 query → embed → `query(top_k=5, include_metadata=True)`
4. 拼接 top chunks → ChatGPT:`仅根据 context 回答,附 [source_page]`
5. 用 10 条标注问题算MRR@5
上线前检查清单:
[ ] 同一 embedding 模型
[ ] metadata 过滤测过
[ ] 空结果 / 低分阈值拒答
[ ] 增量更新脚本(新 doc 只 upsert 新 id)
七、常见误区与踩坑
❌维度越高越好:高维 + 小数据可能过拟合噪声,且占存储
❌向量库=备份:还要存原文与版本,向量可重建
❌一次 embed 永久有效:换模型要全量 re-embed
❌Pinecone 一定比 Milvus 简单:大规模、多租户仍要架构设计
⚠️PII:embed 前脱敏,metadata 别存身份证
八、小编说
Embedding 和向量库不性感,但决定 RAG 上限。先 small 模型 + 10 万向量 PoC,用 MRR 说话,再谈 Milvus 集群。你们更倾向 SaaS 还是内网自建?