向量数据库有什么用?

本文涉及的产品
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
云数据库 Tair(兼容Redis),内存型 2GB
阿里云百炼推荐规格 ADB PostgreSQL,4核16GB 100GB 1个月
简介: 向量数据库是一种特殊类型的数据库,它可以将非结构化数据映射为高维向量,并计算数据之间的相似性。它可以用于查找相似的数据、推荐系统、异常检测和临时存储等应用。目前市场上有一些专门的向量数据库产品,同时也可以使用已有的数据库产品来构建向量数据库。向量数据库的发展前景还不确定,但它已经成为热门技术,并吸引了大量的投资。

随着大语言模型和 ChatGPT 的爆发,向量数据库现在非常热门。但什么是向量数据库?它是做什么用的呢?

下图显示了向量数据库与其他类型数据库的比较。


向量数据库可以将音频、视频、图像和文本等各种非结构化数据映射为高维向量(Embeddings)。然后,我们就可以计算非结构化数据之间的相似性。和其他类型的数据库类似,向量数据库也具有 CRUD 操作和水平扩展等功能。

image.png

典型用例包括:

  • 查找相似的图像或文本

  • 推荐相似产品(找同款)

  • 检测异常

  • 大量输入数据映射为 embeddings 后的临时存储

向量数据库公司的融资情况也从一个侧面反映了其热门情况:

  • Pinecone: 1.38 亿美元

  • Milvus: 1.13 亿美元

  • Weaviate:6770 万美元

  • Chroma: 2000 万美元

  • Qdrant: 980万美元

我们来看看使用向量数据库搭建一个企业知识库问答系统是怎么做的。

知识库搜索

假设我们有很多知识库文档,传统的做法是使用对象存储(Amazon S3)和全文搜索引擎(ElasticSearch)来搭建一个搜索应用。

知识库在搭建的时候,会进行倒排索引的搭建。

用户最终获取的是包含搜索关键词的一些文档原文,然后用户需要自行在这些文档中找到问题的答案。

我们这个知识库搜索应用其实并不能理解用户的问题,需要用户将“怎么找到我的账户余额”之类的问题翻译成“账户、余额”来输入给这个应用。

image.png

如果使用向量数据库和大语言模型的配合,那么用户体验就好多了。

知识库问答

在建立知识库的时候,我们先将长文本切块。然后使用 embeddings 算法将每个文本块映射到高维空间,并存储在向量数据库里。需要注意的是,这种映射的目的并不是为了压缩数据,而是为了非结构化数据的搜索。高维向量占用的空间可能会比原文更大。

用户在使用知识库问答时,会输入一系列问题。前续问题被称为“上下文”,和新问的问题一起输入大语言模型。大语言模型将其总结后会生成一个新的问题。然后应用程序会在向量数据库里寻找这个新问题的近邻。这样我们就找到了最接近用户问题的文档块。

这些文档块会连同新问题一起输入到大语言模型中进行求解,生成最终给用户的答案。

由于知识库问答和用户的互动性较强,向量数据库搜索的速度就很重要了。很多向量数据库产品在搜索优化上做了很多工作。

image.png

那么看到这里,你觉得向量数据库会成为专有数据库产品,还是会融入到已有的数据库产品中?我们是否可以基于 Redis 、ElasticSearch 或者 PostgreSQL 来构建向量数据库呢?

向量数据库现状

关于向量数据库是否会成为专有数据库产品还是融入到已有的数据库产品中,这个问题没有一个确定的答案。目前市场上已经有一些专门的向量数据库产品,如Milvus、Annoy等,它们提供了丰富的向量索引和查询功能。同时,也有一些传统的数据库产品开始支持向量数据类型和相应的查询操作,例如PostgreSQL 12引入了pg_similarity扩展,可以支持向量数据的相似度查询。

至于是否可以基于Redis、ElasticSearch或者PostgreSQL来构建向量数据库,答案是肯定的。这些数据库产品都是非常灵活和可扩展的,可以通过自定义数据结构、查询操作和索引方式来支持向量数据。例如,可以借助Redis的有序集合(sorted set)来存储向量数据,并使用Redis提供的命令进行查询和计算;ElasticSearch提供了丰富的文本搜索和聚类分析功能,可以通过自定义字段映射和查询DSL来支持向量数据的索引和查询;PostgreSQL通过自定义数据类型和扩展,可以实现向量数据的存储和查询。

