1. 向量嵌入:语义检索的基石
1.1 基础概念解析
在信息检索领域,向量嵌入(Embedding)是将现实世界中的各类数据(文本、图像、音频等)转化为高维向量空间中的数值表示的过程。这个转换过程通过深度学习模型实现,使得原始数据的语义特征被编码为向量形式。举个生活中的例子,就像把一本书的内容浓缩成图书馆目录卡上的关键词——既保留了核心信息,又便于快速查找。
关键特性体现在三个方面:
- 语义保留:好的嵌入模型能准确捕捉数据背后的语义。比如"猫"和"喵星人"的向量距离会很近,而"猫"和"汽车"的向量则相距较远
- 距离度量:常用余弦相似度(范围[-1,1])衡量向量相似性,1表示完全相同,-1表示完全相反。实际应用中通常取正值范围[0,1]
- 维度压缩:原始数据可能包含数百万特征(如像素或词频),嵌入模型将其压缩到数百维(如768维)同时保留关键信息
1.2 在RAG中的应用流程
典型的检索增强生成(RAG)系统中,嵌入模型承担着桥梁作用:
python复制# 伪代码示例
documents = ["文档1内容", "文档2内容"...] # 原始文档
query = "用户提问"
# 1. 文档处理
chunks = split_documents(documents) # 文档分块
embeddings = embed_model.encode(chunks) # 生成向量
vector_db.add(embeddings, chunks) # 存入向量库
# 2. 查询处理
query_embedding = embed_model.encode(query) # 查询向量化
results = vector_db.search(query_embedding, top_k=3) # 相似度检索
# 3. 生成阶段
context = [result.text for result in results]
answer = llm.generate(query, context) # 结合上下文生成回答
关键点:嵌入质量直接决定检索效果。实践中发现,专业领域(如医疗、法律)使用通用嵌入模型效果往往不佳,需要进行领域适配。
1.3 技术演进路线
静态词嵌入时代
- Word2Vec (2013):通过预测上下文词训练,得到静态词向量
- 缺点:无法处理一词多义("苹果"公司 vs "苹果"水果)
- GloVe (2014):基于全局词共现统计,优化了低频词处理
动态上下文嵌入
- **Transformer**架构带来革命:
- 自注意力机制动态调整词向量
- 同一词在不同上下文获得不同表示
- 代表模型:BERT (2018)、RoBERTa
模型对比表:
| 特性
