解锁数据潜力:为什么你应该考虑使用向量数据库

文章目录

  • 前言
  • 什么是向量和向量数据库
  • 使用示例
  • Amazon OpenSearch Serverless向量引擎
  • 总结


前言

根据DC调查数据显示,全球在A1技术和服务上的支出2023年将达到1540亿美元,到2026年将超过3000亿美元。其中,向量数据库为AI的开发、增强内容生成的准确性提供了重要技术支撑。如果说 ChatGPT 是 LLM 的处理核心,prompts 是 code,那么向量数据库就是 LLM 需要的存储。
为什么要有向量数据库?
向量数据库用来存储非结构化数据,例如,文档,图片,视频,音频和纯文本等,在保证1%信息完整的情况下,通过向量嵌入函数来精准描写非结构化数据的特征,从而提供查询、删除、修改、元数据过滤等操作。而像SQL、Mysqli这样传统的数据库根本无法完成这些操作。

什么是向量和向量数据库

向量是 AI 世界对世间万物的表示形式,是具有一定大小和方向的量,可以简单理解为一串数字的集合,就像一行多列的矩阵,比如:[2,0,1,9,0,6,3,0]。每一行代表一个数据项,每一列代表一个该数据项的各个属性。随着大模型等AI技术的发展和普及,向量数据的存算需求一定会得到极大的释放。

特征向量是包含事物重要特征的向量。大家比较熟知的一个特征向量是RGB (红-绿-蓝)色彩。每种颜色都可以通过对红®、绿(G)、蓝(B)三种颜色的比例来得到。这样一个特征向量可以描述为:颜色 = [红,绿,蓝]。

在这里插入图片描述

向量检索是指从向量库中检索出距离目标向量最近的 K 个向量。一般我们用两个向量间的欧式距离,余弦距离等来衡量两个向量间的距离,一次来评估两个向量的相似度。

基本概念:

  • Collection: 包含一组 entity,可以等价于关系型数据库系统(RDBMS)中的表。
  • Segment: Milvus 在数据插入时通过合并数据自动创建的数据文件。一个 collection 可以包含多个 segment。一个 segment 可以包含多个 entity。在搜索中,Milvus 会搜索每个 segment,过滤被删除的数据,并返回合并后的结果。
  • Entity: 包含一组 field。field 与实际对象相对应。field 可以是代表对象属性的结构化数据,也可以是代表对象特征的向量。
  • Entity ID: 用于指代一个 entity 的唯一值。目前,Milvus 不支持 ID 去重,因此有可能在一个 segment 内出现重复 ID。
  • Field: entity 的组成部分。field 可以是结构化数据,例如数字和字符串,也可以是向量。
  • Vector: 一种类型的 field,代表对象的特征。目前,一个实体最多只能包含一个向量。
  • Index: 索引基于原始数据构建,可以提高对 collection 数据搜索的速度。
  • Mapping: 一系列规则用来定义 collection 如何组织数据。

在 GPT 模型的限制下,开发者们不得不寻找其他的解决方案,而向量数据库就是其中之一。向量数据库的核心思想是将文本转换成向量,然后将向量存储在数据库中,当用户输入问题时,将问题转换成向量,然后在数据库中搜索最相似的向量和上下文,最后将文本返回给用户。
在这里插入图片描述

向量数据库的作用当然不止步于文字语义搜索,在传统的 AI 和机器学习场景中,还包含人脸识别、图像搜索、语音识别等功能,但不可否认的是,这一轮向量数据库的火爆,正是因为它对于 AI 获得理解和维护长期记忆以执行复杂任务时有非常大的帮助。

使用示例

ES7.0后自带dense_vector类型,无需安装额外插件,从8.0版本开始使用knn计算余弦相似度,底层使用hnsw

1. 创建测试索引

{"mappings": {"properties": {"title": {"type": "text"},"content_vector": {"type": "dense_vector","dims": 3}}}}

2.导入测试数据

