Qdrant 向量数据库的简单使用

1 概述

本文将通过 Qdrant 的 python 客户端库 qdrant-client 来简单操作一下 Qdrant 向量数据库。

2 Qdrant 的使用

2.1 引入 Qdrant 的 python 客户端库

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

pip install qdrant-client

2.2 创建和启动 Qdrant 数据库

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

from qdrant_client import QdrantClient

client = QdrantClient(path="/Users/Shared/data/qdrant")

2.3 创建数据集

创建一个名称为 test_collection 的数据集(类似于mysql中的表)。其中向量维度为4维,相似度计算方式使用向量点积相似度-Distance.DOT。

from qdrant_client.models import Distance, VectorParams

def create_collection():
    client.create_collection(
        collection_name="test_collection",
        vectors_config=VectorParams(size=4, distance=Distance.DOT),
    )

2.4 新增向量数据 

往 test_collection 数据集中新增向量数据。其中 vector 为向量数据对应的向量,payload 为向量数据对应的负载,是附加在向量上的数据,在搜索过程中可用于过滤或排序结果。

from qdrant_client.models import PointStruct

def add_vectors():
    operation_info = client.upsert(
        collection_name="test_collection",
        wait=True,
        points=[
            PointStruct(id=1, vector=[0.05, 0.61, 0.76, 0.74], payload={"city": "Berlin"}),
            PointStruct(id=2, vector=[0.19, 0.81, 0.75, 0.11], payload={"city": "London"}),
            PointStruct(id=3, vector=[0.36, 0.55, 0.47, 0.94], payload={"city": "Moscow"}),
            PointStruct(id=4, vector=[0.18, 0.01, 0.85, 0.80], payload={"city": "New York"}),
            PointStruct(id=5, vector=[0.24, 0.18, 0.22, 0.44], payload={"city": "Beijing"}),
            PointStruct(id=6, vector=[0.35, 0.08, 0.11, 0.44], payload={"city": "Mumbai"}),
        ],
    )

    print(operation_info)

2.5 简单查询

根据向量查询最相似的前n条向量数据。

def query():
    search_result = client.search(
        collection_name="test_collection", query_vector=[0.2, 0.1, 0.9, 0.7], limit=3, with_vectors=True
    )

    print(search_result)

 查询结果如下:

[ScoredPoint(id=4, version=0, score=1.362, payload={'city': 'New York'}, vector=[0.18, 0.01, 0.85, 0.8], shard_key=None, order_value=None), ScoredPoint(id=1, version=0, score=1.2730000000000001, payload={'city': 'Berlin'}, vector=[0.05, 0.61, 0.76, 0.74], shard_key=None, order_value=None), ScoredPoint(id=3, version=0, score=1.208, payload={'city': 'Moscow'}, vector=[0.36, 0.55, 0.47, 0.94], shard_key=None, order_value=None)]

2.6 filter查询

根据向量+负载过滤查询最相似的前n条向量数据。

(1) MatchValue 精确查询

from qdrant_client.models import Filter, FieldCondition, MatchValue

def query_with_filter():
    search_result = client.search(
        collection_name="test_collection",
        query_vector=[0.2, 0.1, 0.9, 0.7],
        query_filter=Filter(
            must=[FieldCondition(key="city", match=MatchValue(value="Beijing"))]
        ),
        with_vectors=True,
        limit=3,
    )

    print(search_result)

 查询结果如下:

[ScoredPoint(id=5, version=0, score=0.5720000000000001, payload={'city': 'Beijing'}, vector=[0.24, 0.18, 0.22, 0.44], shard_key=None, order_value=None)]

(2)MatchText 模糊查询

def query_with_filter_fuzzy():
    search_result = client.search(
        collection_name="test_collection",
        query_vector=[0.2, 0.1, 0.9, 0.7],
        query_filter=Filter(
            must=[FieldCondition(key="city", match=MatchText(text="jin"))]
        ),
        with_vectors=True,
        limit=3,
    )

    print(search_result)

查询结果如下:

[ScoredPoint(id=5, version=0, score=0.5720000000000001, payload={'city': 'Beijing'}, vector=[0.24, 0.18, 0.22, 0.44], shard_key=None, order_value=None)]

3 参考文献

(1)https://github.com/qdrant/qdrant

(2)Local Quickstart - Qdrant

### Qdrant 向量数据库使用指南 #### 导入Qdrant向量存储库 为了能够操作Qdrant向量数据库,需要通过特定的Python包来实现这一功能。这可以通过下面给出的语句完成: ```python from langchain_qdrant import QdrantVectorStore ``` 此命令允许开发者访问`QdrantVectorStore`类以便进一步的操作[^1]。 #### 数据准备与环境设置 对于希望利用LlamaIndex项目中的资源作为测试数据集的情况,建议按照官方指引先行克隆该项目至本地环境中,并确保所需的数据文件位于指定路径下(例如`paul_graham_essay`目录)。这样做的好处是可以方便快捷地获取到高质量的样例文档用于实验目的[^2]。 #### 安装配置过程概述 安装并配置好Qdrant服务端之后,就可以着手于客户端侧的应用开发工作了。通常来说,这意味着要在应用程序里集成相应的SDK或API接口来进行后续的任务处理。上述提到过的`langchain_qdrant`模块即是为此而设计的一个工具选项之一[^3]。 #### 示例代码片段展示如何连接到远程实例 一旦完成了必要的前期准备工作,便可以编写简单的脚本来验证整个流程是否顺畅无阻。这里提供了一个基本的例子说明怎样建立同远端服务器之间的链接关系: ```python import qdrant_client as qc client = qc.QdrantClient( url="http://localhost:6333", # 替换成实际的服务地址 ) vector_store = QdrantVectorStore(client=client, collection_name="my_collection") ``` 这段程序展示了初始化一个Qdrant客户端对象以及创建关联矢量储存的具体方法。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值