milvus 结合Thowee 文本转向量 ,新建表,存储,搜索,删除
1.向量数据库科普
【上集】向量数据库技术鉴赏
【下集】向量数据库技术鉴赏
milvus连接
from pymilvus import connections, FieldSchema, CollectionSchema, DataType, Collection, utility
connections.connect(host='124.****', port='19530')
2.milvus + Thowee 文本转向量 使用
@app.route("/es",methods=["GET","POST"])
def es_sous():ans_pipe = (pipe.input('subject').map('subject', 'vector', ops.text_embedding.dpr(model_name="facebook/dpr-ctx_encoder-single-nq-base"))#将输入的问题文本转换为向量表示,使用名为 "facebook/dpr-ctx_encoder-single-nq-base" 的预训练模型进行文本嵌入。.map('vector', 'vector', lambda x: x / np.linalg.norm(x, axis=0))#对上一步得到的向量进行归一化处理,使得向量的每个维度都被缩放到相同尺度。.output('vector'))param = request.args.get('prop')#传入一个文本ans = ans_pipe(param)#文本转向量ans = DataCollection(ans)#格式化ans.show() #print(type(ans[0].vector))list1 = ans[0].vector.tolist()return list1

3.milvus + openai 文本转向量 使用
import openai
OPENAI_ENGINE = 'text-embedding-ada-002'#使用哪种嵌入模型
openai.api_key = 'sk-*****'#您的 OpenAI 帐户密钥
def embed(texts): #返回 向量embeddings = openai.Embedding.create(input=texts,engine=OPENAI_ENGINE)return [x['embedding'] for x in embeddings['data']]
4. milvus + 微软openai 文本转向量 使用
import openai
openai.api_key = "0**********" # Azure 的密钥
openai.api_base = "https://zhan.op*****" # Azure 的终结点
openai.api_type = "azure"
openai.api_version = "2023-03-15-preview" # API 版本,未来可能会变
model = "text" # 模型的部署名
def embed(texts):embeddings = openai.Embedding.create(input=texts,engine=model)return [x['embedding'] for x in embeddings['data']]
5.milvus 新建表


def create_milvus_collection(collection_name,dim):if utility.has_collection(collection_name):utility.drop_collection(collection_name)fields = [FieldSchema(name = 'id',dtype=DataType.INT64,description='ids',is_primary=True),FieldSchema(name='answer',dtype=DataType.VARCHAR,max_length = 2000,description='答案'),FieldSchema(name='subject',dtype=DataType.VARCHAR,max_length = 1000,description='题目'),FieldSchema(name='subject_embedding', dtype=DataType.FLOAT_VECTOR, dim=dim,description = '题目矢量'),FieldSchema(name='url', dtype=DataType.VARCHAR, max_length = 255,description = '路径')]# CollectionSchema:这是一个用于定义数据表结构的类。schema = CollectionSchema(fields = fields,description='Test')collection = Collection(name=collection_name,schema=schema)index_params = {'metric_type': 'L2','index_type': "IVF_FLAT",'params': {"nlist": 2048}}collection.create_index(field_name="subject_embedding",index_params=index_params)return collection
collections = create_milvus_collection('Test',768) # 表名 , 模型维度
6.milvus存储
1.milvus存储 和 thowee 管道
insert = (pipe.input('id','subject','answer','url','subject_embedding')#将输入的问题文本转换为向量表示,使用名为 "facebook/dpr-ctx_encoder-single-nq-base" 的预训练模型进行文本嵌入。.map('subject','vec',ops.text_embedding.dpr(model_name='facebook/dpr-ctx_encoder-single-nq-base'))# 对上一步得到的向量进行归一化处理,使得向量的每个维度都被缩放到相同尺度。.map('vec', 'vec', lambda x: x / np.linalg.norm(x, axis=0)).map(('id','answer','subject','vec','url'),'insert_status',ops.ann_insert.milvus_client(host='124。*****', port='19530', collection_name='Test'))#进行存储.output()#返回
)
2.milvus存储 和 原始的存储方案
milvus = Milvus(host=HOST, port=PORT) # milvus 连接data1 = [[],[],# subject[],# option[],# answer[],#knowledgepoints[],#img[],#video[],#parse]data1[0].append(None)data1[1].append(request.args.get('subject'))data1[2].append(request.args.get('option'))data1[3].append(request.args.get('answer'))data1[4].append(request.args.get('knowledgepoints'))data1[5].append(request.args.get('img'))data1[6].append(request.args.get('video'))data1[7].append(request.args.get('parse'))data1.append(embed(data1[1]))# 转向量milvus.insert(collection_name=COLLECTION_NAME,entities=data1)# 调用 insert 新增 表名+数据return "ok"
7.milvus 搜索
# milvus 搜索
# 搜索 索引
QUERY_PARAM = {"metric_type": "L2","params": {"ef": 64},
}collection.search()res = collection.search(embed(request.args.get('subject')), anns_field='subject_embedding', param=QUERY_PARAM, limit = 1, output_fields=['id', 'subject', 'answer','option'])
# 向量 , 指定被搜索字段,索引,top1,返回字段______________________________________________例子
import openai
from pymilvus import connections, utility, FieldSchema, Collection, CollectionSchema, DataType
HOST = '124.**********'
PORT = 19530
COLLECTION_NAME = 'mo'#在 Milvus 中如何命名
DIMENSION = 1536 #嵌入的维度
OPENAI_ENGINE = 'text-embedding-ada-002'#使用哪种嵌入模型
openai.api_key = 'sk-***************'#您的 OpenAI 帐户密钥
QUERY_PARAM = {"metric_type": "L2","params": {"ef": 64},
}
connections.connect(host=HOST, port=PORT)
def embed(texts):embeddings = openai.Embedding.create(input=texts,engine=OPENAI_ENGINE)return [x['embedding'] for x in embeddings['data']]
collection = Collection(COLLECTION_NAME)
def query(query, top_k = 5):text = queryres = collection.search(embed(text), anns_field='subject_embedding', param=QUERY_PARAM, limit = top_k, output_fields=['id', 'subject', 'answer'])print(res)
my_query = ('P、V操作是一种')query(my_query)

milvus 搜索 + thowee管道 搜索
ans_pipe = (pipe.input('subject').map('subject', 'vector', ops.text_embedding.dpr(model_name="facebook/dpr-ctx_encoder-single-nq-base"))#将输入的问题文本转换为向量表示,使用名为 "facebook/dpr-ctx_encoder-single-nq-base" 的预训练模型进行文本嵌入。.map('vector', 'vector', lambda x: x / np.linalg.norm(x, axis=0))#对上一步得到的向量进行归一化处理,使得向量的每个维度都被缩放到相同尺度。.flat_map('vector', ('id','score', 'answer','subject'), ops.ann_search.milvus_client(host='124.222.24.191',port='19530',collection_name='Test',output_fields=['answer','subject'])).output('subject','id','score','answer')
)
ans = ans_pipe('恶性肿瘤是什么?')
ans = DataCollection(ans)
ans.show()
8.milvus 删除
emb_collection.delete(expr=f"id == [{emb_id}]") # failedemb_collection.delete(expr=f"id in [{emb_id}]") # Success
相关文章:
milvus 结合Thowee 文本转向量 ,新建表,存储,搜索,删除
1.向量数据库科普 【上集】向量数据库技术鉴赏 【下集】向量数据库技术鉴赏 milvus连接 from pymilvus import connections, FieldSchema, CollectionSchema, DataType, Collection, utility connections.connect(host124.****, port19530)2.milvus Thowee 文本转向量 使用 …...
GEO生信数据挖掘(三)芯片探针ID与基因名映射处理
检索到目标数据集后,开始数据挖掘,本文以阿尔兹海默症数据集GSE1297为例 目录 处理一个探针对应多个基因 1.删除该行 2.保留分割符号前面的第一个基因 处理多个探针对应一个基因 详细代码案例一删除法 详细代码案例二 多个基因名时保留第一个基因名…...
力扣 -- 96. 不同的二叉搜索树
解题步骤: 参考代码: class Solution { public:int numTrees(int n) {vector<int> dp(n1);//初始化dp[0]1;//填表for(int i1;i<n;i){for(int j1;j<i;j){//状态转移方程dp[i](dp[j-1]*dp[i-j]);}}//返回值return dp[n];} }; 你学会了吗&…...
经典算法-枚举法(百钱买百鸡问题)
题目: 条件:现有 100 元,一共要买公鸡、母鸡、小鸡三种鸡,已知公鸡 5 元一只,母鸡 3 元一只,1 元可以买三只小鸡。 要求:公鸡、母鸡、小鸡都要有,一共买 100 只鸡。有哪几种买法&am…...
Gurobi设置初始可行解
目录 1. 决策变量的Start属性直接设置变量的初始值 1.1 Start:MIP变量的起始值(初值)double类型,可更改 1.2 StartNodeLimit:限制了在完善一组输入部分变量的初始解时,MIP所探索的分支定界的节点的数量 …...
Zabbix配置监控文件系统可用空间小于30GB自动告警
一、创建监控项 二、配置监控项 #输入名称–>键值点击选择 #找到磁盘容量点击 注: 1、vfs 该键值用于检测磁盘剩余空间,zabbix 内置了非常多的键值可以选着使用 2、单位B不需要修改,后期图表中单位和G拼接起来就是GB 3、更新时间 10S…...
进程调度算法之先来先服务(FCFS),短作业优先(SJF)以及高响应比优先(HRRN)
1.先来先服务(FCFS) first come first service 1.算法思想 主要从“公平”的角度考虑(类似于我们生活中排队买东西的例子) 2.算法规则 按照作业/进程到达的先后顺序进行服务。 3.用于作业/进程调度 用于作业调度时,考虑的是哪个作业先…...
MyBatisPlus(九)模糊查询
说明 模糊查询,对应SQL语句中的 like 语句,模糊匹配“要查询的内容”。 like /*** 查询用户列表, 查询条件:姓名包含 "J"*/Testvoid like() {String name "J";LambdaQueryWrapper<User> wrapper ne…...
Spring 原理
它是一个全面的、企业应用开发一站式的解决方案,贯穿表现层、业务层、持久层。但是 Spring仍然可以和其他的框架无缝整合。 1 Spring 特点 轻量级控制反转面向切面容器框架集合 2 Spring 核心组件 3 Spring 常用模块 4 Spring 主要包 5 Spring 常用注解 bean…...
基于微信小程序的明星应援小程序设计与实现(源码+lw+部署文档+讲解等)
文章目录 前言系统主要功能:具体实现截图论文参考详细视频演示为什么选择我自己的网站自己的小程序(小蔡coding)有保障的售后福利 代码参考源码获取 前言 💗博主介绍:✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计…...
try catch 中的finally什么时候运行
try catch 中的finally什么时候运行 在Java、C#等编程语言中,try-catch-finally语句块用于处理异常。finally块的执行时机通常是在try块中的代码执行完毕之后,无论try块中的代码是否引发了异常。 具体执行顺序如下: 1、try块中的代码首先被…...
力扣 -- 322. 零钱兑换(完全背包问题)
参考代码: 未优化代码: class Solution { public:int coinChange(vector<int>& coins, int amount) {int n coins.size();const int INF 0x3f3f3f3f;//多开一行,多开一列vector<vector<int>> dp(n 1, vector<i…...
[python]pip安装requiements.txt跳过错误包继续安装
在linux上可以用下面操作进行 while read requirement; do sudo pip install $requirement; done < requirement.txt 在windows上写个脚本 import sys from pip._internal import main as pip_maindef install(package):pip_main([--default-timeout1000,install,-U, pac…...
1.5 计算机网络的类别
思维导图: 1.5.1 计算机网络的定义 我的笔记: #### 精确定义: 计算机网络没有统一的精确定义,但一种较为接近的定义是:计算机网络主要由一些通用的、可编程的硬件互连而成,这些硬件并非专门用来实现某一特…...
Go 基本数据类型和 string 类型介绍
Go 基础之基本数据类型 文章目录 Go 基础之基本数据类型一、整型1.1 平台无关整型1.1.1 基本概念1.1.2 分类有符号整型(int8~int64)无符号整型(uint8~uint64) 1.2 平台相关整型1.2.1 基本概念1.2.2 注意点1.2.3 获取三个类型在目标…...
Python中print()打印如何不换行?
文章目录 Python中print()打印如何不换行python2.xpython3.x print()函数语法objects基本语法sep基本语法end基本语法 Python中print()打印如何不换行 print() 函数用于打印输出,是python中最常见的一个内置函数。 如何在Python中打印两个或多个变量、语句时而不进…...
python 学习随笔 4
列表list 将序列前几个进行替换(数量可以不同) 将序列进行间隔替换(必须保证数量相同,否则报错) 删除序列内元素 向序列后新增一个元素 向序列后新增多个元素 将序列进行数乘(不是产生几个序列哦࿰…...
【网络安全-信息收集】网络安全之信息收集和信息收集工具讲解
一,域名信息收集 1-1 域名信息查询 可以用一些在线网站进行收集,比如站长之家 域名Whois查询 - 站长之家站长之家-站长工具提供whois查询工具,汉化版的域名whois查询工具。https://whois.chinaz.com/ 可以查看一下有没有有用的信息…...
设计模式12、代理模式 Proxy
解释说明:代理模式(Proxy Pattern)为其他对象提供了一种代理,以控制对这个对象的访问。在某些情况下,一个对象不适合或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。 抽…...
ZXing - barcode scanning library for Java, Android
官网 GitHub - zxing/zxing: ZXing ("Zebra Crossing") barcode scanning library for Java, Android 使用说明 Getting Started Developing zxing/zxing Wiki GitHub 参考 Android中二维码的扫描与生成(zxing库)_android 二维码生成-C…...
ES6从入门到精通:前言
ES6简介 ES6(ECMAScript 2015)是JavaScript语言的重大更新,引入了许多新特性,包括语法糖、新数据类型、模块化支持等,显著提升了开发效率和代码可维护性。 核心知识点概览 变量声明 let 和 const 取代 var…...
【SpringBoot】100、SpringBoot中使用自定义注解+AOP实现参数自动解密
在实际项目中,用户注册、登录、修改密码等操作,都涉及到参数传输安全问题。所以我们需要在前端对账户、密码等敏感信息加密传输,在后端接收到数据后能自动解密。 1、引入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId...
CMake基础:构建流程详解
目录 1.CMake构建过程的基本流程 2.CMake构建的具体步骤 2.1.创建构建目录 2.2.使用 CMake 生成构建文件 2.3.编译和构建 2.4.清理构建文件 2.5.重新配置和构建 3.跨平台构建示例 4.工具链与交叉编译 5.CMake构建后的项目结构解析 5.1.CMake构建后的目录结构 5.2.构…...
Objective-C常用命名规范总结
【OC】常用命名规范总结 文章目录 【OC】常用命名规范总结1.类名(Class Name)2.协议名(Protocol Name)3.方法名(Method Name)4.属性名(Property Name)5.局部变量/实例变量(Local / Instance Variables&…...
令牌桶 滑动窗口->限流 分布式信号量->限并发的原理 lua脚本分析介绍
文章目录 前言限流限制并发的实际理解限流令牌桶代码实现结果分析令牌桶lua的模拟实现原理总结: 滑动窗口代码实现结果分析lua脚本原理解析 限并发分布式信号量代码实现结果分析lua脚本实现原理 双注解去实现限流 并发结果分析: 实际业务去理解体会统一注…...
html css js网页制作成品——HTML+CSS榴莲商城网页设计(4页)附源码
目录 一、👨🎓网站题目 二、✍️网站描述 三、📚网站介绍 四、🌐网站效果 五、🪓 代码实现 🧱HTML 六、🥇 如何让学习不再盲目 七、🎁更多干货 一、👨…...
Aspose.PDF 限制绕过方案:Java 字节码技术实战分享(仅供学习)
Aspose.PDF 限制绕过方案:Java 字节码技术实战分享(仅供学习) 一、Aspose.PDF 简介二、说明(⚠️仅供学习与研究使用)三、技术流程总览四、准备工作1. 下载 Jar 包2. Maven 项目依赖配置 五、字节码修改实现代码&#…...
Java编程之桥接模式
定义 桥接模式(Bridge Pattern)属于结构型设计模式,它的核心意图是将抽象部分与实现部分分离,使它们可以独立地变化。这种模式通过组合关系来替代继承关系,从而降低了抽象和实现这两个可变维度之间的耦合度。 用例子…...
七、数据库的完整性
七、数据库的完整性 主要内容 7.1 数据库的完整性概述 7.2 实体完整性 7.3 参照完整性 7.4 用户定义的完整性 7.5 触发器 7.6 SQL Server中数据库完整性的实现 7.7 小结 7.1 数据库的完整性概述 数据库完整性的含义 正确性 指数据的合法性 有效性 指数据是否属于所定…...
django blank 与 null的区别
1.blank blank控制表单验证时是否允许字段为空 2.null null控制数据库层面是否为空 但是,要注意以下几点: Django的表单验证与null无关:null参数控制的是数据库层面字段是否可以为NULL,而blank参数控制的是Django表单验证时字…...
