导航菜单

  • 1.vector
  • 2.milvus
  • 3.pymilvus
  • 4.rag
  • 5.rag_measure
  • 7.search
  • ragflow
  • heapq
  • HNSW
  • cosine_similarity
  • math
  • typing
  • etcd
  • minio
  • collections
  • jieba
  • random
  • beautifulsoup4
  • chromadb
  • sentence_transformers
  • numpy
  • lxml
  • openpyxl
  • PyMuPDF
  • python-docx
  • requests
  • python-pptx
  • text_splitter
  • all-MiniLM-L6-v2
  • openai
  • llm
  • BPETokenizer
  • Flask
  • RAGAS
  • BagofWords
  • langchain
  • Pydantic
  • abc
  • faiss
  • MMR
  • scikit-learn
  • 1.向量
    • 1.1 一维向量
    • 1.2 二维向量
    • 1.3 三维向量
  • 2.什么是向量嵌入
    • 2.1 简单理解
  • 3.向量数据库
    • 3.1 什么是向量数据库?
    • 3.2 向量数据库有什么用?
    • 3.3 向量数据库是怎么工作的?
  • 4.参考

1.向量 #

向量是数学中一个非常重要的概念,它不仅仅是一个数字,而是同时包含大小和方向的量。 向量是现代AI大模型的"通用语言"和"思维载体"。

1.1 一维向量 #

想象一下,如果我告诉你"向前走5步",这个指令包含了两个信息:

  • 方向:向前
  • 大小:5步

这就是向量的本质!向量同时表示"多大"和"往哪个方向"。

  • 一维向量

1.2 二维向量 #

在坐标系中,我们通常用有序数对来表示向量:

  • 二维向量:(x, y)

  • 二维向量

  • 正切函数
  • 反正切函数
# 导入数学库用于数学运算
import math
# 导入类型注解 Tuple
from typing import Tuple

# 定义函数,计算二维向量 (x, y) 的长度
def vector_length(x: float, y: float) -> float:
    # 调用 math.hypot 计算两数的欧几里得长度
    return math.hypot(x, y)

# 定义函数,计算二维向量 (x, y) 与 x 轴的夹角(以角度为单位)
def vector_direction(x: float, y: float) -> float:
    # 使用 atan2 计算夹角,再用 degrees 转换为角度
    return math.degrees(math.atan2(y, x))

# 定义函数,计算从点 a 到点 b 的向量
def vector_from_points(a: Tuple[float, float], b: Tuple[float, float]) -> Tuple[float, float]:
    # 返回 b 点减去 a 点得到的向量 (x2-x1, y2-y1)
    return b[0] - a[0], b[1] - a[1]

# 定义一个二维向量 v
v = (3, 4)
# 打印向量 v 的长度,保留两位小数
print(f"向量 {v} 的长度: {vector_length(*v):.2f}")
# 定义一个用于计算方向角的二维向量 v_dir
v_dir = (1, 1)
# 打印向量 v_dir 与 x 轴的夹角,保留两位小数,并加上度数符号
print(f"向量 {v_dir} 的方向角: {vector_direction(*v_dir):.2f}°")
# 定义点 A 的坐标
point_a = (2, 1)
# 定义点 B 的坐标
point_b = (5, 5)
# 计算从点 A 到点 B 的向量
ab = vector_from_points(point_a, point_b)
# 打印该向量
print(f"从点 {point_a} 到点 {point_b} 的向量: {ab}")
# 打印该向量的长度,保留两位小数
print(f"该向量的长度: {vector_length(*ab):.2f}")

1.3 三维向量 #

在坐标系中,我们通常用有序数对来表示向量:

  • 三维向量:(x, y, z)

三维向量

2.什么是向量嵌入 #

向量Embeddings(嵌入)是一种将离散对象(如文字、图片、声音等)映射到连续向量空间的技术。

简单来说,它是将难以直接计算的信息"嵌入"到一个数学空间中,使计算机能够处理这些信息。

2.1 简单理解 #

想象一下,如果我们要描述不同的水果:

  • 苹果:红色、圆形、甜的
  • 香蕉:黄色、弯曲、甜的
  • 柠檬:黄色、椭圆形、酸的

我们可以用数字来表示这些特征:

  • 颜色:红色=1,黄色=2
  • 形状:圆形=1,弯曲=2,椭圆形=3
  • 味道:甜=1,酸=2

那么这些水果就可以表示为:

  • 苹果:[1,1,1]
  • 香蕉:[2,2,1]
  • 柠檬:[2,3,2]

这些数字列表就是简单的"嵌入"。计算机可以通过这些数字来理解水果之间的关系,比如香蕉和柠檬都是黄色的,所以它们的第一个数字相同。

  • 水果嵌入
  • 向量嵌入

3.向量数据库 #

3.1 什么是向量数据库? #

  • 向量数据库

向量数据库是一种特殊的数据库,它不像我们平常用的表格那样存储数据,而是把信息变成一串数字(也就是"向量"),然后存储起来。

想象一下,如果我们要描述不同的水果,普通数据库可能会这样记录:

  • 名字:苹果
  • 颜色:红色
  • 形状:圆形
  • 味道:甜

但向量数据库会把“苹果”这个概念变成一串数字,比如:[1, 1, 1]。这串数字就代表了苹果的各种特征。

3.2 向量数据库有什么用? #

最重要的用途就是可以快速找到相似的东西!比如:

  • 你拍了一张照片,想找类似的图片
  • 你写了一段话,想找相似的文章
  • 你听了一首歌,想找风格相近的音乐

3.3 向量数据库是怎么工作的? #

  1. 转换:首先,把文字、图片等信息转换成数字向量
  2. 存储:把这些向量存储在数据库中
  3. 搜索:当你要找东西时,也把你的问题转成向量
  4. 比较:计算你的问题向量和数据库中所有向量的相似度
  5. 返回结果:把最相似的结果返回给你

4.参考 #

  • 一维向量
  • 二维向量
  • 三维向量
  • 正切函数
  • 反正切函数
  • 向量嵌入
  • math
  • typing

访问验证

请输入访问令牌

Token不正确,请重新输入