知识库--Milvus

news/2025/3/28 8:23:13/

引言:

本教程由以下两部分构成:

  1. 代码示例:通过实际构建Milvus知识库的代码演示,提供 hands-on 的操作体验。

  2. 代码解析:详细解释代码的每一部分,帮助读者深入理解Milvus的工作原理和实现细节。

通过这两部分的有机结合,我们将对Milvus有更为深刻和全面的认识。

代码示例

python">###step1: 创建集合schema用来保存数据做准备
from pymilvus import (MilvusClient, DataType
)
client = MilvusClient(uri="http://localhost:19530",token="root:Milvus"
)
schema = MilvusClient.create_schema(auto_id=False,enable_dynamic_field=True,
)
schema.add_field(field_name="id", datatype=DataType.INT64, is_primary=True)
schema.add_field(field_name="text", datatype=DataType.VARCHAR, max_length=1000)
schema.add_field(field_name="sparse", datatype=DataType.SPARSE_FLOAT_VECTOR)
schema.add_field(field_name="dense", datatype=DataType.FLOAT_VECTOR, dim=5)
###step2:创建索引
from pymilvus import MilvusClient
index_params = client.prepare_index_params()
index_params.add_index(field_name="dense",index_name="dense_index",index_type="IVF_FLAT",metric_type="IP",params={"nlist": 128},
)
index_params.add_index(field_name="sparse",index_name="sparse_index",index_type="SPARSE_INVERTED_INDEX",  metric_type="IP", params={"inverted_index_algo": "DAAT_MAXSCORE"},  
)
###step3:创建collections
from pymilvus import MilvusClientclient.create_collection(collection_name="hybrid_search_collection",schema=schema,index_params=index_params
)
###step4:插入数据
from pymilvus import MilvusClientdata=[{"id": 0, "text": "Artificial intelligence was founded as an academic discipline in 1956.", "sparse":{9637: 0.30856525997853057, 4399: 0.19771651149001523, ...}, "dense": [0.3580376395471989, -0.6023495712049978, 0.18414012509913835, ...]},{"id": 1, "text": "Alan Turing was the first person to conduct substantial research in AI.", "sparse":{6959: 0.31025067641541815, 1729: 0.8265339135915016, ...}, "dense": [0.19886812562848388, 0.06023560599112088, 0.6976963061752597, ...]},{"id": 2, "text": "Born in Maida Vale, London, Turing was raised in southern England.", "sparse":{1220: 0.15303302147479103, 7335: 0.9436728846033107, ...}, "dense": [0.43742130801983836, -0.5597502546264526, 0.6457887650909682, ...]}res = client.insert(collection_name="hybrid_search_collection",data=data
)

解释代码

 概念阐释:Schema、Field、Collections、Index

以Excel表格为例,我们可以这样理解这些概念:

  • Collections:相当于一个完整的Excel工作簿,其中包含了多个工作表(如Sheet1、Sheet2等)。

  • Schema:类似于Excel中的一个特定工作表,假设为Sheet1。在此例中,Sheet1的名称由代码设定为“hybrid_search_collection”。

  • Field:代表工作表中的每一列。在上述代码中,Sheet1包含四列,每一列都规定了数据的类型,数据必须严格按照这些类型进行存储。

Index的含义

Index在系统中扮演着关键角色。Index的类型决定了Milvus在进行数据检索时所采用的算法。

  • 例如,近似最近邻(ANN)检索有多种算法可供选择,如IVF_FLAT和HNSW。代码中设置的Index类型将决定后续使用的具体算法。

  • 具体而言,IVF_FLAT或HNSW等Index类型会对数据进行类似于聚类的预处理,从而优化检索效率。在后续的检索模块中,我们将对ANN和KNN算法进行比较分析,将会有更直观的体现。

代码的整体逻辑

代码的前三步相当于创建一个Excel工作簿及其工作表,第四步则是将数据插入到相应的工作表中。


    http://www.ppmy.cn/news/1580917.html

    相关文章

    Milvus vs. ElasticSearch:向量库检索性能测试

    目录 1. 构建检索库2. 测试条件3. 测试结果4. 性能分析5. 结论 1. 构建检索库 构建通用场景库总计约2万张。构建车辆数据库总计约12万张。构建公共数据库,包括Flickr30k、COCO、nlvr2、vqa等数据集约43万张。 2. 测试条件 环境说明:分别单机部署Milvu…

    深兰科技获评“产学研用——共研体联盟”链主型企业称号

    3月18日下午,浦东新区工商联举办“金融服务助发展、法护民企促壮大”主题活动。活动期间,产学研用共研体联盟正式成立,深兰科技凭在人工智能产学研用方面所做出的创新和成绩,获评“产学研用--共研体联盟”链主型企业称号。 此次授…

    【NLP】 API在大语言模型中的应用

    大语言模型(Large Language Models,LLMs)通过API(应用程序接口)为开发者提供了便捷的调用方式,使其能够快速集成自然语言处理能力到各类应用中。以下是API在LLM中的核心应用场景及技术实现细节: 一、核心应…

    33-盛最多水的容器

    给定一个长度为 n 的整数数组 height 。有 n 条垂线,第 i 条线的两个端点是 (i, 0) 和 (i, height[i]) 。 找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。 返回容器可以储存的最大水量。 说明:你不能倾斜容器。 方法…

    电商项目Ts版本

    文章目录 项目地址一、环境安装1.1 配置作为导入1.2 文件目录 二、路由2.1 publicRoutes 项目地址 教程作者:教程地址: 代码仓库地址: 所用到的框架和插件: dbt airflow一、环境安装 1.1 配置作为导入 vite.config.ts impor…

    欢乐力扣:基本计算器

    文章目录 1、题目描述2、思路代码括号 1、题目描述 基本计算器。  给你一个字符串表达式 s ,请你实现一个基本计算器来计算并返回它的值。  注意:不允许使用任何将字符串作为数学表达式计算的内置函数,比如 eval() 。 2、思路 本人也不太会&#xff0c…

    详解如何通过Python的BeautifulSoup爬虫+NLP标签提取+Dijkstra规划路径和KMeans聚类分析帮助用户规划旅行路线

    系统模块: 数据采集模块(爬虫):负责从目标网站抓取地点数据(如名称、经纬度、描述等) 数据预处理模块(标签算法):对抓取到的地点数据进行清洗和分类。根据地点特征&…

    C语言经典代码练习题

    1.输入一个4位数&#xff1a;输出这个输的个位 十位 百位 千位 #include <stdio.h> int main(int argc, char const *argv[]) {int a;printf("输入一个&#xff14;位数&#xff1a;");scanf("%d",&a);printf("个位&#xff1a;%d\n"…