一文讲透什么是向量数据库?

一文讲透什么是向量数据库?

向量数据库是一种组织有序的向量嵌入集合,整合了可以随时创建、读取、更新和删除的向量嵌入。向量嵌入将数据块 (例如文本或图像) 表示为数值。

什么是嵌入模型?

嵌入模型[1]会将各种数据 (例如文本、图像、图表和视频) 转换为数值向量,以便捕捉其在多维向量空间中的含义和细微差别。嵌入技术的选择取决于应用需求,同时要兼顾语义深度、计算效率、要编码的数据的类型、维度等因素。

在这里插入图片描述

man、king、woman 和 queen 这几个词映射到的向量空间 (来源:baeldung[2])

通过将向量映射到多维空间,可以对向量的语义相似性进行细致的分析,从而显著提高搜索和数据分类的准确性。在使用 AI 聊天机器人[3]、大语言模型 (LLM)[4]、检索增强生成 (RAG)[5] 和向量数据库的 AI 应用中以及在搜索引擎和许多其他用例中,嵌入模型发挥着至关重要的作用。

嵌入模型如何与向量数据库搭配使用?

提取私有企业数据后,系统会将这些数据分块,创建一个向量来表示它们,并将数据块及其对应的向量同可选的元数据一起存储在向量数据库中,以供日后检索。

在这里插入图片描述

嵌入模型用于提取数据及理解用户提示

在收到用户、聊天机器人或 AI 应用发来的查询后,系统会对其进行解析,并使用嵌入模型来获取代表提示的各个部分的向量嵌入。然后,使用提示的向量在向量数据库中执行语义搜索,以找到确切匹配或相似度排名前 K 位的向量及其相应的数据块,这些数据块会被放入到提示的上下文中,然后被发送给 LLM。

LangChainLlamaIndex 都是热门的开源框架,支持创建 AI 聊天机器人和 LLM 解决方案。

热门的 LLM 包括 OpenAI GPTMeta LlaMA

热门的向量数据库包括 PineconeMilvus 等。

两大热门编程语言是 PythonTypeScript

向量数据库中的相似性搜索是什么?

相似性搜索 (也称为向量搜索、向量相似性搜索或语义搜索) 是指人工智能应用程序根据指定的相似性度量标准,从数据库中高效地检索与给定查询的向量嵌入在语义上相似的向量的过程:

  • 欧几里得距离:测量各点之间的直接距离。这对于总体差异至关重要的密集特征集的聚类或分类非常有用。

  • 余弦相似度:关注向量之间的角度。

### Milvus 向量数据库入门教程 #### 一、基本概念功能概述 Milvus 是一款专为处理非结构化数据设计的强大向量数据库,旨在解决复杂语义关系和高维向量数据的相似性检索问题[^1]。相比于传统的关系型数据库,Milvus 提供了更加智能化和高效的检索方式,适用于需要语义理解和多模态处理的应用场景。 #### 二、安装环境配置 对于初学者来说,推荐使用 **Milvus Lite** 版本进行本地 Python 程序开发。该版本非常适合初次接触 Milvus 的用户,因为它简单易用且无需复杂的部署流程[^2]。而对于更大规模的数据集或生产环境中,则建议考虑 Docker 或 Kubernetes 部署方案。这些高级部署模式不仅提供了更高的灵活性,还保持了 API 的一致性,使得迁移变得轻松便捷。 #### 三、核心操作指南 ##### 创建集合 (Collection) 在开始之前,首先要定义并创建一个新的集合用于存储向量数据: ```python from pymilvus import CollectionSchema, FieldSchema, DataType, connections, utility connections.connect("default") fields = [ FieldSchema(name="id", dtype=DataType.INT64, is_primary=True), FieldSchema(name="embedding", dtype=DataType.FLOAT_VECTOR, dim=128) ] schema = CollectionSchema(fields, description="Example collection") collection = Collection(name="example_collection", schema=schema) ``` ##### 插入数据 接着可以往刚刚建立好的集合里插入一些测试数据: ```python import numpy as np data = [ [i for i in range(10)], # id field data [[np.random.rand() * 0.5 for _ in range(128)] for _ in range(10)] # embedding vectors ] mr = collection.insert(data) print(f"Number of entities inserted: {len(mr.primary_keys)}") ``` ##### 构建索引 为了提高查询效率,在实际应用中通常会对特定字段构建索引来加速搜索速度。这里以 HNSW 索引为例展示如何设置参数并创建索引: ```python index_params = { "index_type": "HNSW", "metric_type": "L2", "params": {"M": 16, "efConstruction": 64} } collection.create_index(field_name="embedding", index_params=index_params) ``` ##### 执行搜索 最后一步就是利用已有的索引来进行高效地向量相似度匹配查找: ```python search_param = {"metric_type": "L2", "params": {"ef": 10}} results = collection.search( data=[[0.1]*128], param=search_param, limit=3, expr=None, output_fields=["id"] ) for result in results: print(result) ``` 以上便是关于 Milvus 向量数据库的基础入门指导,涵盖了从安装到执行具体任务所需的各个重要环节[^3][^4].
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值