恒美微站 Logo 恒美微站
  • 首页
  • 关于我们
  • 建站服务
  • 主题模板
  • 案例展示
  • 资讯中心
  • 联系我们

RAG--03--Milvus基本用法

  • 首页
  • 资讯中心
  • /
  • RAG--03--Milvus基本用法

相关资讯

Grok与Codex架构差异:AI编程模型的工程化落地关键 2026/9/15 9:35:26
新能源接入下电力市场主辅联合出清与SCUC建模实践 2026/9/15 9:35:26
ReAct与Reflexion工程化实践:构建可调试的学习闭环 2026/9/15 9:35:26

最新资讯

基于Django+Flask的工业互联网设备报修系统开发实践
用 AI 把后端 Swagger 文档自动转成 TypeScript 类型 + 请求函数,手写接口层的时代结束了
Python编程三合一:进制转换、猜数字与调色板实战
Matlab批量转换地震原始数据为标准SAC格式
Django全栈开发旅行网站:毕业设计实战指南
使用 Axolotl 微调 Shieldstral 安全分类模型:文本与图文 LoRA 实战指南

今日推荐

GDPR下大数据架构重构与隐私保护实践
多组学数据平台架构设计与优化实践
企业主数据管理系统架构设计与实施全解析

本周热门

AI SDK Harness 依赖更新指南:掌握 harness 包 SDK 依赖的升级、桥接同步与一致性校验
Refine v5 Ant Design NumberField 组件实战:基于 Intl 的本地化数字格式化
Flutter应用改名全指南:从Android到iOS的配置与工具实践

本月精选

自研推理加速器Redwood:两周内实现PyTorch模型高效部署的实战教程
V4L2摄像头采集实战:从camera_client.rar到出图全流程解析
从“谁发明了钢琴键”到知识问答智能体:RAG与记忆工程实践

RAG--03--Milvus基本用法

