向量嵌入技术及其在RAG中的应用
一、向量嵌入概述
向量嵌入(Embedding)是将现实世界中的多模态数据(文本、图片、视频、语音等)转化为高维空间向量的技术方法,在向量空间中实现相似度的统一度量。
核心特征
- 语义相似性:语义相近的对象在向量空间中的距离更近
- 统一度量:支持所有距离和相似度计算方法(如余弦相似度、欧氏距离等)
二、嵌入模型的发展与分类
1. 静态嵌入
- 代表模型:Word2Vec、GloVe
- 特点:无上下文语义信息
- 训练方法:
- Skip-gram(跳字模型)
- CBOW(连续词袋模型)
- 全局词-词共现矩阵融合
2. 动态嵌入
- 代表模型:BERT(Transformer Encoder-only架构)
- 特点:深度上下文语义嵌入
- 训练方法:
- 掩码语言模型(MLM)
- 下一句预测(NSP)
- 度量学习(Metric Learning)
- 对比学习(Contrastive Learning)
3. 评估指标
- 模型参数量
- 平均任务得分
- 嵌入维度
- 最大处理长度
- 参考基准:MTEB(Massive Text Embedding Benchmark)榜单
三、多模态嵌入
目标与挑战
- 目标:处理现实世界中的多模态信息
- 关键挑战:解决跨模态对齐问题
解决方案:CLIP模型
- 全称:Contrastive Language-Image Pre-training
- 架构:双编码器结构
- 图像编码器
- 文本编码器
- 映射机制:将图像和文本映射到同一共享向量空间
训练策略
采用对比学习(Contrastive Learning)策略:
- 最大化正确图文对的向量相似度
- 最小化错误配对间的相似度
常用多模态模型
- bge-visuallized-m3
- M3核心特性:
- 多语言性:原生支持100种语言
- 多功能性:同时支持密集检索、多向量检索和稀疏检索
- 多粒度性:最大处理长度8192个token
四、向量数据库
核心作用
- 结构化存储海量向量数据
- 快速、准确实现相似性搜索
四层架构体系
| 架构层 | 功能描述 | 关键技术 |
|---|---|---|
| 存储层 | 存储向量数据和元数据 | 分布式存储优化 |
| 索引层 | 维护索引算法 | HNSW、LSH、PQ等 |
| 查询层 | 处理查询请求 | 混合查询、查询优化 |
| 服务层 | 管理客户端连接 | 监控、日志、安全管理 |
主要技术手段
基于树的方法
- 代表:Annoy(随机投影树)
- 特点:树形结构实现对数复杂度搜索
基于哈希的方法
- 代表:LSH(局部敏感哈希)
- 特点:相似向量映射到同一"桶"
基于图的方法
- 代表:HNSW(分层可导航小世界图)
- 特点:多层邻近图结构快速搜索
基于量化的方法
- 代表:Faiss的IVF和PQ
- 特点:聚类和量化压缩向量
主流向量数据库
- Pinecone
- Milvus
- Qdrant
- Weaviate
- Chroma
五、RAG中的嵌入应用优化
1. 索引优化策略
上下文扩展
- 核心思路:为检索精确性索引小块,为上下文丰富性检索大块
- 工作流程:
- 索引构建:单个句子作为节点,上下文窗口作为metadata
- 检索阶段:在单句上检索,内容扩展到上下文窗口
结构化索引
- 核心思路:建立附加结构化Metadata的多层次索引
- 实现方式:类似关系型数据库的WHERE条件语句
- 检索机制:递归检索
2. 知识库构建流程
- 文档分块:将文档分割为适当大小的chunk
- 向量化:使用嵌入模型将chunk转化为向量
- 存储入库:存入专门的向量数据库
3. 索引查询机制
- 基于相似度检索相关文档块
- 支持多模态混合查询
- 实现跨模态语义对齐