基础概念与应用)
1. 什么是向量在数学和计算机科学中向量Vector是一个具有大小和方向的量。它可以用来表示空间中的点、方向、位移或任何具有多个分量的数据。在编程和数据处理中向量通常表示为有序的数字列表数组例如# Python 中的向量表示 vector_2d [3.0, 4.0] # 二维向量 vector_3d [1.0, 2.0, 3.0] # 三维向量2. 向量的基本运算2.1 向量加法两个向量相加对应分量相加def vector_add(v1, v2): return [v1[i] v2[i] for i in range(len(v1))] 示例 v1 [1, 2, 3] v2 [4, 5, 6] result vector_add(v1, v2) # [5, 7, 9]2.2 向量点积内积点积是两个向量对应分量乘积之和结果是一个标量def dot_product(v1, v2): return sum(v1[i] * v2[i] for i in range(len(v1))) 示例 v1 [1, 2, 3] v2 [4, 5, 6] result dot_product(v1, v2) # 322.3 向量范数长度向量的范数表示其大小常用欧几里得范数L2范数import math def vector_norm(v): return math.sqrt(sum(x * x for x in v)) 示例 v [3, 4] length vector_norm(v) # 5.03. 向量在计算机科学中的应用3.1 机器学习与向量嵌入在机器学习中向量常用于表示数据的特征。词向量Word Embeddings将单词映射到高维向量空间# 示例简单的词向量表示 word_vectors { king: [0.2, 0.8, -0.3], queen: [0.3, 0.7, -0.2], man: [0.1, 0.9, -0.4], woman: [0.2, 0.8, -0.3] }3.2 图形学与游戏开发在计算机图形学和游戏开发中向量用于表示位置、速度、加速度和方向class Vector2D: def __init__(self, x, y): self.x x self.y y def add(self, other): return Vector2D(self.x other.x, self.y other.y) def scale(self, scalar): return Vector2D(self.x * scalar, self.y * scalar) 示例游戏中的位置移动 position Vector2D(100, 200) velocity Vector2D(5, 3) new_position position.add(velocity) # 移动到新位置3.3 数据库与向量搜索现代数据库支持向量搜索用于相似性查找-- PostgreSQL 中使用 pgvector 扩展进行向量搜索 CREATE TABLE items ( id SERIAL PRIMARY KEY, name VARCHAR(100), embedding VECTOR(1536) ); -- 查找最相似的物品 SELECT name, embedding [0.1, 0.2, ...] AS distance FROM items ORDER BY distance LIMIT 10;4. 向量数据库简介向量数据库专门用于存储和检索向量数据支持高效的相似性搜索Pinecone云原生向量数据库Weaviate开源向量搜索引擎QdrantRust 编写的高性能向量数据库Milvus开源向量数据库支持大规模向量检索5. 实践建议选择合适的维度根据应用场景选择向量维度平衡精度和性能归一化处理对向量进行归一化可以提高相似性计算的准确性索引优化对于大规模向量数据使用合适的索引结构如 HNSW、IVF距离度量根据应用选择合适的距离度量方式余弦相似度、欧氏距离等6. 总结向量作为表示多维数据的基本工具在人工智能、数据科学和计算机图形学等领域有着广泛的应用。理解向量的基本概念和运算掌握向量在具体场景中的应用方法对于现代软件开发至关重要。