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

嵌入向量与向量数据库:AI时代的语义搜索革命

一、嵌入向量(Embedding Vector)

定义

嵌入向量是将 高维数据(如文本、图像、音频)映射到 低维连续向量空间 的表示方式。每个向量捕捉数据的语义信息,使得相似的数据在向量空间中距离更近,不相似的数据距离更远。

例如:

将轿车、轮船、飞机、自行车等交通工具定义成嵌入向量存储。

如果定义了三个维度:能否在陆地上运行、能否飞、能跑的多快等等。

那么以上几个交通工具定义的向量可以是:

轿车(1,0,5)

轮船(0,0,3)

飞机(1,1,10)

自行车(1,0,1)

如果相距的距离越近,我们可以认为他们越相似,实际生产过程中。使用的向量维度一般在1024维左右。

生成方法
  1. 预训练模型
    • 文本:BERT、Word2Vec、Sentence-BERT 等模型将文本转换为向量。
    • 图像:ResNet、CLIP 等模型提取图像特征。
    • 音频:Wav2Vec2、OpenAI Whisper 等模型生成音频向量。
  1. 自定义模型
    • 通过微调预训练模型或训练自定义神经网络生成特定领域的嵌入向量(如医学文献嵌入)。
  1. 传统方法
    • 词袋模型(Bag-of-Words)、TF-IDF 等(适用于简单场景,效果有限)。
特点
  • 低维稠密:例如,文本嵌入向量维度通常为 768~1024。
  • 语义相似性:通过余弦相似度或欧几里得距离衡量相似性。
  • 可扩展性:适用于大规模数据(如亿级文档库)。
应用场景

场景

示例

相似性搜索

在商品库中搜索与用户查询最相似的商品。

聚类分析

对用户行为日志进行聚类,发现兴趣群体。

推荐系统

根据用户历史行为向量推荐相似内容。

异常检测

通过向量距离检测异常数据点。


二、向量数据库(Vector Database)

定义

向量数据库是专门 存储和查询嵌入向量 的数据库,支持高效相似性搜索(如 k-近邻搜索)。相比传统数据库,它优化了高维向量的索引和检索效率。

核心功能
  1. 相似性搜索
    • 支持 近似最近邻搜索(Approximate Nearest Neighbor, ANN),例如 Faiss、Annoy 等算法。
    • 查询时返回与目标向量最接近的 K 个结果(如搜索“猫”的图片时返回相似图片)。
  1. 高效索引
    • 使用 HNSW(Hierarchical Navigable Small World)或 IVF-PQ(Inverted File with Product Quantization)等算法加速搜索。
  1. 大规模存储
    • 支持 PB 级向量数据的存储和实时检索(如 Milvus、Pinecone、Weaviate)。
  1. 混合查询
    • 结合向量相似性和传统属性过滤(如“红色且价格低于 100 元的商品”)。
主流工具

数据库

特点

Pinecone

云原生,支持实时向量搜索和自动扩展。

Faiss

Facebook 开源,适合本地部署,支持多种索引类型(HNSW、IVF-PQ)。

Milvus

开源,支持向量与元数据关联,适用于推荐系统、图像检索。

Weaviate

支持 GraphQL 接口,集成 AI 模型生成嵌入向量。


三、嵌入向量与向量数据库的关系

  1. 流程示例
    • 文本嵌入模型(如 BERT)→ 向量数据库相似性搜索
    • 图像嵌入模型(如 ResNet)→ 向量数据库相似图像检索
  1. 典型应用场景
    • 搜索引擎:Google 的语义搜索(用户输入“苹果”,返回水果和公司相关内容)。
    • 推荐系统:Netflix 根据用户观看记录向量推荐相似电影。
    • 知识图谱:将实体和关系嵌入向量,加速图谱查询。

四、技术挑战与解决方案

挑战

解决方案

高维计算复杂度

