前提:有docker运行环境和openai的有效key
1、安装qdrant
docker pull ainize/adrant
2、运行qdrant
docker run -p 6333:6333 \ -v $(pwd)/path/to/data:/qdrant/storage \ qdrant/qdrant
3、python客户端
pip install qdrant_client
pip install openai
4、创建数据库test
from qdrant_client import QdrantClient from qdrant_client.http.models import Distance, VectorParams client = QdrantClient("127.0.0.1", port=6333) client.recreate_collection( collection_name='test', vectors_config=VectorParams(size=1536, distance=Distance.COSINE), )5、插入embedding数据
数据文件db.txt
小明是一个小数生 小明爱游泳,经常去游泳馆 小明的妈妈很爱干净,家里一尘不染
python运行文件
from qdrant_client import QdrantClient from qdrant_client.http.models import Distance, VectorParams import openai, numpy as np openai.api_key = "apikey" def getembedding(txt): resp = openai.Embedding.create( input=[txt], engine="text-embedding-3-small") return resp['data'][0]['embedding'] client = QdrantClient("127.0.0.1", port=6333) with open('db.txt', 'r', encoding='utf-8') as f: for index, line in enumerate(f.readlines()): print(line) embedding = getembedding(line) client.upsert( collection_name='test', wait=True, points=[ PointStruct(id=index+1, vector=embedding, payload={"text": line}), ], )6、模糊匹配
from qdrant_client import QdrantClient from qdrant_client.http.models import Distance, VectorParams import openai, numpy as np openai.api_key = "apikey" def getembedding(txt): resp = openai.Embedding.create( input=[txt], engine="text-embedding-3-small") return resp['data'][0]['embedding'] client = QdrantClient("127.0.0.1", port=6333) question = '小明的妈妈有什么习惯?' search_results = client.search( collection_name='kb', query_vector=getembedding(question), limit=3, search_params={"exact": False, "hnsw_ef": 128} )也可以参考官网的教程
https://qdrant.tech/documentation/embeddings/openai/
网友回复
DLNA与UPnP的区别和不同?
苏超自建抢票app,通过先预约再抽签化解高并发抢票?
python如何让给电脑在局域网中伪装成电视接收手机的投屏图片视频播放?
如何结合python+js如何自己的视频编码与加密播放直播?
python如何在电脑上通过局域网将本地视频或m3u8视频投屏电视播放?
腾讯视频爱奇艺优酷vip电影电视剧视频如何通过python绕过vip收费直接观看?
有没有可免费观看全球电视台直播m3u8地址url的合集?
有没有实现观影自由的免vip影视苹果 CMS V10 API的可用url?
python如何实时检测电脑usb插入检测报警?
如何判断真人操作的鼠标移动直线轨迹与机器操作的轨迹?