什么是向量数据库
再搞清楚这个问题之前,先需要知道什么是向量(vector)。
什么是向量
在AI领域中,向量是一个具有大小和方向的数学对象。它可以用来表示现实世界中的各种事物,例如图像、语音、文本等。
在机器学习和深度学习中,向量通常被用作表示数据的形式,其中每个向量的维度代表了不同的特征或属性。例如,在图像分类任务中,一个图像可以被表示为像素值组成的向量;在自然语言处理任务中,一句话可以被表示为单词嵌入(word embeddings)组成的向量。通过对这些向量进行计算和比较,机器可以从数据中提取出有用的信息,如相似性、聚类等。
拿比如人脸识别技术来说,计算机从照片或视频中提取出人脸的图像,然后将人脸图像转换为128维或者更高维度的向量。说到向量,就离不开embeddings。下面说下embeddings是什么。
什么是embeddings
embeddings是一个相对低维度的空间,可以将高维向量转换为低维度。embeddings使得在大型输入上搞机器学习更加容易,例如表示单词的稀疏向量。最理想的情况是,embeddings能够通过将语义上相似的输入放置在embeddings空间中彼此靠近来捕获输入的某些语义。可以在不同的模型中学习和重复使用嵌入。
这里有一个之前学习过的Google出品的机器学习的课程可以参考:课程网址
什么是向量检索
向量搜索是一种使用机器学习模型在索引中检测对象间语义关系的方法,以找到具有相似特征的相关对象。
向量搜索和推荐的解决方案变得越来越常见。如果你想在你的网站上添加自然语言文本搜索、创建图像搜索或构建强大的推荐系统,那么你就需要考虑使用向量技术。
为什么需要向量数据库
上面的一些概念解释了之后,其实在 AI 领域中,向量数据库是为了更高效地存储和检索大规模高维度的向量数据而设计的。由于传统的数据库系统并不擅长处理向量数据,因此需要专门的向量数据库来支持各种应用场景,例如语义搜索、图像检索、推荐系统等。
向量数据库被看做是Ai基础设施中最关键的一环,这种专门用于存储,索引和查询向量的数据库系统,可以让大模型更高效的存储和读取知识库,并且以更低成本的进行模型微调。Rust作为新基建的首选语言,也会在Ai基础设施中被大量采用。
与传统数据库不同,向量数据库可以使用特殊的索引结构和相似度度量方法,在高维度向量空间中快速查找相似的向量。例如,一些流行的向量数据库如 Faiss 和 Annoy 使用基于倒排索引和近似最近邻搜索(Approximate Nearest Neighbor Search)的技术,极大地加快了向量数据的查询速度。
向量数据库还提供了方便的 API 接口和工具库,使得用户可以轻松地将其集成到自己的应用程序中,并进行快速的向量搜索。因此,在许多需要处理大规模向量数据的 AI 应用中,向量数据库成为了不可或缺的组件。
向量数据库的实际应用:
我们以流行的向量数据库qdrant 为例,演示如何在实际业务中发挥向量数据库作用:
启动qdrant服务端
在Python中直接使用一个基于内存的qdrant的例子(类似sqlite本地数据库)
先安装python的依赖包,qdrant客户端:
pip install qdrant-client
python客户端提供了一种方便的方式在本地启动qrant 服务:
from qdrant_client import QdrantClient
qdrant = QdrantClient(":memory:") # 创建一个内存Qdrant实例,可以用来测试CICD
# 或者
# client = QdrantClient(path="path/to/db") #使用持久化到磁盘的向量数据库文件
如果在生产中,则推荐使用命令直接运行docker容器作为qdrant服务端:
docker run -p 6333:6333 qdrant/qdrant
启动qdrant客户端
可以使用任何客户端库连接到服务端:
qdrant_client = QdrantClient("http://localhost:6333")
# 可参考官方具体应用例子https://qdrant.tech/documentation/examples/
# 如:
# 1. 语义搜索和推荐系统介绍。
# 2. 搜索和推荐报纸的文章。
# 3. 皮肤状况图像比对系统。
# 4. LlamaIndex问答系统。
# 5. 抽取式问答系统。
qdrant社区提供了 Python 等多种语言的客户端sdk。
qdrant的官方文档… 查看余下内容