Datawhale All-in-RAG打卡学习-Task 03
选择建议新手入门/小型项目:从ChromaDB或FAISS开始是最佳选择。它们与 LangChain/LlamaIndex 紧密集成,几行代码就能运行,且能满足基本的存储和检索需求。生产环境/大规模应用:当数据量超过百万级,或需要高并发、实时更新、复杂元数据过滤时,应考虑更专业的解决方案,如MilvusWeaviate或云服务Pinecone。
Task03
第三章 索引构建
第一节 向量嵌入
一、向量嵌入(Embedding)
1.1 基础概念
向量嵌入(Embedding)是一种将真实世界中复杂、高维的数据对象(如文本、图像、音频、视频等)转换为数学上易于处理的、低维、稠密的连续数值向量的技术。
路径:数据对象 → Embedding模型 → 输出向量
Embedding的真正意义在于,它产生的向量不是随机数值的堆砌,而是对数据语义的数学编码。
衡量向量间的“距离”或“相似度”的方法:余弦相似度、点积、欧式距离
1.2 Embedding在RAG中的作用
1.2.1 语义检索的基础
RAG 的“检索”环节通常以基于 Embedding 的语义搜索为核心。
通用流程如下:
- 离线索引构建;
- 在线查询检索;
- 相似度计算;
- 召回上下文。
1.2.2 决定检索质量的关键
Embedding 的质量直接决定了 RAG 检索召回内容的准确性与相关性。
用户问题 → Embedding模型 → 文档 (与Embedding 模型优劣 强相关)
二、Embedding技术发展
发展路径:①静态词嵌入(Word2Vec (2013), GloVe (2014))→ ②动态上下文嵌入(Transformer 架构/Bert模型) → ③RAG(BGE-M3)
RAG 框架的提出,是为了解决大型语言模型 知识固化(内部知识难以更新)和 幻觉(生成的内容可能不符合事实且无法溯源)的问题。它通过“检索-生成”范式,动态地为 LLM 注入外部知识。这一过程的核心是 语义检索,很大程度上依赖于高质量的向量嵌入。
三、嵌入模型训练原理
3.1 自监督学习 策略
当前主流的嵌入模型(通常是基于 BERT 的变体),核心通常是 Transformer 的编码器(Encoder)部分,通过堆叠多个 Transformer Encoder 层来构建一个深度的双向表示学习网络。
1.掩码语言模型(Masked Language Model,MLM)
2.下一句预测(Next Sentence Prediction,NSP)
MLM 和 NSP 赋予了模型强大的基础语义理解能力
3.2 效果增强策略
度量学习 (Metric Learning):直接以“相似度”作为优化目标。
对比学习 (Contrastive Learning):在向量空间中,将相似的样本“拉近”,将不相似的样本“推远”。
核心区别一览
|
维度 |
度量学习 (Metric Learning) |
对比学习 (Contrastive Learning) |
|---|---|---|
|
核心目标 |
学习一个距离度量空间 |
学习判别性特征表示 |
|
关注点 |
样本之间的相对距离 |
样本之间的相对关系(相似/不相似) |
|
损失函数 |
Triplet Loss、N-pair Loss 等 |
InfoNCE、NT-Xent 等 |
|
典型应用 |
人脸识别、图像检索、推荐系统 |
自监督预训练、视觉表征学习 |
|
监督方式 |
通常需要标签信息(谁和谁同类) |
可以无监督(数据增强生成正负样本) |
|
历史渊源 |
更早(2000s,如 LMNN、ITML) |
较晚(2018+,如 SimCLR、MoCo) |
|
场景 |
推荐方法 |
|---|---|
|
有标签的小数据集,关注距离度量 |
度量学习(Triplet, N-pair) |
|
无监督预训练,大规模数据 |
对比学习(SimCLR, MoCo) |
|
有标签的大数据集 |
监督对比学习(SupCon) |
|
跨模态学习(图文) |
对比学习(CLIP 风格) |
简单来说:度量学习是"学习度量",对比学习是"通过对比来学习表示",后者是前者在现代深度学习语境下的发展和特化。
---------------------------------------------------------------------------------------------------------------------------------
四、嵌入模型选型指南
4.1 看榜单-查看MTEB排行榜
4.2 看维度-关键评估维度
任务 (Task) /语言 (Language)/模型大小 (Size) /维度 (Dimensions)/最大 Token 数 (Max Tokens) /得分与机构 (Score & Publisher) /成本 (Cost)
4.3 选代测试与优化
(不要只依赖公开榜单做最终决定。)
(1)确定基线 (Baseline);(2)构建私有评测集;(3)迭代优化
第二节 多模态嵌入
多模态嵌入建立在注意力机制、Transformer 架构和对比学习等关键技术之上;
其发展环环相扣:Word2Vec 为 BERT 的上下文理解铺路,而 BERT 又为 CLIP 等模型的跨模态能力奠定了基础。
多模态嵌入 (Multimodal Embedding) 目的是将不同类型的数据(如图像和文本)映射到同一个共享的向量空间。
实现这一目标的关键,在于解决 跨模态对齐 (Cross-modal Alignment) 的挑战。以对比学习、视觉 Transformer (ViT) 等技术为代表的突破,让模型能够学习到不同模态数据之间的语义关联,最终催生了像 CLIP 这样的模型。
CLIP (Contrastive Language-Image Pre-training) 模型:采用**双编码器架构 (Dual-Encoder Architecture)**,包含一个图像编码器和一个文本编码器,分别将图像和文本映射到同一个共享的向量空间中。
对比学习 (Contrastive Learning) 策略、零样本(Zero-shot)识别能力
北京智源人工智能研究院(BAAI)开发的 bge-visualized-m3(Visualized-BGE 的 M3 版本) 是一个很有代表性的现代多模态嵌入模型。
代码示例(略)
第三节 向量数据库
一、向量数据库的作用
主要功能:高效的相似性搜索(索引技术(如 HNSW, IVF)→毫秒级的近似最近邻(ANN)查询);高维数据存储与管理;丰富的查询能力;可扩展与高可用;数据与模型生态集成。
向量数据库与传统数据库的主要差异如下:
| 维度 | 向量数据库 | 传统数据库 (RDBMS) |
|---|---|---|
| 核心数据类型 | 高维向量 (Embeddings) | 结构化数据 (文本、数字、日期) |
| 查询方式 | 相似性搜索 (ANN) | 精确匹配 |
| 索引机制 | HNSW, IVF, LSH 等 ANN 索引 | B-Tree, Hash Index |
| 主要应用场景 | AI 应用、RAG、推荐系统、图像/语音识别 | 业务系统 (ERP, CRM)、金融交易、数据报表 |
| 数据规模 | 轻松应对千亿级向量 | 通常在千万到亿级行数据,更大规模需复杂分库分表 |
| 性能特点 | 高维数据检索性能极高,计算密集型 | 结构化数据查询快,高维数据查询性能呈指数级下降 |
| 一致性 | 通常为最终一致性 | 强一致性 (ACID 事务) |
注:非相互替代的关系,而是互补关系
二、工作原理
向量数据库通常采用四层架构,通过存储层、索引层、查询层和服务层的协同工作来实现高效相似性搜索
主要技术手段包括:
- 基于树的方法:如 Annoy 使用的随机投影树,通过树形结构实现对数复杂度的搜索
- 基于哈希的方法:如 LSH(局部敏感哈希),通过哈希函数将相似向量映射到同一“桶”
- 基于图的方法:如 HNSW(分层可导航小世界图),通过多层邻近图结构实现快速搜索
- 基于量化的方法:如 Faiss 的 IVF 和 PQ,通过聚类和量化压缩向量
三、主流向量数据库介绍
选择建议:
- 新手入门/小型项目:从
ChromaDB或FAISS开始是最佳选择。它们与 LangChain/LlamaIndex 紧密集成,几行代码就能运行,且能满足基本的存储和检索需求。 - 生产环境/大规模应用:当数据量超过百万级,或需要高并发、实时更新、复杂元数据过滤时,应考虑更专业的解决方案,如
Milvus、Weaviate或云服务Pinecone。
四、本地向量存储:以FAISS为例(略)
第四节 Milvus实践
实践课程
第五节 索引优化
基于LlamaIndex的高性能生产级RAG构建方案,对索引优化进行更深入的探讨。
一、上下文扩展
句子窗口检索(Sentence Window Retrieval),该技术巧妙地结合了两种方法的优点:它在检索时聚焦于高度精确的单个句子,在送入LLM生成答案前,又智能地将上下文扩展回一个更宽的“窗口”,从而同时保证检索的准确性和生成的质量。
二、结构化索引
其原理是在索引文本块的同时,为其附加结构化的元数据(Metadata)。
在检索时实现“元数据过滤”和“向量搜索”的结合。
“先过滤,再搜索”的策略,能够极大地缩小检索范围
更多推荐


所有评论(0)