目录
一、初识腾讯云向量数据库
腾讯云向量数据库(tencent cloud vectordb):是一款全托管的自研企业级分布式数据库服务,专用于存储、检索、分析多维向量数据。该数据库能够被广泛应用于大模型的训练、推理和知识库补充等场景。是国内首个从接入层、计算层到存储层提供全生命周期ai化的向量数据库。腾讯云向量数据库最高支持10亿级向量检索规模,延迟控制在毫秒级,相比传统单机插件式数据库检索规模提升10倍,同时具备百万级每秒查询的峰值能力。:
数据存储与处理性能:在数据存储和处理性能这一方面,官方给我们介绍了在腾讯云向量数据库中在数据存储方面单索引支持10亿级向量数据规模,在处理性能方面可支持百万 qps 及毫秒级查询延迟,腾讯集团自研的向量检索引擎 olama,近40个业务线上稳定运行,日均处理搜索请求高达千亿次,可见其服务的连续性和稳定性之高。具体的使用优势可参考官方文档给出的具体详解:
向量特征相似度查询:向量数据库可以将用户的所有数据存储在向量数据库当中,当用户输入数据进行查询时,向量数据库会根据用户输入的数据进行计算向量之间的相似度,检索最相关的问题信息并返回对应的答案信息,所以向量数据库在大模型及其问答推荐系统领域方面,应用十分广泛:
安全监控机制:在腾讯云向量数据库的对安全的处理中,腾讯云处理的方式是将向量数据库运行于私有网络环境中。该私有网络是一块在腾讯云上自定义的逻辑隔离网络空间,基于隧道技术在物理网络上构造虚拟网络,使用虚拟化技术,实现不同私有网络之间内网完全隔离。俗称vpc:
专有网络是自己完全掌控的网络,例如选择 ip 地址范围、配置路由表和网关等,可以在自己定义的专有网络中使用腾讯云或阿里云资源,专有网络支持连接到其他专有网络,或本地网络,形成一个按需定制的网络环境,实现应用的平滑迁移上云和对数据中心的扩展,而专有网络vpc是基于阿里云构建的一个隔离的网络环境,专有网络之间逻辑上彻底分离:
vpc特点:
安全组介绍:
安全组是一种虚拟防火墙,用于控制安全组内ecs实例的入流量和出流量,从而提高ecs实例的安全性。安全组具备状态检测和数据包过滤能力,您可以基于安全组的特性和安全组规则的配置在云端划分安全域,在下文我们将详细介绍安全组的配置过程。
其他具体的安全防护手段也可以参考 的讲解,这里不再过多的一一介绍,详情如下:
二、体验性过程测试与评估
**1】**注册与登录 访问腾讯云 ,初次使用腾讯云的朋友需要注册并完成实名认证才可以继续使用。然后在导航栏的搜索框当中输入向量数据库关键字回车,选择第一个文档消息进行向量数据库的体验:
**2】**创建实例 进入向量数据库界面选择体验,然后在进入的后台中点击 新建 创建一个新的实例:
点击新建后进入新建向量数据实例页面进行相关配置即可:
配置数据库相应选择的参数可以参考官方文档给我们的详细解释: :
**3】**管理实例 创建完向量数据库实例之后,在控制台可点击管理按钮查看向量数据的具体信息:
我们可以在管理实例中看到需要可视化的管理选型,可以根据自己的选择查看具体信息:
**4】**开启外网 单击实例 id 进入实例详情页面,在网络信息区域,单击外网地址后面的开启。在开启外网访问的小窗口,在允许访问白名单的输入框,配置外网访问的白名单列表,如下:
**5】**登录数据库管理控制台 我们在上面的管理实例中找到密钥管理的选项,下面记载的名称和api密钥就是我们登录控制台的账户密码:
在控制台点击登录按钮进行到登录页面输入即可:
登录控制台之后,我们可以看到后台提供给我们需要的可视化选项,我们可以根据需求选择:
这里我们可以选择创建体验 embedding,使用向量数据库提供给我们的基础数据简单的体验一下
**6】**删除实例 如果你想将创建的实例进行删除的话,方式很简单,只需要登录控制台点击更多在下拉框中点击销毁即可:
三、个性体验与系统兼容性
我们在创建向量数据库实例的时候可以根据需求定制一下基础的配置和规格信息:
在规格信息的具体实例类型方面,可以根据需要求进行更多规格的申请,而不单单只是一些基础的配置, 在填写申请表的阶段,可以详细描述一下自己所使用向量数据库的应用场景,这样的话可以腾讯云可以根据我们的需求推断出我们当前最适用的向量数据库:
在登录向量数据库后他之后,腾讯云针对向量数据库,推出数据库管理、开发工具,可帮您在线管理数据库、管理集合、快速查找更新数据等。后续腾讯云也将针对向量数据库持续推出更多的功能哦,我们期待未来它给我们更多的惊喜。
腾讯云向量数据库在主流操作系统(如windows、linux、macos等)和主流ide(如visual studio code、intellij idea等)上都有良好的稳定性和兼容性。 它提供了多种客户端和sdk,可以方便地集成到各种开发环境和工具中。无论你使用哪种操作系统或ide进行开发,都可以通过腾讯云向量数据库的客户端进行连接和操作。这里可以看到官方文档给我们相应的api文档:
这里使用开发工具,博主采用python语言与向量数据库进行相应的测试,首先我们需要终端执行如下命令进行安装相应的插件:
pip install tcvectordb
# pip版本过低导致安装失败,这里需要先更新一下pip版本至最新
python.exe -m pip install --upgrade pip
出现如下情况说明安装成功,这里我们就可以正常的使用腾讯云向量数据库给我们提供的插件与编程语言进行相应结合了,如果报错的话可以是由于网络原因导致的中断,可以多试几次:
这里我们开始使用插件来连接我们的向量数据库,并创建一个名为 db-test-by_ye 的数据库进行一个简单的测试,这里需要用到我们上文体验过程中开始的外网访问地址和相应密钥管理当中的api密钥作为识别你身份的参数,如果没有对应的正确信息是不能连接到我们的向量数据库的,具体的代码如下,url地址和相应的key信息这里输入自己的账号信息即可:
import tcvectordb
from tcvectordb.model.enum import fieldtype, indextype, metrictype, readconsistency
client = tcvectordb.vectordbclient(
url='http://lb-3f6goz65-9qzaxduhtkf........',
username='root',
key='xzxazmkko5..........gekb02i',
read_consistency=readconsistency.eventual_consistency,
timeout=30
)
db = client.create_database(database_name='db-test-by_ye')
print(db.database_name)
最终我们可以看到控制台打印了我们创建的数据库的名称:
回到控制台我们可以看到我们创建的数据库名称,在向量数据库当中已经呈现:
因为向量数据库这里也是兼容java语言来连接向量数据库的,这里我们也可以采用java进行连接:
import com.tencent.tcvectordb.client.vectordbclient;
import com.tencent.tcvectordb.model.param.database.connectparam;
import com.tencent.tcvectordb.model.param.enums.readconsistencyenum;
public class vdbclient {
public static vectordbclient createclient() {
connectparam param = getconnectparam();
return new vectordbclient(param, readconsistencyenum.eventual_consistency);
}
private static connectparam getconnectparam() {
return connectparam.newbuilder()
.withurl("url")
.withusername("username")
.withkey("key")
.withtimeout(30)
.build();
}
}
文档的后面也提供了一个比较详细的问答系统结合向量数据库的实现过程:
这么详细的文档和示例代码,可以帮助开发者快速上手并集成到他们的项目中。同时,腾讯云的技术支持团队也会为开发者提供及时的帮助和支持,确保在不同的开发环境下能够顺利使用腾讯云向量数据库。
四、数据可视化和数据安全
官方文档给我们讲解了关于腾讯云向量数据的具体操作,我们通过腾讯云提供的可视化界面,用户可以轻松地创建新的数据库,
进行数据操作以及数据查询分析等各种操作:
当然我们也可以借助代码将相应本地的文件上传到向量数据库当中进行检索,这里我们使用py进行相应的操作,这里我们先创建一个集合,并将一个相应的数据进行插入到向量数据库当中:
# 指定数据库
db = client.database('db-test-by_ye')
# 第一步,设计索引(不是设计 collection 的结构)
index = index(
filterindex(name='id', field_type=fieldtype.string, index_type=indextype.primary_key),
filterindex(name='question', field_type=fieldtype.string, index_type=indextype.filter),
filterindex(name='answer', field_type=fieldtype.string, index_type=indextype.filter),
vectorindex(name='vector', dimension=3, index_type=indextype.hnsw,
metric_type=metrictype.cosine, params=hnswparams(m=16, efconstruction=200))
)
# 第二步,创建 collection
coll = db.create_collection(
name='intelligent',
shard=1,
replicas=0,
description='this is a collection of test embedding',
index=index
)
# 写入数据
res = coll.upsert(
documents=[
document(id='0001', vector=[
0.2123, 0.23, 0.213],
question='请问车险理赔时,全责一方和无责任一方收到待遇的区别',
answer='这位朋友提问的有些过于笼统了不是很详细,理论上来讲,从商业险的角度分析,有责任,保险公司才会...', page=21),
document(id='0002', vector=[
0.2123, 0.22, 0.213],
question='买保险,一定要找代理人吗,直接去保险公司买不可以吗?',
answer='可以的。可以自行去保险公司进行投保,也可以选择在网上投保。不过有代理人的好处在于可以为被保险...', page=22),
document(id='0003', vector=[
0.2123, 0.21, 0.213],
question='机动车撞伤人至骨折保险公司该怎么赔偿',
answer='交通事故赔偿是有标准的,因交通事故造成损失,肇事者向受害者、保险公司对承保车辆造成的损失进行...', page=23)
],
build_index=true
)
这里我们在向量数据库的控制台处进行相应的数据查询,可以看到我们的数据已经写入到我们的向量数据库当中:
当然我们也可以进行相应的相似度进行查询,代码如下:
import tcvectordb
### 给大家的福利
**零基础入门**
对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。

同时每个成长路线对应的板块都有配套的视频提供:

因篇幅有限,仅展示部分资料
**网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**
**[需要这份系统化资料的朋友,可以点击这里获取](https://bbs.csdn.net/topics/618540462)**
**一个人可以走的很快,但一群人才能走的更远!不论你是正从事it行业的老鸟或是对it行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**
发表评论