{"index":{"_id":1}}
{"title":"占地100亩的烧烤城在淄博仅用20天即成功新建,现在已成为万人争抢“烤位”的热门去处。","content_vector":[-0.2703271, 0.38279012, -0.29274252]}
{"index":{"_id":2}}
{"title":"淄博新建的一座占地100亩的烧烤城在短短20天内建成,吸引了众多烧烤爱好者,如今“烤位”已是一位难求。","content_vector":[-0.22879271, 0.43286988, -0.21742335]}
{"index":{"_id":3}}
{"title":"在淄博,一座耗时20天新建的占地100亩的烧烤城成为众人瞩目的焦点,各种美味烧烤让万人争夺“烤位”,可谓一座难求。","content_vector":[-0.24912262, 0.40769795, -0.26663426]}
{"index":{"_id":4}}
{"title":"淄博一般指淄博市。 淄博市,简称“淄”,齐国故都,山东省辖地级市,Ⅱ型大城市","content_vector":["0.32247472, 0.19048998, -0.36749798]}

3.1. 执行检索
Approximate kNN

{"query": {"script_score": {"query": {"match_all": {}},"script": {"source": "cosineSimilarity(params.query_vector, 'content_vector') + 1.0","params": {"query_vector": [-0.2703271, 0.38279012, -0.29274252]  }}}}
}

4.Exact kNN
处理大型数据集时性能不佳,script_score查询扫描每个匹配的文档以计算向量函数,这可能导致搜索速度较慢。可以通过使用查询来限制传递给函数的匹配文档的数量来改善延迟。如果将数据筛选到较小的文档子集中,可以获得良好的搜索性能。

{"knn": {"field": "content_vector","query_vector": [-0.2703271, 0.38279012, -0.29274252],"k": 10,"num_candidates": 3}
}

Amazon OpenSearch Serverless向量引擎

在这里插入图片描述
亚马逊云科技再接再厉,推出Amazon OpenSearch Serverless向量引擎预览版这次推出标志着在云搜索服务领域的一个重大飞跃,它为用户提供了一个简单、高性能且可扩展的相似性搜索功能。

向量引擎是构建在Amazon OpenSearch Serverless之中,它能为用户带来现代化的机器学习(ML)增强的搜索体验。这意味着,无论是大型企业还是初创公司,开发者都能轻松构建出先进的生成式AI应用程序,为用户提供更加个性化和智能化的服务。
在这里插入图片描述

Amazon OpenSearch Serverless向量引擎有以下优势:

1.无需管理基础设施: 与传统的搜索引擎不同,Amazon OpenSearch Serverless向量引擎真正做到了让开发者专注于开发,而不是管理。它消除了对底层向量数据库基础设施的管理需求,大大降低了开发和运维的复杂性。

2.简单: 向量引擎的设计原则是简洁易用,让开发者在最短的时间内上手并投入开发。

3.可扩展: 不管你的数据量多大,用户量多少,Amazon OpenSearch Serverless向量引擎都能轻松应对,确保搜索体验始终流畅。

4.高性能: 依托亚马逊云科技强大的云服务,该向量引擎提供了业界领先的搜索性能,确保用户的每一次搜索都能得到快速响应。

亚马逊云科技不仅仅满足于提供高性能的向量数据库服务,更持续不断地进行优化和改进,确保客户获得最前沿的技术体验。在向量图方面,团队一直在努力优化其性能和内存使用。亚马逊云科技进行了一系列的升级和改进,目标是进一步提高向量图的效率。其中,缓存改进是其中的一项重要策略。通过优化缓存机制,向量图能够更快速地访问常用数据,大大减少了访问延迟,提高了整体性能。

我觉得厉害的不仅仅是Amazon OpenSearch Serverless向量引擎,而是亚马逊云科技的整体实力和体系,所以我觉得还是还厉害的。

总结

向量数据库是崭新的领域,目前大部分向量数据库公司的估值乘着 AI 和 GPT 的东风从而飞速的增长,但是在实际的业务场景中,目前向量数据库的应用场景还比较少,抛开浮躁的外衣,向量数据库的应用场景还需要开发者们和业务专家们去挖掘。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/179469.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

保姆级jupyter lab配置清单

❤️觉得内容不错的话,欢迎点赞收藏加关注😊😊😊,后续会继续输入更多优质内容❤️ 👉有问题欢迎大家加关注私戳或者评论(包括但不限于NLP算法相关,linux学习相关,读研读博…

用嘉立创查找元件的原理图

目录 1.打开立创商城 2.搜索元件 ​编辑 3.复制编号 ​编辑 4.打开元件库 5.将复制好的编号进行搜索 1.打开立创商城 2.搜索元件 3.复制编号 4.打开元件库 5.将复制好的编号进行搜索

土木非科班转码测开,斩获10家大厂offer

大家好,我是洋子 24届秋招基本已经落下了帷幕,各大互联网大厂基本也开奖完毕,还没有拿到满意offer的同学也不要灰心,积极备战明年的春招。另外,25届想要找暑期实习的同学也可以开始准备起来了,基本大厂在春…

systemverilog:interface中的modport用法

使用modport可以将interface中的信号分组并指定方向,方向是从modport连接的模块看过来的。简单示例如下: interface cnt_if (input bit clk);logic rstn;logic load_en;logic [3:0] load;logic [7:0] count;modport TEST (input clk, count,output rst…

接口自动化测试用例编写规范

一、接口自动化测试用例设计方法 1.1接口参数覆盖 接口测试通过输入使用参数组合,获得服务器返回值,并根据预先设定的规则判断是否符合预期值。在接口测试中,根据接口的功能不同,需要侧重检测的方面也不同。主要从以下几个方面考…

python 基础语法 (常常容易漏掉)

同一行显示多条语句 python语法中要求缩进,但是同一行可以显示多条语句 在 Python 中,可以使用分号 (;) 将多个语句放在同一行上。这样可以在一行代码中执行多个语句,但需要注意代码的可读性和维护性。 x 5; y 10; z x y; print(z) 在…

Docker Compose详细教程(从入门到放弃)

对于现代应用来说,大多都是通过很多的微服务互相协同组成的一个完整应用。例如, 订单管理、用户管理、品类管理、缓存服务、数据库服务等,它们构成了一个电商平台的应 用。而部署和管理大量的服务容器是一件非常繁琐的事情。而 Docker Compos…

LabVIEW中NIPackageManager功能介绍

LabVIEW中PackageManager功能介绍 使用NIPackage Manager可安装、更新、修复和删除NI软件。 安装NI软件 使用PackageManager浏览和安装NI软件。 1. 在浏览产品选项卡上,单击产品类别以显示该类别中的可用产品。 2. 选择要安装的产品,然后单击…

后端接口错误总结

今天后端错误总结: 1.ConditionalOnExpression(“${spring.kafka.exclusive-group.enable:false}”) 这个标签负责加载Bean,因此这个位置必须打开,如果这个标签不打开就会报错 问题解决:这里的配置在application.yml文件中 kaf…

时间序列预测-Transformer,Informer,Autoformer,FEDformer复现结果

实验环境硬件规格或软件版本号CPUInter Xeon E5-2678 v3 2.50GHzGPUNVIDIA TITAN X (Pascal)内存32.0GBPython3.7.3Pytorch1.2.0CUDA11.6 实验结果 可视化实验结果 见资源

tracert命令

前言:今天在阅读“Web性能权威指南”这本书的时候,发现 tracert 这个命令挺有意思的,在分析网络性能瓶颈的时候也能使用的到,在此就小记一笔以备后用。 1:作用 tracert 是一个简单的网络诊断工具,可以列出…

深入解析JavaScript中的变量作用域与声明提升

JS中的变量作用域 背景: ​ 之前做js逆向的时候,有一个网站很有意思,就是先出现对其赋值,但是后来的变量赋值没有对其发生修改,决定说一下js中的作用域问题. 全局作用域: ​ 全局作用域的变量可以在任何…