下面转载两篇文章:

什么?!Elasticsearch也可以用作向量数据库?

原地址为:https://dbaplus.cn/news-160-5359-1.html

本文将探讨如何在 Elasticsearch 中优化向量搜索,并提供了一个详细的教程。

不是吧,Redis Enterprise也能当向量数据库来用?

原地址为:https://zhuanlan.zhihu.com/p/654879188

本文主要讲述了使用Redis Enterprise作为向量数据库时实现的一些功能以及表现能力。

相关实践学习
阿里云百炼xAnalyticDB PostgreSQL构建AIGC应用
通过该实验体验在阿里云百炼中构建企业专属知识库构建及应用全流程。同时体验使用ADB-PG向量检索引擎提供专属安全存储,保障企业数据隐私安全。
AnalyticDB PostgreSQL 企业智能数据中台:一站式管理数据服务资产
企业在数据仓库之上可构建丰富的数据服务用以支持数据应用及业务场景;ADB PG推出全新企业智能数据平台,用以帮助用户一站式的管理企业数据服务资产,包括创建, 管理,探索, 监控等; 助力企业在现有平台之上快速构建起数据服务资产体系
相关文章
|
存储 自然语言处理 搜索推荐
什么是向量数据库?
什么是向量数据库?
647 0
|
6月前
|
存储 Java 数据库
向量数据库Milvus
在实习期间构建了基于Milvus的向量数据库,用于存储和检索大模型问答对信息。遇到的问题包括:vectorFloat类型在JDK<16时不可用;数据结构和索引选择至关重要。流程包括创建数据库、配置Field、匹配与处理数据、计算Embedding并插入数据。Milvus构建涉及HNSW索引,调整索引参数以优化少量数据的查询速度。向量检索技术包括MMR检索,用于提高内容的多样性和相关性,以及单向量和批量向量搜索,用于高效地检索最相似的向量。搜索参数如`metric_type`、`nprobe`等可调优查询性能。
144 3
|
6月前
|
搜索推荐 算法 API
向量数据库-Milvus
Milvus 是一个开源的、高性能的向量数据库,专为海量向量数据的快速检索而设计。在人工智能、计算机视觉、推荐系统和其他需要处理大规模向量数据的领域有着广泛应用【7月更文挑战第3天】
409 7
|
8月前
|
存储 自然语言处理 算法
向量数据库Chroma极简教程
本文重点围绕向量数据库Chroma的使用和实战,主要包括以下内容: * Chroma设计理念 * Chroma常见概念(数据集,文档,存储,查询,条件过滤) * Chroma快速上手 * Chroma支持的Embeddings算法 * 实战:在Langchain中使用Chroma对中国古典四大名著进行相似性查询
1082 1
|
8月前
|
安全 Java API
MilvusPlus向量数据库增强操作库
MilvusPlus 是一个针对 Milvus 向量数据库的增强操作库,提供无侵入、损耗小的 API,简化 Milvus 交互。特性包括:注解配置、直观 API、Lambda 支持、主键自动生成及全局通用操作。支持 Spring 和 Solon 应用,通过配置文件管理数据库连接。应用场景如相似性搜索、推荐系统等。CRUD 模块提供类型安全的接口,IAMService 接口模块实现身份管理和权限控制。条件构造器简化查询条件构建。项目提供多种索引和度量类型。示例代码展示了如何使用 MilvusPlus 进行向量搜索操作。
362 1
|
8月前
|
存储 NoSQL atlas
2024年向量数据库推荐榜单之MongoDB
目前市面上有哪些向量数据库解决方案,可协助您存储和检索高维向量?在推荐优选的几款向量数据库和库之前,我们需要厘清以下这两种技术的差异。
3715 0
|
8月前
|
存储 Cloud Native NoSQL
向量数据库汇总
向量数据库汇总
356 0
|
8月前
|
算法 数据库 Docker
大模型必备向量数据库-Milvus的安装过程
大模型必备向量数据库-Milvus的安装过程
666 0
|
8月前
|
存储 算法 关系型数据库
向量数据库的索引技术
【2月更文挑战第2天】向量数据库的索引技术
405 0
|
8月前
|
机器学习/深度学习 存储 算法
向量数据库
向量数据库
825 0

热门文章

最新文章