当前位置: 首页 > news >正文

RAG入门:理解 Embedding 和 Vector Search 的基本概念

欢迎来到 RAG 的世界!理解 Embedding(嵌入)Vector Search(向量搜索) 是掌握 RAG 技术的基石。如果把大语言模型(LLM)比作一个博学的“大脑”,那么 Embedding 就是它的“感官”,而 Vector Search 则是它的“记忆检索系统”。

下面我用通俗易懂的方式,配合技术原理解析这两个核心概念。


一、什么是 Embedding(嵌入)?

1. 核心定义

Embedding 是将文本(单词、句子、段落)转换为计算机能理解的“数字列表”(向量)的过程。

  • 输入:一段文字,例如 “猫喜欢吃鱼”。
  • 输出:一串浮点数数组,例如 [0.12, -0.45, 0.89, ..., 0.03](可能有 768 维或 1536 维)。
  • 本质:这是一种语义压缩。模型将文字的“含义”映射到了高维空间中的一个坐标点。

2. 为什么需要它?

计算机不懂“猫”和“狗”的关系,它只懂数字。

  • 在传统搜索中,计算机匹配的是关键词(字面匹配)。如果你搜“汽车”,它找不到包含“轿车”但没出现“汽车”的文章。
  • 在 Embedding 空间中,语义相似的文本,其向量坐标距离非常近
    • “猫”的向量 和 “猫咪”的向量 \(\approx\) 距离极近。
    • “国王” - “男人” + “女人” \(\approx\) “女王”的向量(著名的类比推理)。
    • “苹果(水果)”和“苹果(公司)”在不同语境下会有不同的向量位置(取决于上下文嵌入模型)。

3. 直观图解

想象一个巨大的三维空间(实际上通常是 768 维或更高):

  • 所有关于“体育”的文章都聚集在空间的左上角
  • 所有关于“烹饪”的文章都聚集在右下角
  • 当你把用户的问题“怎么做红烧肉?”转换成向量后,它会落在“烹饪”区域,靠近“食谱”、“猪肉”、“酱油”等向量。

关键点:Embedding 模型的目标是让语义相似的内容在向量空间中距离更近


二、什么是 Vector Search(向量搜索)?

1. 核心定义

向量搜索是在海量向量数据库中,快速找到与查询向量“距离最近”的那几个向量的过程。

在 RAG 中,这步对应着:“用户问了一个问题,系统去知识库里找最相关的文档片段。”

2. 如何衡量“相似度”?(距离公式)

计算机通过计算两个向量之间的距离角度来判断它们是否相似。最常用的两种方法:

  • 余弦相似度 (Cosine Similarity)
    • 计算两个向量夹角的余弦值。
    • 范围:-1 到 1。越接近 1,表示方向越一致,语义越相似。
    • 优点:不受向量长度(文本长短)影响,最常用。
  • 欧几里得距离 (Euclidean Distance)
    • 计算两点间的直线距离。
    • 距离越短(越接近 0),表示越相似。

3. 搜索流程

假设你的知识库有 100 万条文档切片(已转为向量):

  1. 用户提问:“如何修复蓝屏?”
  2. 向量化:Embedding 模型将问题转为向量 \(V_{query}\)
  3. 比对:系统在数据库中计算 \(V_{query}\) 与 100 万个文档向量 \(V_{doc}\) 的相似度。
  4. 排序:按相似度从高到低排序。
  5. 截取:取出前 K 个(比如 Top 5)最相似的文档片段。
  6. 返回:将这 5 个片段送给 LLM 去生成答案。

4. 挑战与优化:ANN (近似最近邻)

如果每次搜索都要计算 100 万次距离,速度会太慢(线性扫描 \(O(N)\))。
为了解决速度问题,向量数据库使用了 ANN (Approximate Nearest Neighbor) 算法:

  • 原理:牺牲极小的精度(比如从 100% 准确降到 98%),换取巨大的速度提升(从几秒降到几毫秒)。
  • 常见算法:HNSW (Hierarchical Navigable Small World), IVF-PQ (Inverted File with Product Quantization)。
  • 比喻:就像在图书馆找书,你不是遍历每一本书(线性扫描),而是先看书架标签(索引),直接走到大概的区域,然后在那附近找(近似搜索)。

