当前位置: 首页 > 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.dtcms.com/a/305194.html

相关文章:

  • 【Git】分支
  • 前端接入DeepSeek
  • 数据结构(6)单链表算法题(下)
  • 如何使用Spring AI框架开发mcp接口并发布成微服务
  • C51 中断
  • 笔试——Day22
  • 【Android】日期选择器
  • 镁金属接骨螺钉注册检测:骨科植入安全的科学基石
  • 【面试】软件测试面试题
  • ICT模拟零件测试方法--电阻测试
  • 集成电路学习:什么是WDT看门狗定时器
  • Java中的异常判断以及文件中的常用方法及功能
  • UCLAMP0501P.TCT SEMTECH:超低电容TVS二极管 0.25pF+20kV防护!
  • Python与Spark
  • 26考研11408数据结构
  • yolo11安卓端部署检测图片
  • Docker用Web应用实例深入容器
  • Docker初学者需要了解的几个知识点(三):Docker引擎与Docker Desktop
  • prometheus_client 调用统计
  • 2025年中科院与JCR期刊分区深度对比(第一期):TON中科院分区3区不变,JCR分区升至Q1;TOSEM重回中科院1区!
  • Wan2.1
  • openEuler性能测试常用工具-fio开源压力测试工具
  • 05动手学深度学习(下)
  • EnergyMath芯详科技 EMS4100/MES4000/MES3900
  • sqlite3---维护命令、回调函数
  • 用命令查看Android设备的 Linux 内核版本,了解其对应的硬件支持各种特性
  • gRPC性能陷阱:低延迟网络下的客户端瓶颈揭秘
  • k8s搭建nfs共享存储
  • 前端代码打包与压缩完全指南
  • div 封装日历