首页 > 数据库 >python 操作向量数据库qdrant

python 操作向量数据库qdrant

时间:2023-10-18 10:11:52浏览次数:38  
标签:name python text self collection qdrant data 向量

qdrant官网:https://qdrant.tech/documentation/overview/

两个步骤:

1、文本进行向量化

2、连接qdrant进行存储

步骤一:文本向量化

文本向量化可以借助很多现有模型,个人使用bge-large-zh

from sentence_transformers import SentenceTransformer

#模型已下载到本地
MODELBGE = SentenceTransformer(BASE_DIR + '/bge-large-zh')
class LocalEmbedding():
    def __init__(self, text, data=None):
        self.text = text#text必须是一个list:['文本1','文本2']
        self.data = data#list 
  #查询时:搜索关键词+官方给定的instruction
    def achieve_emb(self):
        try:
            MODELBGE = SentenceTransformer(BASE_DIR + '/bge-large-zh')
            instruction = "为这个句子生成表示以用于检索相关文章:"
            q_embeddings = MODELBGE.encode([instruction + self.text], normalize_embeddings=True).tolist()
            self.data.extend(q_embeddings)
            return self.data
        except Exception as e:
            print('本地embedding错误', e)
            return self.data
  #入库文本的向量化
    def achieve_emb_txt(self):
        try:
            p_embeddings = MODELBGE.encode(self.text, normalize_embeddings=True).tolist()
            return p_embeddings
        except Exception as e:
            print('本地embedding错误', e)
            return self.data

步骤二:连接qdrant进行存储

def save_qdrant_url(i_path,file_name):
   '''
i_path:文件路径
file_name:文件名
''' try:      #连接qdrant数据库 client = QdrantClient('ip', port=6333) collection_name = '自定义的集合名称' try: table_collection = client.get_collection(collection_name=f"{collection_name}") print(table_collection) print(f'集合已存在:{collection_name}')
#update_collection更新集合,不会覆盖原有集合内的数据。 client.update_collection( collection_name=collection_name ) except: print(f'创建新集合:{collection_name}')
#recreate_collection创建新的集合,原有数据清空 client.recreate_collection( collection_name=collection_name, vectors_config=VectorParams(size=1024, distance=Distance.COSINE), ) print(f'正在执行json文件为{file_name}') with open(f'{i_path}', 'r', encoding='utf-8') as f: data_lines = json.loads(f.read()) text_all_list=data_lines[file_name] text_list = [text['content'] for text in text_all_list] tt = LocalEmbedding(text_list) vector_list = tt.achieve_emb_txt()        #upload_collection批量存储,注意向量化的列表长度vectors与文本内容列表长度payload要一一对应。 client.upload_collection( collection_name=collection_name, vectors=vector_list, payload=text_all_list, ids=None, batch_size=256, parallel=2 ) print(f'文件:{file_name} qdrant数据存储成功') except Exception as e: print(f'save_qdrant_data存储失败文件为:{file_name},失败原因为{e}')

 


 

 

 

 

 

 

 

 

 

 

 

 

记录个人的一个使用脚本。

标签:name,python,text,self,collection,qdrant,data,向量
From: https://www.cnblogs.com/qxh-beijing2016/p/17771435.html

相关文章

  • 【Python入门教程】CV2报错:cv2.error: OpenCV(4.7.0) D:\a\opencv-python\opencv-p
    ​     OpenCV作为一个强大计算机视觉库被各个领域广泛应用,今天分享下自己编程遇到的报错信息以及解决办法。1报错信息​[WARN:0@3.596]globalgrfmt_tiff.cpp:716cv::TiffDecoder::readDataOpenCVTIFF:TIFFRGBAImageOK:Sorry,cannothandleimageswith6......
  • 【2023最新教程】超详细!!!Python保姆式安装Python环境配置蓝奏云资源
    目录1Python简介2Python下载2.1Python3.10.11蓝奏云资源安装包3Python安装3.1验证环境是否配置完成4Python环境配置1Python简介python有两个版本,python2.X和python3,我们现在用的全部都是python3版本python的内置库是最厉害,所以python可以在多领域展开,让你用做少的......
  • python 颜色 调色板 RGB 代码 调色板 网站
    #定义可用的颜色#colors=['red','blue','green','yellow','Orchid','purple','cyan','black',#'LightPink','Violet','Indigo','Ligh......
  • Python 密码本和电子钥匙
    二分查找a=[1,3,5,7,9]#序列k=3#目标l=0#开头(注意,是索引号)r=4#结尾(注意,是索引号)whilel+1!=r:#是否只剩一个mid=int((l+r)//2)#中间(注意,是索引号)ifa[mid]<k:#小于目标l=mid#结尾移到中间位置上(往大走)elifa[mid]>k:#大......
  • Python 五级编程题
    python_五级_中国电子学会_2021年_真题_汉诺塔汉诺塔是一道非常经典的题,12月5日悦儿姐在考python五级时又遇见它了,在这里给大家分享一下。题目:设计一个算法,汉诺塔(又称河内塔)问题是源于印度一个古老传说的益智玩具。大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按......
  • python报错解决-ValueError: Trusted host URL must include a host part: '#!
    删掉#后面的字符参考:pipinstall总是报错:ValueError:TrustedhostURLmustincludeahostpart:‘#‘-CSDN博客......
  • python12
    1.列表(list)列表是一个有序且可变的容器,在里面可存放多个类型的元素。1.1定义use_list=["天","地","人"]number_list=[98,66,55]data_list=[1,True,"Alex"]use_list=[]use_list.append("铁锤")use_list.append(123)use_list.append(True)p......
  • # yyds干货盘点 # Python自动化办公之PDF版本发票识别并提取关键信息实战教程(上篇)
    大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Python自动化办公发票数据处理的问题,一起来看看吧。二、实现过程这个问题在实际工作中还是非常常见的,实用性和通用性都比较强,历史文章中其实也有写过几篇文章,这里继续给大家敲敲脑壳。不过这里还涉及到一个......
  • 代码随想训练营第四天(Python)| 24. 两两交换链表中的节点、19.删除链表的倒数第N个节点
    两两交换链表中的节点关键点:涉及到头节点变动的都使用虚拟节点。画图找出交换节点指向的顺序和退出循环的条件。1、迭代法classSolution:defswapPairs(self,head:Optional[ListNode])->Optional[ListNode]:dummy_node=ListNode(next=head)cur=......
  • Python 当前工作路径、当前文件路径
    在BCP源码中,涉及到路径问题,先描述下问题,我运行的文件在BCP/code/LA_BCP_train.py,我希望在索引的时候使用的是BCP/code这个地址,但是实际上是BCP/,这里涉及Python的当前文件路径和当前工作路径。当前工作路径是BCP/,相对路径是基于这个路径,可以通过os.path.getcwd()获取当前文件路......