AI创想

标题: Embedding与向量数据库 [打印本页]

作者: admin    时间: 2025-9-7 23:04
标题: Embedding与向量数据库
1.Embedding  是什么

Embedding Model 是一种机器学习模型,它的核心任务是将离散的、高维的符号(如单词、句子、图片、用户、商品等)转换成连续的、低维的向量(称为“嵌入”或“向量表示”),并且这个向量能有效地捕捉原始符号的语义、关系或特征。
        1.1 通俗理解
            Embedding Model是让计算机“理解”世界的核心工具,把“文字、图片、音频”等信息变成一串有意义的数字我们称之为“向量” 。
        类比:假设用3个数字描述水果:
    1.2 代码理解

    这里我们使用Python 中 Gensim 库,如果没有安装的童鞋执行如下进行安装
  1. pip install gensim -i https://pypi.tuna.tsinghua.edu.cn/simple
复制代码
简单介绍:Gensim 是一个专注于非结构化文本处理的 Python 库,主要用于主题建模、文档相似度和词向量训练。可通过如下链接获取资料
gensim库学习:初识:Python库gensim-CSDN博客
   官网: https://radimrehurek.com/gensim/
   GitHub: https://github.com/RaRe-Technologies/gensim、
示例代码
  1. # 本脚本演示如何使用Gensim库进行Word2Vec词向量训练与相似度计算
  2. # 包含:语料准备、模型训练、词向量输出与词语相似度计算
  3. from gensim.models import Word2Vec  # 导入Word2Vec模型类
  4. # 1. 语料准备(已分词)
  5. sentences = [["猫", "吃", "鱼"], ["狗", "啃", "骨头"]]  # 两个简单的中文句子,已分词
  6. # 2. 训练Word2Vec模型
  7. model = Word2Vec(sentences, vector_size=3, window=2, min_count=1)  # 训练Word2Vec模型,向量维度为3,窗口大小为2,最小词频为1
  8. # 3. 输出词向量
  9. print(model.wv["猫"])  # 输出“猫”对应的词向量(示例输出如[-0.1, 0.8, 0.2])
  10. # 4. 计算词语相似度
  11. print(model.wv.similarity("猫", "狗"))  # 计算“猫”和“狗”的词向量余弦相似度
复制代码
2.Embedding如何判断相似值

在大模型中判断两个句子是否相似,主要通过以下步骤实现
相似度判断流程:
2.1 文本向量化(Embedding)

    模型将每个句子转换为向量化数字
     例如:
     句子A: 早上好,你吃饭了吗
     句子B: 早上好,我吃饭了
      向量化
     句子A → [0.23, -0.45, 0.12, ..., 0.78]
     句子B → [0.25, -0.42, 0.15, ..., 0.75]
   2.2.余弦相似度计算

   将向量化后的数值进行余弦计算
     计算两个向量夹角的余弦值
      公式:cos(θ) = (A·B) / (||A|| × ||B||)
       其中:
      A·B 是向量点积
      ||A|| 和 ||B|| 是向量模长
    2.3.相似度评估标识

看最后计算出来的值接近哪个范围进行判断
      余弦值范围:[-1, 1]
     1:完全相同(向量方向完全一致)
     0:无关(向量正交)
    -1:完全相反
    2.4 代码示例
  1. from sentence_transformers import SentenceTransformer, util
  2. # 加载预训练模型
  3. model = SentenceTransformer('paraphrase-multilingual-MiniLM-L12-v2')
  4. # 定义句子
  5. sentences = [
  6.     "早上好,你吃饭了吗",  # 句子A
  7.     "早上好,我吃饭了"    # 句子B
  8. ]
  9. # 生成嵌入向量
  10. embeddings = model.encode(sentences)
  11. # 计算余弦相似度
  12. cosine_sim = util.pytorch_cos_sim(embeddings[0], embeddings[1])
  13. print(f"余弦相似度: {cosine_sim.item():.4f}")  # 输出: 0.9263
复制代码
3.Embedding的N-Gram(N元语法)

           在Embedding技术中,N元语法(N-gram)的核心作用是引入局部上下文信息,以增强词或子词表示的语义丰富性、区分性和鲁棒性。 它主要用于解决单纯基于词(word)的Embedding(如经典的Word2Vec)的一些局限性。
     3.1什么是N-Gram

      N-Gram 是自然语言处理(NLP)中的基础概念,指文本中连续的 N 个项(item)组成的序列。这里的"项"可以是:
N-Gram 类型详解
类型公式示例(文本:"今天天气好")
1-gram$P(w_i)$今, 天, 天, 气, 好
2-gram$P(w_i|w_{i-1})$今天, 天天, 天气, 气好
3-gram$P(w_i|w_{i-2},w_{i-1})$今天天, 天天, 天气, 气好
4-gram$P(w_i|w_{i-3}...w_{i-1})$今天天气, 天天, 天气, 气好
3.2N-gram在Embedding中的主要作用和应用方式

4.Embedding的使用场景

5.向量数据库

  5.1什么是向量数据库  

  向量数据库(Vector Database) 是专为存储、索引和检索高维向量(例如 Embedding 生成的语义向量)而设计的数据库。它的核心作用是解决传统数据库难以高效处理的 “相似性搜索” 问题。
  本质:向量数据库是AI时代的“相似性搜索引擎”,让机器理解的数据(向量)变得可高效检索,是大模型应用的关键基础设施。
常见的向量数据库:FALSS、Milvus、Pinecone
5.2 工作原理

输入数据 → 通过模型生成 Embedding 向量 → 存入向量数据库 → 用户输入查询 → 查询被向量化 → 在数据库中搜索相似向量 → 返回相似结果
5.3 与传统数据库对比

能力传统数据库(SQL/NoSQL)向量数据库
数据类型结构化数据(行/文档)如MySQL存储Excel格式数据高维非结构化特征向量
核心查询方式精确匹配(SQL/条件)相似度搜索(ANN)
适用场景交易、统计分析语义理解、内容推荐
数据关联逻辑基于键值/关系基于向量空间距离
5.4 数据库选型

2)传统数据库检索
3)向量数据库特点





欢迎光临 AI创想 (http://llms-ai.com/) Powered by Discuz! X3.4