三、RAG 中的完整协作流程

让我们把两者结合起来,看一个完整的 RAG 数据流:

步骤 动作 涉及技术 形象比喻
1. 准备知识 读取 PDF,切分成小块 Chunking 把百科全书撕成一页页的小卡片
2. 建立索引 将每张小卡片转为向量 Embedding 给每张卡片贴上“语义坐标标签”,并归档到巨大的多维地图中
3. 用户提问 用户输入:“量子力学是什么?” - 读者拿着一个问题走进图书馆
4. 问题转化 将问题转为向量 Embedding 给读者的问题也贴上“语义坐标标签”
5. 寻找线索 在地图中找离问题标签最近的卡片 Vector Search 根据坐标,瞬间定位到地图上最近的几个书架,拿起最相关的 5 张卡片
6. 生成答案 LLM 阅读这 5 张卡片并回答 Generation 图书管理员读完这 5 张卡片,组织语言回答读者

四、代码演示 (Python + LangChain)

为了让你更有实感,这里有一个极简的代码示例,展示如何使用 Python 进行 Embedding 和简单的向量搜索。

# 需要先安装: pip install langchain langchain-community sentence-transformers scikit-learnfrom langchain_community.embeddings import HuggingFaceEmbeddings
from sklearn.metrics.pairwise import cosine_similarity
import numpy as np# 1. 初始化 Embedding 模型 (使用开源的中文/多语言模型)
# 这里使用 sentence-transformers 库加载一个轻量级模型
model_name = "BAAI/bge-small-zh-v1.5" 
embedder = HuggingFaceEmbeddings(model_name=model_name)# 2. 准备知识库 (文档片段)
documents = ["RAG 技术结合了检索和生成的能力。","向量搜索是通过计算距离来寻找相似内容。"," Embedding 是将文本转换为数字向量的过程。","今天天气真不错,适合出去跑步。" # 这是一个无关的干扰项
]# 3. 将文档转换为向量 (Indexing)
doc_vectors = embedder.embed_documents(documents)
print(f"文档向量维度: {len(doc_vectors[0])}") # 通常是 512 或 768 维# 4. 用户提问 (Query)
query = "什么是向量搜索的原理?"
query_vector = embedder.embed_query(query)# 5. 计算相似度 (Vector Search 的核心逻辑)
# 在实际生产中,这一步由向量数据库(如 Milvus/Qdrant)高效完成
similarities = cosine_similarity([query_vector], doc_vectors)[0]# 6. 找出最相似的结果
results = list(zip(documents, similarities))
results.sort(key=lambda x: x[1], reverse=True) # 按相似度降序排列print("\n--- 搜索结果 ---")
for doc, score in results[:2]: # 只看前 2 个print(f"相似度得分: {score:.4f}")print(f"匹配内容: {doc}")print("-" * 30)

预期输出逻辑:

  • “向量搜索是通过计算距离来寻找相似内容。”这条记录的得分应该最高。
  • “今天天气真不错...”这条记录得分应该最低。
  • 即使问题里没有完全重复“计算距离”这几个字,模型也能识别出语义关联。

五、初学者常见误区

  1. 误区:Embedding 就是关键词匹配。
    • 真相:它是语义匹配。搜“手机”能匹配到“iPhone”,哪怕字面上完全不同。
  2. 误区:向量维度越高越好。
    • 真相:维度越高,计算越慢,存储越大。通常 384~1024 维对于大多数 RAG 任务已经足够,且存在“维度灾难”风险(高维空间中所有点距离都差不多)。
  3. 误区:任何文本都可以直接搜。
    • 真相:如果文本太长(超过模型限制,如 512 tokens),必须切分(Chunking)。切分不好,向量就会丢失上下文,导致搜不准。
  4. 误区:模型是通用的,不需要挑选。
    • 真相:通用模型在专业领域(如医疗、法律)表现可能不佳。最好选择针对该领域微调过的 Embedding 模型,或者至少选择多语言支持好的模型(如 bge-m3)。

六、下一步学习建议

