词嵌入余弦检索
词嵌入余弦检索器,计算查询向量与文档向量的余弦相似度并排序,用于 RAG 与语义检索的相似度评估。
📚 Embedding Cosine Retrieval
Compute cosine similarity between a query vector and document vectors and rank the hits. Handy for RAG pipelines, semantic search and embedding debugging.
📐 计算公式 / 原理
cos(q, d) = (q·d)/(‖q‖·‖d‖),检索取 top-k 最大者
稠密检索的标准打分:查询向量与文档向量做点积后各自归一化,等价于夹角余弦。实际系统常用内积近似加 ANN 索引(HNSW/IVF)加速,此时必须保证向量已归一化,否则内积会被模长带偏。
📐 计算公式与说明
cosθ = (q·d) / (|q||d|)
RAG 检索中常用余弦相似度。
📚 深度解析:词嵌入余弦检索
💡 常见使用场景
- 将查询与文档编码为向量,按余弦相似度排序返回最相近项,是语义检索的核心。
- RAG 中先用向量库召回 top-k,再送大模型生成,召回质量直接决定答案上限。
- 余弦对向量模长不敏感,适合比较语义方向;短文本需配合归一化与去停用词。
查询召回排序
查询'苹果公司股价',文档向量('苹果,财报')cos=0.82、('水果,营养')cos=0.31、('iPhone,发布会')cos=0.76 → 召回排序为财报>iPhone>水果,正确命中企业语义。
❓ 常见问题(FAQ)
- 余弦和欧氏在检索里差别大吗?
- 归一化后二者单调相关,但余弦更关注方向、对模长不敏感,适合文本嵌入;未归一化时欧氏会被向量长度主导,检索效果通常更差。
- 召回不准怎么排查?
- 先看向量模型是否适配领域(通用模型对专业词弱),再查切分粒度与停用词;也可换混合检索(向量+关键词)补召回。