Embedding 与向量数据库深入
理解文本向量化原理,掌握向量检索全流程
- 理解 Embedding 的原理和作用
- 掌握余弦相似度计算
- 了解主流向量数据库
- 学会优化检索质量
Embedding 与向量数据库深入
Embedding 是 RAG 和语义搜索的基石。文本怎么变成数字,怎么在百万文档里毫秒级找到相关内容,这节课就讲这个。
什么是 Embedding?
Embedding 把文本(或图片、音频)映射成一个高维向量,通常是 768-4096 维的浮点数数组。语义相似的文本,向量距离也近。
余弦相似度
最常用的向量相似度度量。值越接近 1 越相似。
余弦相似度衡量向量方向,不受向量长度影响。文本检索里,我们关心语义方向是否一致,不是向量绝对大小。欧氏距离对向量长度敏感,高维空间里还会碰到维度灾难。
这里手写的 cosine_similarity,分子就是两个向量的点积,分母是各自的长度。stage11〈向量与张量:模型世界的通用语言〉从「一列数→向量、夹角→cosθ」搭起,手算了点积与余弦相似度的每一步——RAG 检索、注意力打分、全连接层,用的都是这同一块地基。
向量数据库
ANN 近似最近邻
百万级向量不可能逐一计算余弦相似度。ANN(Approximate Nearest Neighbor)算法用索引加速:
RAG 效果很大程度上取决于检索质量。优化检索的手段:混合检索(向量 + BM25 关键词,RRF 融合)Reranker 二次精排(用 Cross-Encoder 对 top-50 重排取 top-5)元数据过滤(先按时间/类别过滤再向量搜索)分块策略(语义分块优于固定长度,父子文档分块兼顾精度和上下文)Embedding 模型选择(中文用 bge-large-zh-v1.5 或 m3e,英文用 text-embedding-3-large)。
余弦相似度衡量的是什么?
资深工程师加餐
底层原理 · 大厂视角 · 工程经验,点卡片展开
超时必须设置(连接/读取分开),重试要用指数退避并区分可重试错误,写操作要保证幂等,客户端侧限流,必要时熔断与降级,避免故障级联。密钥一律走环境变量或密钥管理、绝不写进代码和仓库。建议统一封装一个客户端:集中处理鉴权头、重试、日志与请求 id,出问题才能按 id 端到端排查。
挑战任务
语义搜索引擎
写个简单的文档检索函数,用余弦相似度找最相关的文档。
课后作业
文本分类器
用余弦相似度实现一个简单的意图分类器:把用户输入分到最接近的类别。