理解了这两个概念后,你可以尝试:

  1. 动手实验:使用 Hugging Face 上的不同 Embedding 模型,测试它们在中文语境下的表现差异。
  2. 探索向量数据库:学习如何安装和使用 ChromaQdrant,体验真正的 ANN 搜索,而不仅仅是计算余弦相似度。
  3. 研究分块策略:思考如果一篇文章很长,怎么切分才能让 Embedding 效果最好?(这是 RAG 调优的第一站)。

希望这份指南能帮你建立起对 RAG 底层的清晰认知!如果有具体代码报错或想深入某个算法细节,欢迎继续提问。

http://www.jsqmd.com/news/432753/

相关文章:

  • 2026年 移动哨兵厂家推荐排行榜:太阳能/工地/牧场/景区/智慧工地/便携式/户外/扬尘噪音监测/视频监控/长续航/网络版/不断电移动哨兵全方位解析 - 品牌企业推荐师(官方)
  • 建筑设计:美学与实用的共生之道
  • 迁移数据库,SqlServer 2014高可用 配置(AlwaysOn) 后, 数据库的备份与灰复
  • 2026年电动葫芦厂家推荐排行榜:钢丝绳/环链/伺服/防爆/冶金/变频/双速/固定式/运行式/低净空全系列深度解析与选购指南 - 品牌企业推荐师(官方)
  • PPT封面设计:告别“廉价感”,打造高级感满满的视觉门面
  • 2026年 钢筋连接套筒厂家推荐排行榜,直螺纹/分体式/镦粗/冷挤压/焊接/T63/635套筒,专业工艺与高强性能深度解析 - 品牌企业推荐师(官方)
  • RAG-检索增强生成
  • 想把多张照片拼接成一张?别再一张张发了,这样拼图更惊艳!
  • KJ4002X1-BD2电源模块
  • 2026年3月成都铝合金伸缩门品牌推荐,技术实力与市场口碑解析 - 品牌鉴赏师
  • KJ4003X1-BA1承托底座
  • 告别无效内耗|2026必看企业AI智能体测评,泛微数智大脑凭什么脱颖而出?
  • 2026年一体化净水器市场观察:可靠厂家有哪些?污水处理设备/一体化净水器,一体化净水器供货厂家哪家强 - 品牌推荐师
  • 2026 年 3 月 GEO 优化哪家靠谱?最新排名与真实效果盘点 - 速递信息
  • 2026 年 3 月 GEO 服务商哪家强?最新 TOP5 实力榜单与横向对比 - 速递信息
  • 2026年3月腕带品牌厂家最新推荐,综合实力强售后完善 - 品牌鉴赏师
  • QOJ 14435 Yet Another Constructive Problem
  • 杆状病毒-昆虫细胞表达系统解析 多角体启动子驱动的超表达与蛋白复合物组装机制
  • 2026年 PVC外墙挂板厂家推荐排行榜:防腐/抗紫外线/抗老化/保温,木纹/石纹/浮雕/波浪/扣板/拼接式,精选优质品牌实力解析 - 品牌企业推荐师(官方)
  • 互联网医院系统源码vs定制开发:互联网医院APP开发该如何选择?
  • 2026 年 3 月 GEO 优化服务商 TOP5:AI 搜索增长首选权威参考 - 速递信息
  • P2071 座位安排
  • 防泄密软件有哪些?全球六大防泄密软件推荐(2026最新排行榜)
  • 269_尚硅谷_全局互斥锁解决资源竞争
  • 2026年防静电椅厂家推荐排行榜:电子厂/PU/洁净室/半导体厂/无尘车间/实验室防静电椅与圆凳,专业防静电解决方案精选 - 品牌企业推荐师(官方)
  • 第三方图标库
  • 2026年环保设备厂家推荐排行榜:洒水车/洗车机/雾炮机/扫地机/降尘设备等源头工厂实力解析 - 品牌企业推荐师(官方)
  • 2026新材料行业工业烤箱优质厂家推荐:热风循环烘箱/精密烤箱厂家/精密高温试验箱/紫外线老化试验箱/选择指南 - 优质品牌商家
  • 2026专家访谈服务优质机构推荐指南聚焦专业交付 - 优质品牌商家
  • 2026四川工业园幕墙玻璃改开窗优质服务推荐 - 优质品牌商家