发布时间:2026/9/15 9:35:26
RAG--03--Milvus基本用法 提示文章写完后目录可以自动生成如何生成可参考右边的帮助文档文章目录操作Milvus数据库数据库操作a、连接数据库b、用户管理c、数据库管理1、DDL操作1.1 Database1.2 Collection2、DML操作2.1 准备嵌入模型2.2 准备collection2.3 准备数据2.4 写入数据3、DQL操作3.1 扫描数据3.2 通过主键查询数据3.3 相似度检索collections和数据操作一、Schema 和字段a、主键和 AutoIdb、向量字段为向量字段设置索引参数c、稀疏向量d、全文索引和搜索e、标量字段f、可归零和默认值二、创建Collection三、插入数据操作Milvus数据库数据库操作a、连接数据库from pymilvusimportMilvusClient clientMilvusClient(urihttp://39.100.64.14:19530,tokenroot:Milvus,)clientMilvusClient(urihttp://39.100.64.14:19530,userroot,passwordMilvus,# db_namedefault,)print(client.list_databases())print(client.list_users())b、用户管理# 创建新用户client.create_user(user_nameuser_zs,passwordPssw0rd,)print(client.describe_user(user_zs))# 更新用户密码client.update_password(user_nameuser_zs,old_passwordPssw0rd,new_passwordPssw0rd123)# 删除用户client.drop_user(user_nameuser_zs)c、数据库管理# 创建数据库client.create_database(db_namemy_databaseproperties{database.max.collections:10})print(client.list_databases())# 查看数据库信息print(client.describe_database(db_namemy_database))# 使用数据库切换数据库client.use_database(db_namemy_database)# 删除数据库client.drop_database(db_namemy_database)print(client.list_databases())1、DDL操作1.1 Database1.2 Collection2、DML操作确保已删除名为docs 的collection下文会重新创建2.1 准备嵌入模型2.2 准备collection{collection_name:docs,auto_id:False,num_shards:1,description:,fields:[{field_id:100,name:id,description:,type:DataType.INT64:5,params:{},is_primary:True},{field_id:101,name:vector,description:,type:DataType.FLOAT_VECTOR:101,params:{dim:1024}}],functions:[],aliases:[],collection_id:467040847074183555,consistency_level:2,properties:{timezone:UTC},num_partitions:1,enable_dynamic_field:True,enable_namespace:False,created_timestamp:467041742317420562,update_timestamp:467041742317420562}2.3 准备数据2.4 写入数据3、DQL操作3.1 扫描数据通过query_iterator 扫描collection下的所有数据iteratorclient.query_iterator(collection_namecollection_name,filter,output_fields[*])i0whileTrue:rowsiterator.next()ifnotrows:breakforrowinrows:print(f第{i1}条数据)# print(row)print(fid : {row[id]},vector {row[vector][:5]},text {row[text]},source {row[source]})i1iterator.close()第1条数据id:0,vector[-0.011260323226451874,0.04925568029284477,0.04267069697380066,-0.0021236573811620474,0.005432611797004938],textLangChain 是一个用于构建 LLM 应用的开发框架。,sourcedemo 第2条数据id:1,vector[-0.02432798594236374,0.0016291062347590923,0.01846320368349552,0.00872476864606142,-0.009267804212868214],textMilvus 是一个适合 AI 应用的向量数据库。,sourcedemo 第3条数据id:2,vector[-0.004508086945861578,0.030777014791965485,0.0059316931292414665,-0.03660701960325241,-0.0033217482268810272],textRAG 的核心是先检索相关知识再让大模型生成答案。,sourcedemo 第4条数据id:3,vector[0.005521129816770554,0.013496095314621925,-0.013929124921560287,-0.02554875798523426,-0.010753572918474674],textDocker Desktop 可以方便地在本地运行 Milvus Standalone。,sourcedemo3.2 通过主键查询数据resclient.get(collection_namecollection_name,ids[0,1,2])print(len(res))foriinrange(len(res)):print(f第{i1}条数据)print(fid : {res[i][id]},vector {res[i][vector][:5]},text {res[i][text]},source {res[i][source]})# print(res[i])3第1条数据id:0,vector[-0.011260323226451874,0.04925568029284477,0.04267069697380066,-0.0021236573811620474,0.005432611797004938],textLangChain 是一个用于构建 LLM 应用的开发框架。,sourcedemo 第2条数据id:1,vector[-0.02432798594236374,0.0016291062347590923,0.01846320368349552,0.00872476864606142,-0.009267804212868214],textMilvus 是一个适合 AI 应用的向量数据库。,sourcedemo 第3条数据id:2,vector[-0.004508086945861578,0.030777014791965485,0.0059316931292414665,-0.03660701960325241,-0.0033217482268810272],textRAG 的核心是先检索相关知识再让大模型生成答案。,sourcedemo3.3 相似度检索① 准备查询嵌入#%%# 相似度检索query什么是向量数据库query_vectorembed_model.embed_query(query)② 检索resultsclient.search(collection_namecollection_name,data[query_vector],limit3,output_fields[text,source,id])forresinresults[0]:print(res){id:0,distance:0.6388449668884277,entity:{id:0,text:LangChain 是一个用于构建 LLM 应用的开发框架。,source:demo}}{id:3,distance:0.31398770213127136,entity:{id:3,text:Docker Desktop 可以方便地在本地运行 Milvus Standalone。,source:demo}}{id:2,distance:0.2985413074493408,entity:{id:2,text:RAG 的核心是先检索相关知识再让大模型生成答案。,source:demo}}collections和数据操作一、Schema 和字段frompymilvusimportMilvusClient,DataType schemaMilvusClient.create_schema()a、主键和 AutoIdschema.add_field(field_namemy_id,datatypeDataType.INT64,is_primaryTrue,auto_idFalse,)schema.add_field(field_namemy_id,datatypeDataType.VARCHAR,is_primaryTrue,auto_idTrue,max_length512,)b、向量字段向量字段接受各种稀疏和密集向量嵌入。您可以向 Collections 添加最多四个向量字段。密集向量主要用于需要理解数据语义的场景如语义搜索和推荐系统。在语义搜索中密集向量有助于捕捉查询和文档之间的潜在联系提高搜索结果的相关性。在推荐系统中密集矢量有助于识别用户和项目之间的相似性从而提供更加个性化的建议。稠密向量可使用各种嵌入模型生成这些模型将原始数据转化为高维空间中的点捕捉数据的语义特征。密集向量通常表示为具有固定长度的浮点数数组如[0.2, 0.7, 0.1, 0.8, 0.3, …, 0.5] 。这些向量的维度通常从数百到数千不等如 128、256、768 或 1024。每个维度都能捕捉对象的特定语义特征通过相似性计算使其适用于各种场景。schema.add_field(field_namedense_vector,datatypeDataType.FLOAT_VECTOR,dim1024)为向量字段设置索引参数为了加速语义搜索必须为向量字段创建索引。索引可以大大提高大规模向量数据的检索效率。index_paramsclient.prepare_index_params()index_params.add_index(field_namedense_vector,index_namedense_vector_index,index_typeAUTOINDEX,metric_typeIP)client.create_collection(collection_namemy_collection,schemaschema,index_paramsindex_params)c、稀疏向量schema.add_field(field_namesparse_vector,datatypeDataType.SPARSE_FLOAT_VECTOR)schema.add_field(field_nametext,datatypeDataType.VARCHAR,max_length65535,index_paramsclient.prepare_index_params()index_params.add_index(field_namesparse_vector,index_namesparse_inverted_index,index_typeSPARSE_INVERTED_INDEX,metric_typeBM25,params{inverted_index_algo:DAAT_MAXSCORE},# or DAAT_WAND or TAAT_NAIVE)d、全文索引和搜索analyzer_params{tokenizer:jieba,filter:[cnalphanumonly]}analyzer_params{type:chinese,}analyzer_params{tokenizer:standard,filter:[lowercase,{type:stemmer,language:english},{type:stop,stop_words:_english_}]}现在定义一个将文本转换为稀疏向量表示的函数然后将其添加到 Schema 中bm25_functionFunction(nametext_bm25_emb,# Function nameinput_field_names[text],# Name of the VARCHAR field containing raw text dataoutput_field_names[sparse],# Name of the SPARSE_FLOAT_VECTOR field reserved to store generated embeddingsfunction_typeFunctionType.BM25,# Set to BM25)schema.add_function(bm25_function)e、标量字段schema.add_field(field_namemy_array,datatypeDataType.ARRAY,element_typeDataType.VARCHAR,max_capacity5,max_length512,)schema.add_field(field_namemy_json,datatypeDataType.JSON,)schema.add_field(field_namemy_bool,datatypeDataType.BOOL,)schema.add_field(field_namemy_int64,datatypeDataType.INT64,# Milvus 支持的数字类型有Int8,Int16,Int32,Int64,Float 和Double 。)schema.add_field(field_namemy_varchar,datatypeDataType.VARCHAR,# highlight-next-linemax_length512)f、可归零和默认值schema.add_field(field_nameage,datatypeDataType.INT64,nullableTrue)schema.add_field(field_nameage,datatypeDataType.INT64,default_value18)二、创建CollectionfrompymilvusimportMilvusClient,DataType,Function,FunctionType clientMilvusClient(urihttp://39.100.64.14:19530,userroot,passwordMilvus,# db_namedefault,)schemaclient.create_schema()schema.add_field(field_nameid,datatypeDataType.INT64,is_primaryTrue,auto_idTrue)schema.add_field(field_nametext,datatypeDataType.VARCHAR,max_length6000,enable_analyzerTrue,analyzer_params{tokenizer:jieba,filter:[cnalphanumonly]})schema.add_field(field_namecategory,datatypeDataType.VARCHAR,max_length1000,nullableTrue)schema.add_field(field_namefilename,datatypeDataType.VARCHAR,max_length1000,nullableTrue)schema.add_field(field_namefiletype,datatypeDataType.VARCHAR,max_length1000,nullableTrue)schema.add_field(field_nametitle,datatypeDataType.VARCHAR,max_length1000,nullableTrue)schema.add_field(field_namesparse,datatypeDataType.SPARSE_FLOAT_VECTOR)schema.add_field(field_namedense,datatypeDataType.FLOAT_VECTOR,dim1024)bm25_functionFunction(nametext_bm25_emb,# Function nameinput_field_names[text],# Name of the VARCHAR field containing raw text dataoutput_field_names[sparse],function_typeFunctionType.BM25,# Set to BM25)schema.add_function(bm25_function)index_paramsclient.prepare_index_params()index_params.add_index(field_namesparse,index_namesparse_inverted_index,index_typeSPARSE_INVERTED_INDEX,# Inverted index type for sparse vectorsmetric_typeBM25,params{inverted_index_algo:DAAT_MAXSCORE,bm25_k1:1.2,# 1.2 ~ 2.0 (1.2) 词频 (TF) 的饱和度: 高频词的贡献越大词频影响越线性饱和度增长越慢(通俗控制一个词出现多少次才算“多”)bm25_b:0.75# 0.0 ~ 1.0 (0.75) 文档长度归一化的强度 文档长度的影响越大对长文档的惩罚越强通俗控制“长篇大论”相对于“言简意赅”的劣势有多大旨在避免长文档仅仅因为包含更多词汇而在相似度计算中占据不公平的优势。},)index_params.add_index(field_namedense,index_namedense_inverted_index,index_typeAUTOINDEX,metric_typeIP)client.create_collection(collection_namet_doc_collection,schemaschema,index_paramsindex_params)# 查看集合信息resclient.describe_collection(collection_namet_doc_collection)print(res)# 加载 Collections 时Milvus 会将索引文件和所有字段的原始数据加载到内存中以便快速响应搜索和查询。# 在载入 Collections 后插入的实体会自动编入索引并载入。client.load_collection(collection_namet_doc_collection)resclient.get_load_state(collection_namet_doc_collection)print(res)# 释放当前不使用的 Collection。client.release_collection(collection_namet_doc_collection)resclient.get_load_state(collection_namet_doc_collection)print(res)# 删除集合# client.drop_collection(# collection_namet_doc_collection# )三、插入数据clientMilvusClient(urihttp://39.100.64.14:19530,userroot,passwordMilvus,# db_namedefault,)# 准备三条示例数据sample_data[{text:机器学习是人工智能的一个子领域它使计算机系统能够从数据中学习并改进而无需明确编程。常见的应用包括图像识别、自然语言处理和推荐系统。,category:人工智能,filename:ml_intro.pdf,filetype:PDF,title:机器学习基础},{text:Python是一种高级、解释型的通用编程语言。其设计哲学强调代码的可读性语法允许程序员用更少的代码行表达概念。Python支持多种编程范式包括结构化、面向对象和函数式编程。,category:编程语言,filename:python_guide.docx,filetype:Word,title:Python 语言特性},{text:区块链是一种分布式数据库用于维护持续增长的记录列表称为块。这些块使用加密技术链接和保护。区块链技术是比特币等加密货币的基础但也在供应链管理、数字身份等领域有应用。,category:信息技术,filename:blockchain_overview.txt,filetype:Text,title:区块链技术简介}]qwen3_embeddingSentenceTransformer(Qwen/Qwen3-Embedding-0.6B)# resp qwen3_embedding.encode(I like large language models.)# print(resp)# 为每条数据的 text 字段生成 dense 向量fordatainsample_data:data[dense]qwen3_embedding.encode(data[text])print(sample_data)# 插入数据insert_resultclient.insert(collection_namet_doc_collection,datasample_data)print(f成功插入{insert_result[insert_count]}条数据。)print(f生成的主键 IDs:{insert_result[ids]})

关于恒美微站

恒美微站专注于为个体商户、工作室提供极简自助建站服务,让每个人都能轻松拥有专业网站。

快速链接

  • 关于我们
  • 建站服务
  • 主题模板
  • 案例展示
  • 资讯中心

服务项目

  • 可视化建站
  • 拖拽编辑
  • 主题定制
  • SEO 优化
  • 网站托管

联系方式

  • 📍 地址:北京市朝阳区建国路 88 号
  • 📞 电话:400-888-8888
  • ✉️ 邮箱:info@hmyw.cn
  • 🕐 时间:周一至周日 9:00-18:00

© 2024 恒美微站 hmyw.cn 版权所有 | 京 ICP 备 12345678 号