当前位置: 首页 > article >正文

知识库--Milvus

引言:

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

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

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

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

代码示例

###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 MilvusClient

client.create_collection(
    collection_name="hybrid_search_collection",
    schema=schema,
    index_params=index_params
)
###step4:插入数据
from pymilvus import MilvusClient

data=[
    {"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工作簿及其工作表,第四步则是将数据插入到相应的工作表中。

    原文地址:https://blog.csdn.net/sccum/article/details/146344040
    本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.kler.cn/a/594181.html

    相关文章:

  1. WordPress靶场攻略
  2. php 要达到go的性能,应该如何优化php
  3. 【蓝桥杯python研究生组备赛】005 数学与简单DP
  4. 【CXX-Qt】2.1 构建系统
  5. Python 编程题 第十一节:选择排序、插入排序、删除字符、目标移动、尾部的0
  6. 如何通过 SQLyog 连接远程 MySQL 数据库?(附工具下载)
  7. pdf文件分页按需查看
  8. 【VolView】纯前端实现CT三维重建-CBCT
  9. 数据结构-----队列
  10. LM Studio、ollama本地部署运行多个AI
  11. 玩转物联网-4G模块如何快速将数据上传到巴法云(TCP篇)
  12. Java解析多层嵌套JSON数组并将数据存入数据库示例
  13. 软考中级-软件设计师 准备
  14. 【redis】AOF 的基本工作机制,顺序写入,文件同步,重写机制
  15. JAVA URL和URI差异对比
  16. 星型组网和路由器组网的区别
  17. UMA架构下的GPU 显存
  18. CSS 用于图片的样式属性
  19. 基于微信小程序的充电桩管理系统
  20. vector和list的区别是什么