当前位置: 首页 > 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

相关文章:

  • HTML开发指南
  • MT6765/MT6762(R/D/M)/MT6761(MT8766)安卓核心板参数比较_MTK联发科4G智能模块
  • HTML中的表单(超详细)
  • ‌Excel VBA进行间比法设计
  • 【项目案例】物联网比较好的10+练手项目推荐,附项目文档/源码/视频
  • 【HTTP】方法(method)以及 GET 和 POST 的区别
  • 第十章 【后端】商品分类管理微服务(10.10)——Nacos 注册中心
  • SPSS26统计分析笔记——4 方差分析
  • 并网逆变器是如何产生有功和无功电流的?
  • 华为静态路由(route-static)
  • CKF的改进思路,SVDCKF,LSTMCKF,BPCKF,SVMCKF,自适应抗差CKF
  • 用智能码二维码zhinengma.cn做产品说明书
  • MCU自动测量单元采集振弦式应变计测值的过程
  • 速盾:cdn一般多长时间清理下缓存?
  • SpringCloudEureka简介
  • Google 是如何开发 Web 框架的
  • eclipse(luna)创建web工程
  • JavaScript设计模式之工厂模式
  • Netty 框架总结「ChannelHandler 及 EventLoop」
  • node入门
  • Stream流与Lambda表达式(三) 静态工厂类Collectors
  • TCP拥塞控制
  • vue的全局变量和全局拦截请求器
  • 编写符合Python风格的对象
  • 电商搜索引擎的架构设计和性能优化
  • 二维平面内的碰撞检测【一】
  • 翻译 | 老司机带你秒懂内存管理 - 第一部(共三部)
  • 关于 Cirru Editor 存储格式
  • 简单易用的leetcode开发测试工具(npm)
  • 离散点最小(凸)包围边界查找
  • - 语言经验 - 《c++的高性能内存管理库tcmalloc和jemalloc》
  • Oracle Portal 11g Diagnostics using Remote Diagnostic Agent (RDA) [ID 1059805.
  • scrapy中间件源码分析及常用中间件大全
  • ​2021半年盘点,不想你错过的重磅新书
  • ​经​纬​恒​润​二​面​​三​七​互​娱​一​面​​元​象​二​面​
  • ​虚拟化系列介绍(十)
  • #100天计划# 2013年9月29日
  • $.ajax()参数及用法
  • (1)(1.8) MSP(MultiWii 串行协议)(4.1 版)
  • (1)(1.9) MSP (version 4.2)
  • (1)SpringCloud 整合Python
  • (C语言)深入理解指针2之野指针与传值与传址与assert断言
  • (Forward) Music Player: From UI Proposal to Code
  • (笔试题)合法字符串
  • (动态规划)5. 最长回文子串 java解决
  • (附源码)springboot 个人网页的网站 毕业设计031623
  • (免费领源码)Java#ssm#MySQL 创意商城03663-计算机毕业设计项目选题推荐
  • (算法)N皇后问题
  • ****** 二 ******、软设笔记【数据结构】-KMP算法、树、二叉树
  • ***汇编语言 实验16 编写包含多个功能子程序的中断例程
  • .mp4格式的视频为何不能通过video标签在chrome浏览器中播放?
  • .NET Core 发展历程和版本迭代
  • .NET 将多个程序集合并成单一程序集的 4+3 种方法
  • .net 桌面开发 运行一阵子就自动关闭_聊城旋转门家用价格大约是多少,全自动旋转门,期待合作...
  • @Bean有哪些属性