使用 ANN 算法(如 HNSW、IVF-PQ)降低搜索时间。

数据动态更新

支持 增量更新实时写入(如 Milvus 的 insert 接口)。

多模态融合

存储和检索文本、图像、音频的混合向量(如 CLIP 模型生成图文对齐向量)。

隐私与安全

加密存储、访问控制(如 Pinecone 的 IAM 管理)。


五、示例代码(使用 Faiss + BERT)

from sentence_transformers import SentenceTransformer
import faiss
import numpy as np# 1. 生成嵌入向量
model = SentenceTransformer('all-MiniLM-L6-v2')
vectors = model.encode(["苹果", "香蕉", "iPhone"])  # 3 个 384 维向量# 2. 构建 Faiss 索引
dimension = 384
index = faiss.IndexFlatL2(dimension)  # 使用 L2 距离
index.add(vectors)  # 添加向量到索引# 3. 相似性搜索
query_vector = model.encode("水果")  # 用户查询
distances, indices = index.search(np.array([query_vector]), k=2)  # 返回最相似的 2 个结果
print(indices)  # 输出 [0, 1]("苹果" 和 "香蕉")

六、实际案例

案例 1:电商商品推荐
  • 流程
    1. 将商品描述生成嵌入向量。
    2. 使用向量数据库存储所有商品向量。
    3. 用户搜索“运动鞋”时,生成查询向量并检索相似商品。
案例 2:图像检索
  • 流程
    1. 使用 ResNet 提取图像特征。
    2. 将特征向量存入向量数据库。
    3. 用户上传一张图片,检索相似图像(如 Pinterest 的“视觉搜索”)。

七、总结

概念

核心价值

典型工具

嵌入向量

将数据转化为可计算的语义表示

BERT、ResNet、CLIP

向量数据库

高效存储和检索海量向量数据

Faiss、Pinecone、Milvus

嵌入向量与向量数据库的结合是 AI 应用的核心基础设施,尤其在大规模语义搜索、推荐系统和多模态任务中不可或缺。

http://www.lryc.cn/news/603560.html

相关文章:

  • 力扣30 天 Pandas 挑战(3)---数据操作
  • 【go】语言的匿名变量如何定义与使用
  • 算法【1】
  • Three.js实现银河螺旋星云粒子特效——原理、实现
  • Makefile 与 CMake 关系指南
  • Java设计模式之《备忘录模式》
  • 怎么理解使用MQ解决分布式事务 -- 以kafka为例
  • 【EDA】Calma--早期版图绘制工具商
  • Kafka运维实战 16 - kafka 分区重新分配【实战】
  • Javaweb————揭秘404 not found(HTTP常用响应码)
  • 【数据结构】真题 2016
  • STM32--DHT11(标准库)驱动开发
  • JVM 崩溃(Fatal Error)解决方法
  • 26考研11408数据结构
  • 【Docker】 Docker镜像瘦身终极指南:多阶段构建+Alpine优化+分层策略深度解析
  • 飞机大战小游戏
  • 第十六章 Java基础-拼图小游戏
  • 【Unity编辑器扩展】Unity 笔记编辑器开发详解(支持多页面、重命名、持久化保存)
  • 项目历程—生命数组游戏(两版本)
  • Unity 编辑器开发 之 Excel导表工具
  • 游戏盾从哪些方面保护网站业务?
  • c语言-数据结构-二叉树OJ之子树与二叉树的构建
  • QT项目 -仿QQ音乐的音乐播放器(第三节)
  • 电脑没有声音了怎么恢复 快速解决音频故障
  • 预装Windows 11系统的新电脑怎么跳过联网验机
  • Wndows Docker Desktop-Unexpected WSL error
  • Docker初学者需要了解的几个知识点(三)
  • docker 重新安裝
  • 小杰数据结构(one day)——心若安,便是晴天;心若乱,便是阴天。
  • 数据结构 排序(2)---选择排序