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

【python qdrant 向量数据库 完整示例代码】

测试一下python版本的dqrant向量数据库的效果,完整代码如下:

安装库

!pip install qdrant-client>=1.1.1
!pip install -U sentence-transformers

导入

from qdrant_client import models, QdrantClient
from sentence_transformers import SentenceTransformerencoder = SentenceTransformer("all-MiniLM-L6-v2", device="cuda")

准备测试数据集

documents = [{"name": "The Time Machine","description": "A man travels through time and witnesses the evolution of humanity."* 8,"author": "H.G. Wells","year": 1895,},{"name": "Ender's Game","description": "A young boy is trained to become a military leader in a war against an alien race."* 4,"author": "Orson Scott Card","year": 1985,},{"name": "Brave New World","description": "A dystopian society where people are genetically engineered and conditioned to conform to a strict social hierarchy."* 6,"author": "Aldous Huxley","year": 1932,},
] * 50000print(len(documents))

创建存储库

qdrant = QdrantClient(":memory:")  # 内存中
# qdrant = QdrantClient(path='./qdrant')  # 存储到本地

在数据库中创建一个collection(类似一个存储桶)

qdrant.recreate_collection(collection_name="my_books",vectors_config=models.VectorParams(size=encoder.get_sentence_embedding_dimension(),  # Vector size is defined by used modeldistance=models.Distance.COSINE,),
)

对文档进行向量化

import hashlib
from tqdm import tqdmdef sha256(text):hash_object = hashlib.sha256()hash_object.update(text.encode("utf-8"))hash_value = hash_object.hexdigest()return hash_valuerecords = []
bs = 256
for i in tqdm(range(0, len(documents), bs)):docs = documents[i : i + bs]vectors = encoder.encode([doc["description"] for doc in docs], normalize_embeddings=True).tolist()record = [models.Record(id=idx, vector=vec, payload=doc)  # sha256(doc['description'])for idx, vec, doc in zip(range(i, i + bs), vectors, docs)]records.extend(record)

上传到向量数据库中指定的collection

qdrant.upload_points(collection_name="my_books", points=records, batch_size=128, parallel=12
)

语义搜索

query = "Aliens attack our planet"
hits = qdrant.search(collection_name="my_books",query_vector=encoder.encode(query).tolist(),limit=6,
)
for hit in hits:print(hit.payload, "score:", hit.score)

条件搜索

search only for books from 21st century

hits = qdrant.search(collection_name="my_books",query_vector=encoder.encode("Tyranic society").tolist(),query_filter=models.Filter(must=[models.FieldCondition(key="year", range=models.Range(gte=1980))]),limit=3,
)
for hit in hits:print(hit.payload, "score:", hit.score)

参考官方GitHub

github

colab

相关文章:

【python qdrant 向量数据库 完整示例代码】

测试一下python版本的dqrant向量数据库的效果,完整代码如下: 安装库 !pip install qdrant-client>1.1.1 !pip install -U sentence-transformers导入 from qdrant_client import models, QdrantClient from sentence_transformers import SentenceT…...

初识C语言(三)

感兴趣的朋友们可以留个关注,我们共同交流,相互促进学习。 文章目录 前言 八、函数 九、数组 (1)数组的定义 (2)数组的下标和使用 十、操作符 (1)算数操作符 (2&#xff…...

用通义灵码如何快速合理解决遗留代码问题?

本文首先介绍了遗留代码的概念,并对遗留代码进行了分类。针对不同类型的遗留代码,提供了相应的处理策略。此外,本文重点介绍了通义灵码在维护遗留代码过程中能提供哪些支持。 什么是遗留代码 与过时技术相关的代码: 与不再受支持的…...

新书推荐——《Python贝叶斯深度学习》

在过去的十年中,机器学习领域取得了长足的进步,并因此激发了公众的想象力。但我们必须记住,尽管这些算法令人印象深刻,但它们并非完美无缺。本书旨在通过平实的语言介绍如何在深度学习中利用贝叶斯推理,帮助读者掌握开…...

数据结构-3.1.栈的基本概念

一.栈的定义: 栈和线性表的区别:栈只能在表尾一端进行插入或者删除的操作,而线性表可以在任意一个地方进行插入或者删除 二.有关栈的关键术语: 三.栈的基本操作: 1.回顾线性表的基本操作: 2.栈的基本操作&…...

关于 NLP 应用方向与深度训练的核心流程

文章目录 主流应用方向核心流程(5步)1.选定语言模型结构2.收集标注数据3.forward 正向传播4.backward 反向传播5.使用模型预测真实场景 主流应用方向 文本分类文本匹配序列标注生成式任务 核心流程(5步) 基本流程实现的先后顺序…...

linux如何启用ipv6随机地址

简介 在 IPv6 中,临时随机地址(Temporary IPv6 Address)是一种为了提高隐私和安全而设计的功能。通常,默认的 IPv6 地址是基于设备的 MAC 地址生成的,容易导致跟踪和识别设备。启用临时 IPv6 地址可以避免这个问题&am…...

探索 Android DataBinding:实现数据与视图的完美融合

在 Android 开发中,数据与视图的交互一直是一个关键的问题。为了更好地实现数据的展示和更新,Google 推出了 DataBinding 库,它为开发者提供了一种简洁、高效的方式来处理数据与视图之间的绑定关系,大大提高了开发效率和代码的可读…...

Java 编码系列:线程基础与最佳实践

引言 在多任务处理和并发编程中,线程是不可或缺的一部分。Java 提供了丰富的线程管理和并发控制机制,使得开发者可以轻松地实现多线程应用。本文将深入探讨 Java 线程的基础知识,包括 Thread 类、Runnable 接口、Callable 接口以及线程的生命…...

《深度学习》—— ResNet 残差神经网络

文章目录 一、什么是ResNet?二、残差结构(Residual Structure)三、Batch Normalization(BN----批归一化) 一、什么是ResNet? ResNet 网络是在 2015年 由微软实验室中的何凯明等几位大神提出,斩获…...

针对考研的C语言学习(定制化快速掌握重点3)

1.数组常见错误 数组传参实际传递的是数组的起始地址&#xff0c;若在函数中改变数组内容&#xff0c;数组本身也会发生变化 #include<stdio.h> void change_ch(char* str) {str[0] H; } int main() {char ch[] "hello";change_ch(ch);printf("%s\n&q…...

pikachu XXE(XML外部实体注入)通关

靶场&#xff1a;pikachu 环境: 系统&#xff1a;Windows10 服务器&#xff1a;PHPstudy2018 靶场&#xff1a;pikachu 关卡提示说&#xff1a;这是一个接收xml数据的api 常用的Payload 回显 <?xml version"1.0"?> <!DOCTYPE foo [ <!ENTITY …...

shell脚本定时任务通知到钉钉

shell脚本定时任务通知到钉钉 1、背景 ​ 前两天看了一下定时任务&#xff0c;垃圾清理、日志相关、系统巡检这些&#xff0c;有的服务器运行就有问题&#xff0c;或者不运行&#xff0c;正好最近在做运维标准重制运维手册&#xff0c;顺便把自动化这块优化一下&#xff0c;所…...

2.4K star的GOT-OCR2.0:端到端OCR 模型

GOT-OCR2.0是一款新一代的光学字符识别&#xff08;OCR&#xff09;技术&#xff0c;标志着人工智能在文本识别领域的重大进步。作为一款开源模型&#xff0c;GOT-OCR2.0不仅支持传统的文本和文档识别&#xff0c;还能够处理乐谱、图表以及复杂的数学公式&#xff0c;为用户提供…...

【JavaEE】——线程的安全问题和解决方式

阿华代码&#xff0c;不是逆风&#xff0c;就是我疯&#xff0c;你们的点赞收藏是我前进最大的动力&#xff01;&#xff01;希望本文内容能够帮助到你&#xff01; 目录 一&#xff1a;问题引入 二&#xff1a;问题深入 1&#xff1a;举例说明 2&#xff1a;图解双线程计算…...

初步认识了解分布式系统

背景认识&#xff1a;我们要学习redis&#xff0c;还是得了解一下什么是分布式。为什么呢&#xff1f;因为redis只有在分布式系统中才能发挥它最大的作用&#xff0c;也就是领域展开&#xff0c;所以接下来我们就简单过一下什么是分布式系统 一些术语认识&#xff1a; &#x…...

react 为什么不能学习 vue3 进行静态节点标记优化性能?

因为 React 使用的是 JSX&#xff0c;而 JSX 本质上就是 JS 语言&#xff0c;是具有非常高的动态的&#xff0c;而 Vue 使用的 template 则是给了足够的约束&#xff0c;比如说 Vue 的 template 里面使用了很多特定的标记来做不同的事情&#xff0c;比如说 v-if 就是进行变量判…...

Elasticsearch黑窗口启动乱码问题解决方案

问题描述 elasticsearch启动后有乱码现象 解决方案&#xff1a; 提示&#xff1a;这里填写该问题的具体解决方案&#xff1a; 到 \config 文件下找到 jvm.options 文件 打开后 在文件末尾空白处 添加 -Dfile.encodingGBK 保存后重启即可。...

Logtus IT员工参加国际技术大会

Logtus IT的员工参加了国际技术大会&#xff0c;该大会致力于在金砖国家框架内开发俄罗斯的技术。该活动包括一个展览&#xff0c;俄罗斯开发商展示了他们的信息技术、电子和电信成就。展示了面向国内和国际市场&#xff08;包括政府机构&#xff09;的解决方案、产品和平台。 …...

ant design vue组件中table组件设置分组头部和固定总结栏

问题&#xff1a;遇到了个需求&#xff0c;不仅要设置分组的头部&#xff0c;还要在顶部有个统计总和的栏。 分组表头的配置主要是这个&#xff0c;就是套娃原理&#xff0c;不需要展示数据的直接写个title就行&#xff0c;需要展示数据的字段才需要详细的配置属性。 const co…...

ZPL文件操作避坑指南:从OPEN到CLOSE的5个常见错误排查

ZPL文件操作避坑指南&#xff1a;从OPEN到CLOSE的5个常见错误排查 在光学设计领域&#xff0c;ZPL宏作为ZEMAX的自动化利器&#xff0c;文件操作是绕不开的核心技能。但当你从教程里的完美示例转向真实项目时&#xff0c;那些被刻意简化的场景往往会暴露出各种"坑"。…...

PDF-Parser-1.0一键部署教程:5分钟搞定文档解析神器,小白也能轻松上手

PDF-Parser-1.0一键部署教程&#xff1a;5分钟搞定文档解析神器&#xff0c;小白也能轻松上手 1. 为什么你需要这个文档解析工具&#xff1f; 你是不是经常遇到这样的烦恼&#xff1f; 下载了一份重要的PDF报告&#xff0c;想把里面的表格数据整理到Excel里&#xff0c;结果…...

Wan2.2-I2V-A14B与数据库联动:自动化生成电商商品动态详情页视频

Wan2.2-I2V-A14B与数据库联动&#xff1a;自动化生成电商商品动态详情页视频 1. 电商视频制作的痛点与机遇 电商平台每天都有大量新品上架&#xff0c;传统的商品详情页视频制作方式面临巨大挑战。一个中型电商平台每月可能新增上千款商品&#xff0c;如果每款商品都需要人工…...

MoveIt Config 配置文件完整一致性检查

检查范围&#xff08;全部核对完毕&#xff09;ros2_control xacro&#xff08;硬件接口 / 关节&#xff09;initial_positions.yaml&#xff08;初始位置&#xff09;srdf&#xff08;运动组 / 关节&#xff09;joint_limits.yaml&#xff08;关节限制&#xff09;kinematics.…...

基于训练RBF神经网络的车速信息时序预测Matlab模型

✅作者简介&#xff1a;热爱科研的Matlab仿真开发者&#xff0c;擅长毕业设计辅导、数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。&#x1f34e; 往期回顾关注个人主页&#xff1a;Matlab科研工作室&#x1f447; 关注我领取海量matlab电子书和…...

Qwen3-14B-AWQ模型效果深度评测:在算法题求解上的表现

Qwen3-14B-AWQ模型效果深度评测&#xff1a;在算法题求解上的表现 1. 评测背景与模型简介 在AI技术快速发展的今天&#xff0c;大语言模型在代码生成和算法解题领域展现出越来越强的能力。Qwen3-14B-Int4-AWQ作为通义千问系列的最新量化版本&#xff0c;在保持较高推理能力的…...

K230 vs树莓派视觉套件:300元预算该选谁?实测对比工业检测场景

K230与树莓派视觉套件&#xff1a;300元预算下的工业检测实战对比 在工业自动化浪潮中&#xff0c;视觉检测系统正从大型企业向中小型制造车间快速渗透。当预算被严格限制在300元区间时&#xff0c;K230开发板与树莓派摄像头组合成为最受关注的两种解决方案。我们历时三个月在6…...

单一模型可能涌现不出超级智能,但 Agent 协作体却极有可能。

当 AI 把产品能力拉齐&#xff0c;注意力才是唯一的护城河 你有没有这种感觉&#xff1f;2025 年底&#xff0c;用 AI 一键生成一个完整 App 已经不是什么新闻&#xff0c;Vibe Coding 让普通开发者一天就能上线一个产品。可产品做出来了&#xff0c;下载量却像石沉大海&#x…...

Matlab中的QRBiGRU分位数回归双向门控循环单元模型:多图输出与多指标评估的时间序列区间预测

Matlab实现基于QRBiGRU分位数回归双向门控循环单元的时间序列区间预测模型&#xff1a; 1.Matlab实现基于QRBiGRU分位数回归双向门控循环单元的时间序列区间预测模型 2.多图输出、多指标输出(MAE、RMSE、MSE、R2)&#xff0c;多输入单输出&#xff0c;含不同置信区间图、概率密…...

如何用League-Toolkit提升你的英雄联盟游戏体验

如何用League-Toolkit提升你的英雄联盟游戏体验 【免费下载链接】League-Toolkit 兴趣使然的、简单易用的英雄联盟工具集。支持战绩查询、自动秒选等功能。基于 LCU API。 项目地址: https://gitcode.com/gh_mirrors/le/League-Toolkit 你是否曾经在英雄联盟游戏中感到效…...