当前位置: 首页 > news >正文

使用Qdrant+FastText实现向量存储和检索

1 概述

在《使用FastText库训练词向量》一文中,已经训练并保存好了一个用 FastText 训练的词向量模型-model_0809_001。在接下来的实践中,将直接使用该词向量模型来生成对应数据的向量,然后将向量和对应的负载存储到 Qdrant 中,然后进行向量检索。

2 向量存储和检索

下面是使用 Qdrant+FastText 实现向量存储和检索的实践案例。

2.1 创建 Qdrant 向量数据库

引入 qdrant_client 版本 为 1.10.1 的 Qdrant 的 python 客户端库。

pip install qdrant-client
或
conda install conda-forge::qdrant-client

创建并启动一个Qdrant数据库,数据持久化到磁盘,数据存储地址 “/Users/Shared/data/qdrant”。

from qdrant_client import QdrantClientclient = QdrantClient(path="/Users/Shared/data/qdrant")

2.2 创建数据集

创建一个名称为 test_collection_0812 的数据集。其中向量维度为200维(和FastText词向量模型设置的向量维度保持一致),相似度计算方式使用欧几里德距离-Distance.EUCLID。

def create_collection_0812():client.create_collection(collection_name="test_collection_0812",vectors_config=VectorParams(size=200, distance=Distance.EUCLID),)

2.3 新增向量数据 

首先使用 FastText 加载训练好的向量模型-model_0809_001, 然后使用该模型生成特征数据的向量,并往 test_collection_0812 数据集中新增向量数据。

# 加载词向量模型
model = fasttext.load_model(model_0809_001)def add_vectors_0812():# 往向量库新增数据client.upsert(collection_name="test_collection_0812",wait=True,points=[PointStruct(id=1, vector=model['黄疸茵陈片'], payload={"genericName": "黄疸茵陈片"}),PointStruct(id=2, vector=model['美沙拉嗪肠溶片'], payload={"genericName": "美沙拉嗪肠溶片"}),PointStruct(id=3, vector=model['盐酸贝那普利'], payload={"genericName": "盐酸贝那普利"}),PointStruct(id=4, vector=model['痔康片'], payload={"genericName": "痔康片"}),PointStruct(id=5, vector=model['阿普唑仑'], payload={"genericName": "阿普唑仑"}),PointStruct(id=6, vector=model['黄疸茵陈冲剂'], payload={"genericName": "黄疸茵陈冲剂"}),PointStruct(id=7, vector=model['肝素钙注射液'], payload={"genericName": "肝素钙注射液"}),PointStruct(id=8, vector=model['黄疸茵陈颗粒'], payload={"genericName": "黄疸茵陈颗粒"}),],)

2.4 向量检索

进行向量检索时,同样是使用向量模型-model_0809_001生成查询入参的向量,然后进行向量搜索。搜索结果的分数(score)越小代表搜索结果与入参越相近。下面是搜索与“黄疸茵陈片”最相近的6条数据的案例。

def query_0812(genericName, size):search_result = client.search(collection_name="test_collection_0812", query_vector=model[genericName], limit=size, with_vectors=True)for var in search_result:print(var)if __name__ == '__main__':query_0811("黄疸茵陈片", 6)

搜索结果如下所示:

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • YOLO基础-目标检测的性能指标详解与计算方法
  • vulnhub系列:devguru
  • [SWPUCTF 2021 新生赛]PseudoProtocols(构造伪协议)
  • C# 计算两两坐标之间的距离(SIMD加速)
  • 常用的数据结构有哪些?
  • Docker 部署RocketMQ
  • 若依框架将Mybatis改成MybatisPlus
  • RabbitMQ面试题汇总
  • 【数学建模】介绍论文书写格式
  • YOLOv10实时端到端目标检测
  • 智慧楼宇公厕系统小程序,提高卫生间管理使用效率
  • CDP问卷填报流程-百胜企业管理咨询
  • 8.9 python管理mysql
  • Go语言 Defer(延迟)
  • Flutter-->AAPT: error: resource android:attr/lStar not found.
  • avalon2.2的VM生成过程
  • canvas 五子棋游戏
  • Github访问慢解决办法
  • iOS编译提示和导航提示
  • javascript数组去重/查找/插入/删除
  • Redis 中的布隆过滤器
  • Webpack4 学习笔记 - 01:webpack的安装和简单配置
  • 初识 beanstalkd
  • 机器学习 vs. 深度学习
  • 简单实现一个textarea自适应高度
  • 开发基于以太坊智能合约的DApp
  • 聊聊flink的TableFactory
  • 漂亮刷新控件-iOS
  • 区块链共识机制优缺点对比都是什么
  • 一加3T解锁OEM、刷入TWRP、第三方ROM以及ROOT
  • AI算硅基生命吗,为什么?
  • 新年再起“裁员潮”,“钢铁侠”马斯克要一举裁掉SpaceX 600余名员工 ...
  • 曜石科技宣布获得千万级天使轮投资,全方面布局电竞产业链 ...
  • #Linux(帮助手册)
  • #QT(TCP网络编程-服务端)
  • #单片机(TB6600驱动42步进电机)
  • $.ajax()方法详解
  • (1综述)从零开始的嵌入式图像图像处理(PI+QT+OpenCV)实战演练
  • (3) cmake编译多个cpp文件
  • (4)logging(日志模块)
  • (9)目标检测_SSD的原理
  • (CVPRW,2024)可学习的提示:遥感领域小样本语义分割
  • (大众金融)SQL server面试题(1)-总销售量最少的3个型号的车及其总销售量
  • (每日持续更新)信息系统项目管理(第四版)(高级项目管理)考试重点整理第3章 信息系统治理(一)
  • (每日一问)计算机网络:浏览器输入一个地址到跳出网页这个过程中发生了哪些事情?(废话少说版)
  • (十七)Flink 容错机制
  • (图文详解)小程序AppID申请以及在Hbuilderx中运行
  • (转)视频码率,帧率和分辨率的联系与区别
  • .NET Core 中的路径问题
  • .NET企业级应用架构设计系列之应用服务器
  • /*在DataTable中更新、删除数据*/
  • @Conditional注解详解
  • @RequestMapping 的作用是什么?
  • @Valid和@NotNull字段校验使用
  • [ 第一章] JavaScript 简史