Milvus2.6安装和使用

Milvus2.0的部署 (Centos 7) 文章目录简介Milvus部署Docker 和 Docker Compose环境检查检查CPU 对 SIMD库扩展的支持安装单机版 官网地址 简介 Milvus 是一款开源的、针对海量特征向量的相似性搜索引擎。基于异构众核计算框架设计,成本更低,性能更好。 在有限的计算资源下,十亿向量搜索仅毫秒响应。 普遍用于图片搜索、智能问答、以商品搜商品等场景 Milvus部署 Docker 和 Docker Compose环境检查 Milvus是基于Docker部署的,你的Docker需要符合以下条件 Dock 阅读详情

Milvus2.6安装和使用

⚠️ 关注公众号 朋蛋、码上小明

1 Docker-compose安装

1.1 修改数据映射目录

⚠️ 可以不做:

将milvus-standalone-docker-compose.yml中的目录修改为特定目录,既将${DOCKER_VOLUME_DIRECTORY:-.}/volumes修改为/home/milvusvec。

${DOCKER_VOLUME_DIRECTORY:-.}表示获取操作系统的DOCKER_VOLUME_DIRECTORY环境变量,如果存在值,则直接替换,如果不存在值,则使用当前目录.(即milvus-standalone-docker-compose.yml所在的目录)。

1.2 修改端口号

根据实际情况可自行调整容器对外端口号,包括Minio和milvus。

1.3 设置账号和密码

⚠️不开启账号验证,就不需要做该操作。

方法1:修改映射参考(推荐)

在milvus-standalone-docker-compose.yml中修改配置参数。

environment:
    ETCD_ENDPOINTS: etcd:2379
    MINIO_ADDRESS: minio:9000
    MQ_TYPE: woodpecker
    # 启动权限
    # common.security.authorizationEnabled: true
    MILVUS_COMMON_SECURITY_AUTHORIZATIONENABLED: true
    # 设置管理员密码
    # common.security.defaultRootPassword: 123456
    MILVUS_COMMON_SECURITY_DEFAULTROOTPASSWORD: 123456

方法2:下载文件修改参数

下载文件

https://raw.githubusercontent.com/milvus-io/milvus/master/configs/milvus.yaml

修改文件

# 在1204行,件将authorizationEnabled: false,修改为如下:
authorizationEnabled: true

在Docker-compose通过目录映射

volumes:
  - ${DOCKER_VOLUME_DIRECTORY:-.}/volumes/etcd:/etcd
  - ${DOCKER_VOLUME_DIRECTORY:-.}/milvus.yaml:/milvus/configs/milvus.yaml

2 安装容器

2.1 下载docker-compose文件

下载milvus-standalone-docker-compose.yml文件

https://github.com/milvus-io/milvus/releases/download/v2.6.23/milvus-standalone-docker-compose.yml

执行命令如下

docker-compose -f milvus-standalone-docker-compose.yml up -d

执行结果

 ✔ Network milvus               Created			0.1s 
 ✔ Container milvus-minio       Started			0.3s 
 ✔ Container milvus-etcd        Started			0.3s 
 ✔ Container milvus-standalone  Started			0.0s 

2.2 修改账号和密码后的docker-compose文件

version: '3.5'

services:
  etcd:
    container_name: milvus-etcd
    image: quay.io/coreos/etcd:v3.5.25
    environment:
      - ETCD_AUTO_COMPACTION_MODE=revision
      - ETCD_AUTO_COMPACTION_RETENTION=1000
      - ETCD_QUOTA_BACKEND_BYTES=4294967296
      - ETCD_SNAPSHOT_COUNT=50000
    volumes:
      - /home/milvusvec/etcd:/etcd
    command: etcd -advertise-client-urls=http://etcd:2379 -listen-client-urls http://0.0.0.0:2379 --data-dir /etcd
    healthcheck:
      test: ["CMD", "etcdctl", "endpoint", "health"]
      interval: 30s
      timeout: 20s
      retries: 3

  minio:
    container_name: milvus-minio
    image: minio/minio:RELEASE.2024-12-18T13-15-44Z
    environment:
      MINIO_ACCESS_KEY: minioadmin
      MINIO_SECRET_KEY: minioadmin
    ports:
      - "9001:9001"
      - "9000:9000"
    volumes:
      - /home/milvusvec/minio:/minio_data
    command: minio server /minio_data --console-address ":9001"
    healthcheck:
      test: ["CMD", "mc", "ready", "local"]
      interval: 30s
      timeout: 20s
      retries: 3

  standalone:
    container_name: milvus-standalone
    image: milvusdb/milvus:v2.6.23
    command: ["milvus", "run", "standalone"]
    security_opt:
    - seccomp:unconfined
    environment:
      ETCD_ENDPOINTS: etcd:2379
      MINIO_ADDRESS: minio:9000
      MQ_TYPE: woodpecker
      # 启动权限
      # common.security.authorizationEnabled: true
      MILVUS_COMMON_SECURITY_AUTHORIZATIONENABLED: true
      # 设置管理员密码
      # common.security.defaultRootPassword: 123456
      MILVUS_COMMON_SECURITY_DEFAULTROOTPASSWORD: 123456

    volumes:
      - /home/milvusvec/milvus:/var/lib/milvus
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:9091/healthz"]
      interval: 30s
      start_period: 90s
      timeout: 20s
      retries: 3
    ports:
      - "19530:19530"
      - "9091:9091"
    depends_on:
      - "etcd"
      - "minio"

networks:
  default:
    name: milvus

⚠️ 高版本的Docker(版本24.0)已经将docker compose v2作为模型选项,因此,不需要下面的操作,如果没安装成功,请升级docker-compose为v2。

下载docker-compose的版本后,自行安装即可。

https://github.com/docker/compose/releases/download/v2.26.1/docker-compose-linux-x86_64

3 访问数据

3.1 使用Web UI查看数据

⚠️ 设置密码和权限后,可以访问Milvus Web UI页面,但是无法获取数据库、索引等信息,地址如下(需根据自己的IP地址调整):

http://192.168.108.128:9091/webui

在这里插入图片描述

3.2 使用Attu管理数据

⚠️其中参数可以不用要,-e MILVUS_ADDRESS=host.docker.internal:19530是 Docker 提供的一个特殊 DNS 名称,可访问到端口为19530的Milvus容器。建议:仅用于开发环境,不要用于生产环境。

docker run -itd \
--name milvus-attu \
-p 3000:3000 \
-v /home/milvusvec/attu:/data \
zilliz/attu:v2.6.5

访问地址

http://192.168.108.128:3000/

输入Milvus的地址、账号和密码,点击连接即可进入。

在这里插入图片描述

登录后

在这里插入图片描述

4 使用Python客户端访问

4.1 安装依赖

sentence-transformers用于计算向量

pip install pymilvus[model]==2.6.17 -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install sentence-transformers -i https://pypi.tuna.tsinghua.edu.cn/simple

4.2 使用Milvus

实现了中文关键词搜索、语义检索和混合检索三种方法。

from typing import List

from pymilvus import MilvusClient, DataType, Function, FunctionType, AnnSearchRequest, RRFRanker, WeightedRanker
from sentence_transformers import SentenceTransformer

from mydata import mock_data, VecData


def build_client(db_name: str = "default") -> MilvusClient:
    # 构建客户端
    client = MilvusClient(
        uri="http://192.168.108.128:19530",
        token="root:123456",
        db_name=db_name
    )
    return client


# 创建向量数据库
def build_vecdb(vecdb_name: str):
    # 设置客户端
    client = build_client()

    # 获取数据库列表
    db_list = client.list_databases()
    print(db_list)

    if vecdb_name in db_list:
        print("数据库已存在")
        return

    # 创建数据库
    client.create_database(
        db_name=vecdb_name
    )
    print("数据库创建成功")


# 创建向量集合
def build_vec_coll(vec_coll_name: str, vecdb_name: str="default"):
    # 设置客户端
    client = build_client(db_name=vecdb_name)

    # 查看集合是否存在
    is_exit = client.has_collection(collection_name=vec_coll_name)
    if is_exit:
        print("集合已存在")
        return

    # 查看集合列表
    coll_list = client.list_collections()
    print(coll_list)

    if vec_coll_name in coll_list:
        print("集合已存在")
        return

    # 创建schema
    schema = MilvusClient.create_schema(
        auto_id=False,
        enable_dynamic_field=True,
    )

    # (1) 设置结构类型
    # 1.1 整数类型,设置为主键
    schema.add_field(
        field_name="data_id",
        datatype=DataType.INT64,
        # 设置为主键
        is_primary=True,
        # # 自动编号,如果开启这个,自定义的编号会失效
        # auto_id=True
    )
    # 1.2 浮点向量类型
    schema.add_field(
        field_name="summary_vector",
        datatype=DataType.FLOAT_VECTOR,
        # 向量维度
        dim=384
    )

    # 1.3 字符串类型,设置全文搜索
    # 注意:文本不是英文的时候,需要设置分词器

    """
    # 当需要多种语言时
    # 设置多语言的language字段,同时,每条数据要添加语言字段:必须是:english,chinese,可根据自己的实际情况调整。
    multi_analyzer_params = {
        # 设置分词器
        "analyzers": {
            # 英文分词器,默认空格分词
            "english": {"type": "english"},
            # 中文分词器,默认jieba分词
            "chinese": {"type": "chinese"},
            # 默认,其他多语言分词器
            "default": {"tokenizer": "icu"}
        },
        # !!注意:这是下面的language字段
        # 根据语言动态调整分词器
        "by_field": "language",
        # 设置别名,非必须
        "alias": {
            # 中文简称
            "cn": "chinese",
            # 英文简称
            "en": "english"
        }
    }
    schema.add_field(
        # 设置中文语言
        field_name="language",
        datatype=DataType.VARCHAR,
        max_length=255
    )
    """

    # 我只有中文,因此此处设置为中文
    multi_analyzer_params = {
        "type": "chinese"
    }
    schema.add_field(
        field_name="summary",
        datatype=DataType.VARCHAR,
        max_length=512,
        # 开启分词,用于全文搜索
        enable_analyzer=True,
        # 设置分词器,如果不设置默认standard,表示按照空格和标点符号来确定词的边界。如下:
        # analyzer_params={
        #     "tokenizer": "standard"
        # }
        # 2.6+版本,可支持多语言分词,如果是英文,不需要设置
        analyzer_params= multi_analyzer_params
    )
    # 设置全文搜索关联的稀疏字段属性
    schema.add_field(field_name="summary_sparse_bm25", datatype=DataType.SPARSE_FLOAT_VECTOR)
    # 设置全文搜索的策略,以及关联的字段,将 "summary" 字段映射到 "summary_sparse_bm25" 字段
    bm25_function = Function(
        # 函数名称
        name="summary_sparse_bm25_func",
        # 目标字符串数据
        input_field_names=["summary"],
        # 映射的向量数据,用于存储将字符串转化的稀疏向量
        output_field_names=["summary_sparse_bm25"],
        # 函数类型
        function_type=FunctionType.BM25,
    )
    # 设置函数
    schema.add_function(bm25_function)

    # 1.4 设置JSON类型
    schema.add_field(field_name="metadata", datatype=DataType.JSON, nullable=True)

    # (2) 设置索引类型
    index_params = client.prepare_index_params()
    # 2.1 设置主键索引
    index_params.add_index(
        field_name="data_id",
        # AUTOINDEX表示系统会根据数据的内容,自动选择索引类型
        # 可根据自己的需求设置索引类型
        index_type="AUTOINDEX"
    )
    # 2.2 设置向量索引
    index_params.add_index(
        field_name="summary_vector",
        index_type="AUTOINDEX",
        metric_type="COSINE"
    )

    # 2.3 设置全文检索的稀疏向量的索引
    index_params.add_index(
        # 设置索引字段名称
        field_name="summary_sparse_bm25",
        # 设置索引字段
        index_type="SPARSE_INVERTED_INDEX",
        # 必须是BM25
        metric_type="BM25",
        params={
            "inverted_index_algo": "DAAT_MAXSCORE",
            "bm25_k1": 1.2,
            "bm25_b": 0.75
        }
    )

    # 创建集合
    client.create_collection(
        collection_name=vec_coll_name,
        schema=schema,
        index_params=index_params
    )

    # 获取集合状态
    res = client.get_load_state(
        collection_name=vec_coll_name
    )

    print(res)


def add_vec_data(vec_coll_name: str, vecdb_name: str="default"):

    # 生成向量
    model = SentenceTransformer(
        model_name_or_path="E:/model/all-MiniLM-L6-v2"
    )

    # 句子列表
    sentences = [item.summary for item in mock_data]

    # 注意:all-MiniLM-L6-v2的输出维度是384
    # 如果sentences是1维字符串列表,则sentence_embeddings输出的是2维向量列表,即1个字符串对应1个向量列表;
    # 如果sentences是1个字符串,则sentence_embeddings输出的是1维向量列表
    sentence_embeddings = model.encode(sentences)

    # 转化为字典列表
    mock_data_dict = []

    # 遍历数据
    for data_item, embedding in zip(mock_data, sentence_embeddings):
        # 转为对象
        data_item: VecData = data_item

        # 更新向量值
        data_item.summary_vector = embedding.tolist()

        # 转化为字典列表
        mock_data_dict.append(data_item.model_dump())

    # 设置客户端
    client = build_client(db_name=vecdb_name)
    # 添加到数据库中
    res = client.upsert(
        collection_name=vec_coll_name,
        data=mock_data_dict
    )

    print(res)
    print("添加数据成功")

    pass

# 语义检索
def query_vec(vec_coll_name: str, vecdb_name: str= "default"):
    # 设置客户端
    client = build_client(db_name=vecdb_name)

    # 生成向量
    model = SentenceTransformer(
        model_name_or_path="E:/model/all-MiniLM-L6-v2"
    )

    text = "计算机人工智能方向上发展迅速"
    text_embedding: List[List[float]] = model.encode(text).tolist()

    res = client.search(
        collection_name=vec_coll_name,
        anns_field="summary_vector",
        # 注意可以多向量检索
        data=[text_embedding],
        # 输出字段
        output_fields=["data_id", "summary", "metadata"],
        search_params={"metric_type": "COSINE"},
        limit=10
    )

    for hits in res:
        print("TopK results:")
        for hit in hits:
            print(hit)


# 关键词检索
def query_text(vec_coll_name: str, vecdb_name: str= "default"):
    # 设置客户端
    client = build_client(db_name=vecdb_name)

    text = "计算机"

    res = client.search(
        collection_name=vec_coll_name,
        # 注意,这是summary_sparse_bm25稀疏向量字段,不是summary文本字段
        anns_field="summary_sparse_bm25",
        data=[text],
        # 输出字段
        output_fields=["data_id", "summary", "metadata"],
        limit=10
    )

    for hits in res:
        print("TopK results:")
        for hit in hits:
            print(hit)


# 混合查询
def query_mix(vec_coll_name: str, vecdb_name: str= "default"):
    # 设置客户端
    client = build_client(db_name=vecdb_name)

    # 生成向量
    model = SentenceTransformer(
        model_name_or_path="E:/model/all-MiniLM-L6-v2"
    )

    text = "计算机人工智能方向上发展迅速"
    text_embedding: List[List[float]] = model.encode(text).tolist()

    # 设置输出的数量
    out_num = 10

    # 1 设置查询请求
    # 语义稠密检索
    search_param_vec = {
        "data": [text_embedding],
        "anns_field": "summary_vector",
        "param": {
            "metric_type": "COSINE",
            "params": {"nprobe": 10}
        },
        "limit": out_num
    }
    request_vec = AnnSearchRequest(**search_param_vec)
    # 上面结果等价于
    # request_vec = AnnSearchRequest(
    #     data=[text_embedding],
    #     anns_field="summary_vector",
    #     param={"metric_type": "COSINE", "params": {"nprobe": 10}},
    #     limit=2
    # )

    # 全文稀疏检索
    search_param_text = {
        "data": [text],
        # 注意,此处不是summary字段,是对应的稀疏字段
        "anns_field": "summary_sparse_bm25",
        "param": {
            "metric_type": "BM25"
        },
        "limit": out_num
    }
    request_text = AnnSearchRequest(**search_param_text)

    # 设置查询列表
    reqs = [request_vec, request_text]

    # 2 设置重排方法
    ranker = RRFRanker(k=60)

    # 加权权重 0.7 语义权重, 0.3 关键词权重
    # reranker = WeightedRanker(0.7, 0.3)

    res = client.hybrid_search(
        collection_name=vec_coll_name,
        reqs=reqs,
        ranker=ranker,
        # 输出字段
        output_fields=["data_id", "summary", "metadata"],
        limit=out_num
    )
    for hits in res:
        print("TopK results:")
        for hit in hits:
            print(hit)


if __name__ == '__main__':
    # build_vecdb("first_db")
    # build_vec_coll("first_coll")
    # add_vec_data("first_coll")
    print("关键词搜索")
    query_text("first_coll")

    print("语义检索")
    query_vec("first_coll")

    print("混合检索")
    query_mix("first_coll")

数据代码

from typing import List, Dict, Any
from pydantic import BaseModel


# 实体对象
class VecData(BaseModel):
    data_id: int = 0
    summary: str = ""
    summary_vector: List[float] = []
    metadata: Dict[str, Any] = {}

# 测试数据
mock_data: List[VecData] = [
    VecData(data_id=1, summary="人工智能正在深刻改变现代社会的生产方式,推动各行业向智能化和自动化方向加速转型升级。", metadata={"category": "科技", "author": "张三", "tags": ["AI", "自动化"], "source": "科技日报"}),
    VecData(data_id=2, summary="全球气候变暖导致极端天气频发,各国政府正紧急制定减排政策以应对日益严峻的生态危机。", metadata={"category": "环境", "author": "李四", "tags": ["气候", "环保"], "source": "自然杂志"}),
    VecData(data_id=3, summary="量子计算机在密码学领域取得重大突破,传统加密算法面临前所未有的安全挑战与重构需求。", metadata={"category": "科技", "author": "王五", "tags": ["量子计算", "安全"], "source": "IEEE"}),
    VecData(data_id=4, summary="新能源汽车销量持续攀升,充电基础设施建设成为制约行业进一步发展的关键瓶颈与焦点。", metadata={"category": "汽车", "author": "赵六", "tags": ["新能源", "基建"], "source": "汽车之家"}),
    VecData(data_id=5, summary="远程办公模式逐渐常态化,企业管理者需要重新思考团队协作效率与员工心理健康的平衡。", metadata={"category": "职场", "author": "孙七", "tags": ["远程办公", "管理"], "source": "哈佛商业评论"}),
    VecData(data_id=6, summary="深海探测技术不断迭代,科学家在马里亚纳海沟发现了多种未知的极端环境微生物群落。", metadata={"category": "科学", "author": "周八", "tags": ["深海", "生物"], "source": "国家地理"}),
    VecData(data_id=7, summary="元宇宙概念虽然热度下降,但虚拟现实技术在工业培训和医疗康复领域的应用正稳步落地。", metadata={"category": "科技", "author": "吴九", "tags": ["VR", "元宇宙"], "source": "极客公园"}),
    VecData(data_id=8, summary="老龄化社会加速到来,社区养老服务体系的建设与专业护理人才的培养成为社会关注焦点。", metadata={"category": "社会", "author": "郑十", "tags": ["养老", "民生"], "source": "人民日报"}),
    VecData(data_id=9, summary="生成式人工智能在内容创作领域引发版权争议,法律界正积极探索数字时代知识产权保护新路径。", metadata={"category": "法律", "author": "冯十一", "tags": ["AI版权", "法律"], "source": "法制日报"}),
    VecData(data_id=10, summary="可控核聚变实验装置运行时间屡创新高,人类距离实现无限清洁能源的梦想又近了一步。", metadata={"category": "能源", "author": "陈十二", "tags": ["核聚变", "清洁能源"], "source": "科学美国人"}),
    VecData(data_id=11, summary="跨境电商平台竞争加剧,物流时效与售后服务体验成为决定消费者复购率的核心竞争力。", metadata={"category": "电商", "author": "褚十三", "tags": ["跨境", "物流"], "source": "亿邦动力"}),
    VecData(data_id=12, summary="脑机接口技术从实验室走向临床,瘫痪患者通过意念控制机械臂完成日常动作的成功率提升。", metadata={"category": "医疗", "author": "卫十四", "tags": ["脑机接口", "康复"], "source": "柳叶刀"}),
    VecData(data_id=13, summary="短视频平台算法推荐机制引发信息茧房担忧,用户主动获取多元信息的意识亟待加强培养。", metadata={"category": "传媒", "author": "蒋十五", "tags": ["算法", "短视频"], "source": "传媒观察"}),
    VecData(data_id=14, summary="固态电池技术研发取得阶段性进展,有望在未来五年内大幅提升电动汽车的续航里程与安全性。", metadata={"category": "汽车", "author": "沈十六", "tags": ["固态电池", "电动车"], "source": "电池中国"}),
    VecData(data_id=15, summary="城市地下综合管廊建设稳步推进,有效解决了马路拉链问题,提升了城市基础设施韧性。", metadata={"category": "城建", "author": "韩十七", "tags": ["管廊", "基建"], "source": "建设报"}),
    VecData(data_id=16, summary="合成生物学在医药制造领域展现巨大潜力,通过基因编辑微生物高效生产罕见病特效药物。", metadata={"category": "生物", "author": "杨十八", "tags": ["合成生物", "制药"], "source": "Nature Biotech"}),
    VecData(data_id=17, summary="数字人民币试点范围进一步扩大,在公共交通和零售场景中的支付便捷性得到消费者广泛认可。", metadata={"category": "金融", "author": "朱十九", "tags": ["数字货币", "支付"], "source": "金融时报"}),
    VecData(data_id=18, summary="太空旅游商业航班首飞成功,标志着普通民众进入太空的成本正在逐步降低,开启新纪元。", metadata={"category": "航天", "author": "秦二十", "tags": ["太空旅游", "商业航天"], "source": "航天报"}),
    VecData(data_id=19, summary="智慧农业利用无人机和物联网传感器精准施肥,大幅减少了化肥使用量并提高了农作物产量。", metadata={"category": "农业", "author": "尤二一", "tags": ["智慧农业", "物联网"], "source": "农民日报"}),
    VecData(data_id=20, summary="心理健康问题日益受到重视,企业开始将员工心理援助计划纳入标准福利体系以缓解职场压力。", metadata={"category": "职场", "author": "许二二", "tags": ["心理健康", "福利"], "source": "智联招聘"}),
    VecData(data_id=21, summary="6G通信技术研发全面启动,未来将实现空天地一体化网络覆盖,彻底消除全球通信盲区。", metadata={"category": "通信", "author": "何二三", "tags": ["6G", "通信"], "source": "通信世界"}),
    VecData(data_id=22, summary="海洋塑料污染治理取得初步成效,新型可降解材料的大规模应用有望从源头解决白色污染。", metadata={"category": "环保", "author": "吕二四", "tags": ["塑料污染", "新材料"], "source": "环保报"}),
    VecData(data_id=23, summary="自动驾驶出租车在特定区域开启全无人商业化运营,乘客体验平稳但极端路况处理能力仍需验证。", metadata={"category": "交通", "author": "施二五", "tags": ["自动驾驶", "Robotaxi"], "source": "交通报"}),
    VecData(data_id=24, summary="传统文化类节目创新表达方式,通过现代科技手段让文物活起来,深受年轻观众群体的喜爱。", metadata={"category": "文化", "author": "张二六", "tags": ["传统文化", "创新"], "source": "广电总局"}),
    VecData(data_id=25, summary="网络安全威胁呈现组织化趋势,关键信息基础设施的防护体系建设成为国家安全的重要防线。", metadata={"category": "安全", "author": "孔二七", "tags": ["网络安全", "基建"], "source": "安全内参"}),
    VecData(data_id=26, summary="基因编辑技术在农业育种中的应用引发伦理讨论,科学家呼吁建立严格的监管框架与评估标准。", metadata={"category": "伦理", "author": "曹二八", "tags": ["基因编辑", "伦理"], "source": "科学伦理"}),
    VecData(data_id=27, summary="柔性显示技术日趋成熟,折叠屏手机市场份额稳步增长,用户体验和耐用性得到显著改善。", metadata={"category": "消费电子", "author": "严二九", "tags": ["折叠屏", "柔性显示"], "source": "中关村在线"}),
    VecData(data_id=28, summary="碳中和目标倒逼高耗能产业转型,钢铁和水泥行业正积极探索氢能冶炼与碳捕集封存技术。", metadata={"category": "工业", "author": "华三零", "tags": ["碳中和", "转型"], "source": "经济日报"}),
    VecData(data_id=29, summary="在线教育平台从应试辅导转向素质教育,编程和人工智能启蒙课程成为家长新的投资热点。", metadata={"category": "教育", "author": "金三一", "tags": ["在线教育", "素质教育"], "source": "芥末堆"}),
    VecData(data_id=30, summary="微塑料在人体血液中被首次检出,环境科学界紧急呼吁开展大规模人群健康影响长期追踪研究。", metadata={"category": "健康", "author": "魏三二", "tags": ["微塑料", "健康"], "source": "环境与健康"}),
    VecData(data_id=31, summary="区块链技术在供应链金融中的应用有效解决了中小企业融资难问题,提升了资金流转透明度。", metadata={"category": "金融", "author": "陶三三", "tags": ["区块链", "供应链"], "source": "银行家"}),
    VecData(data_id=32, summary="外骨骼机器人开始进入民用市场,帮助老年人和体力劳动者减轻关节负担,提升生活质量。", metadata={"category": "机器人", "author": "姜三四", "tags": ["外骨骼", "助老"], "source": "机器人网"}),
    VecData(data_id=33, summary="虚拟偶像产业规模持续扩大,AI驱动的表情捕捉技术让虚拟主播的互动更加自然且富有情感。", metadata={"category": "娱乐", "author": "戚三五", "tags": ["虚拟偶像", "AI"], "source": "娱乐资本论"}),
    VecData(data_id=34, summary="城市交通大脑通过实时数据分析优化红绿灯配时,显著缓解了早晚高峰期的主干道拥堵状况。", metadata={"category": "智慧城市", "author": "谢三六", "tags": ["交通大脑", "治堵"], "source": "智慧城市"}),
    VecData(data_id=35, summary="植物基人造肉口感不断改良,但高昂的零售价格仍是阻碍其进入大众日常餐桌的主要障碍。", metadata={"category": "食品", "author": "邹三七", "tags": ["人造肉", "食品科技"], "source": "食品科学"}),
    VecData(data_id=36, summary="低轨卫星互联网星座组网加速,偏远地区和海上作业人员的宽带接入体验得到革命性提升。", metadata={"category": "通信", "author": "柏三八", "tags": ["卫星互联网", "低轨"], "source": "卫星应用"}),
    VecData(data_id=37, summary="睡眠经济崛起,各类智能监测设备和助眠产品层出不穷,但部分产品的实际功效缺乏临床验证。", metadata={"category": "消费", "author": "水三九", "tags": ["睡眠经济", "智能硬件"], "source": "消费日报"}),
    VecData(data_id=38, summary="干细胞疗法在脊髓损伤修复方面展现曙光,多中心临床试验数据表明部分患者恢复了部分知觉。", metadata={"category": "医疗", "author": "窦四零", "tags": ["干细胞", "脊髓损伤"], "source": "医学界"}),
    VecData(data_id=39, summary="电子竞技正式成为亚运会比赛项目,职业选手的培养体系和退役保障机制正逐步走向规范化。", metadata={"category": "体育", "author": "章四一", "tags": ["电竞", "亚运会"], "source": "体坛周报"}),
    VecData(data_id=40, summary="碳交易市场活跃度提升,企业通过出售减排配额获得额外收益,绿色金融体系日益完善。", metadata={"category": "金融", "author": "云四二", "tags": ["碳交易", "绿色金融"], "source": "证券时报"}),
    VecData(data_id=41, summary="3D打印建筑技术在实际项目中落地,建造时间大幅缩短且建筑垃圾显著减少,前景广阔。", metadata={"category": "建筑", "author": "苏四三", "tags": ["3D打印", "绿色建筑"], "source": "建筑学报"}),
    VecData(data_id=42, summary="隐私计算技术在数据要素流通中发挥关键作用,实现了数据可用不可见,保障了用户信息安全。", metadata={"category": "数据安全", "author": "潘四四", "tags": ["隐私计算", "数据要素"], "source": "数据观"}),
    VecData(data_id=43, summary="宠物智能硬件市场爆发,自动喂食器和健康监测项圈帮助主人更好地照顾独居宠物的日常生活。", metadata={"category": "宠物", "author": "葛四五", "tags": ["宠物智能", "硬件"], "source": "宠物行业"}),
    VecData(data_id=44, summary="氢能重卡在港口和矿区开始规模化示范运营,加氢站网络布局成为制约其普及的关键因素。", metadata={"category": "物流", "author": "董四六", "tags": ["氢能重卡", "物流"], "source": "物流时代"}),
    VecData(data_id=45, summary="非遗传承人利用短视频平台直播带货,传统手工艺品找到了新的销售渠道和年轻受众群体。", metadata={"category": "文化", "author": "萧四七", "tags": ["非遗", "直播"], "source": "文旅中国"}),
    VecData(data_id=46, summary="类脑芯片研发取得进展,其低功耗和高并行计算特性为边缘人工智能设备提供了新的算力选择。", metadata={"category": "芯片", "author": "程四八", "tags": ["类脑芯片", "边缘计算"], "source": "半导体行业"}),
    VecData(data_id=47, summary="城市屋顶绿化项目推广,不仅有效缓解了城市热岛效应,还为市民提供了宝贵的休闲绿色空间。", metadata={"category": "城建", "author": "曹四九", "tags": ["屋顶绿化", "热岛效应"], "source": "园林局"}),
    VecData(data_id=48, summary="个性化营养学兴起,基于肠道菌群检测的定制饮食方案受到健康追求者的青睐,但科学依据待考。", metadata={"category": "健康", "author": "袁五十", "tags": ["个性化营养", "肠道菌群"], "source": "健康报"}),
    VecData(data_id=49, summary="太空垃圾问题日益严峻,各国航天机构正联合研发主动碎片清除技术,以保障轨道资源安全。", metadata={"category": "航天", "author": "柳五一", "tags": ["太空垃圾", "轨道安全"], "source": "宇航学报"}),
    VecData(data_id=50, summary="大语言模型在代码生成领域表现卓越,程序员的工作效率显著提升,但代码审查责任仍归人类。", metadata={"category": "开发", "author": "史五二", "tags": ["大模型", "编程"], "source": "优快云"}),
]

4.3 截图

数据截图
在这里插入图片描述

执行结果截图

在这里插入图片描述

Centos 下milvus v2.6.3下载和安装全流程 本文详细介绍了在CentOS7.1云服务器上安装Milvus向量数据库的过程及遇到的问题。主要内容包括:1) 环境准备,包括操作系统、Docker和硬件要求;2) 通过pip安装docker-compose时遇到的依赖问题及解决方法;3) 下载并配置docker-compose.yml文件;4) 使用docker-compose构建容器。安装过程中遇到了依赖缺失问题,通过安装开发工具链、Python开发包等依赖项解决。最终成功构建了包含Milvus、ETCD、MinIO和Attu可视化界面的容器环境。 阅读详情

相关推荐

阿里云镜像库mirrors.aliyun.com无法访问Centos6源问题 以及 Docker安装官方Milvus2.0镜像太慢的解决

阿里云的开源镜像站地址: https://mirrors.aliyun.com/repo/ 在里面可以看到还有Centos-6.repo的repo包,但下载下来执行源更新会遇到问题后面的其它地址也一样会请求超时。mirrors.aliyun.com镜像中 http://mirrors.aliyun.com/centos/6/os/x86_64/repodata/repomd.xml: 这些地址都无法访问。

本博客记录了从2014年以来在工作学习中遇到的技术问题、解决方法以及部分个人人生经历、经验等内容。 1万+

Milvus 2.6 Data-in, Data-out,简化向量搜索

Data-in, Data-out功能暂时还没有官方的正式命名,在代码内使用时依托于 Milvus『Function』函数配置,该 Feature 提案可以在:#35856(https://github.com/milvus-io/milvus/issues/35856) 追踪。功能上,Data-in, Data-out允许用户不再需要预先计算向量结果,而是将各种 Embedding 和 Reranker 接口模型直接集成 Milvus 数据库内做自动化处理。最新的 Milvus 2.6 版本。

背着小书包一路追寻梦想 396

Milvus 实践(2) --- 2.4.x 安装,脚本分析,数据存储解析

MinIO主要用于存储Milvus中的实际数据,特别是向量数据和索引文件。MinIO提供了可扩展的分布式对象存储解决方案,能够高效地处理大规模数据存储需求,确保数据的安全性和可靠性。看下面示例你会更加清楚。而rdb_data 更侧重于与milvus 内部之间的整合,这种整合是milvus 与 minio 之间的纽带,他更偏重milvus 的内部逻辑处理。看下示例你会更清楚。

talentyiyy的专栏 1162

官宣|Milvus 2.6正式开源:内存减少 72%,速度比ES快4倍

**好消息,Milvus 2.6于今日正式上线!**(目前是RC版,正式版预计在7月推出) 功能上,Milvus 2.6 延续并加强了 2.5 版本引入的**全文检索**功能,进一步强化了搜索功能,并整体**升级底层架构**以满足更严苛的性能、成本与规模需求。

m0_59235245的博客 1793

避坑指南:Quectel EC200A-CN在OpenWrt或嵌入式Linux下的RNDIS/ECM网络配置全解析

本文详细解析了Quectel EC200A-CN模块在OpenWrt或嵌入式Linux下的RNDIS/ECM网络配置,包括模式选择、内核配置、动态切换AT指令、网络接口生成与排错、路由与防火墙设置、性能调优及特殊场景应对策略,帮助开发者避免常见配置陷阱,提升网络稳定性和效率。

weixin_42531588的博客 287

STM32F4_LCD显示汉字

LCD显示汉字和显示图片、数字、字符的原理是一样的,都是将汉字、图片、数字以及字符转换点阵,进而通过函数扫描点阵在LCD上显示;

light_2025的博客 1万+

Milvus Week | Kafka 很好, Pulsar也不错,但WoodPecker才是未来

Milvus 架构的这一轮革新,不仅简化了整体系统设计,优化了成本结构,也提升了数据Freshness与故障恢复速度。Woodpecker 采用 “ZeroDisk” 架构,所有日志数据存储于云对象存储,元数据则由 etcd 等分布式 KV 系统管理,彻底消除了本地磁盘依赖,降低了运维压力,并提升了数据持久性和扩展能力。通过 Streaming Service,Milvus 实现了原生的数据订阅能力,移除冗余缓存、降低内存消耗、提升一致性读取的延迟表现,同时极大增强了系统的可扩展性与容灾能力。

ZILLIZ 1339

晶振(晶体振荡器)测试方法详解

晶振测试方法分为无源和有源两种类型。无源晶振(两脚)需用示波器测试波形,重点关注正弦波形状、200mV-1.5Vpp幅值和频率精度;有源晶振(四脚)通电后直接输出方波。测试要点包括:示波器使用10X探头、AC耦合,带宽需5倍于晶振频率;万用表可初筛短路/开路;替换法是工程最有效方法。常见故障排查顺序:供电→复位→焊接→型号→负载电容→波形观察→更换晶振→MCU配置。负载电容需按公式计算匹配,示波器观察是核心测试手段。

jiujiujinyuxi的博客 926

开源|Milvus2.6又有功能上新啦!Embedding Function、N-gram、decay ranker、field-level boosting、Highlighting解读

值越高(如 0.7)越平缓。Milvus 2.6 新增的 N-gram 索引,是基于倒排索引实现的高效检索技术,通过将字符串拆分为更小的重叠字符序列例如把 "coffee" 拆成 3-grams:cof、off、ffe、fee),实现子串、模糊、通配符风格的灵活匹配,彻底解决了子串检索性能差、模糊匹配能力弱的问题,大幅提升模糊查询、输入补全、模糊搜索、域名检索等场景的效率,无需全表扫描即可实现高速匹配。在时效、地理位置这类检索场景中,向量检索只能匹配语义相似度,无法对时间、距离等数值字段做加权排序。

ZILLIZ 705

ubuntu 24.04安装ros1 noetic

上面是参考链接给的修改内容。除了上面要修改的地方,我在编译的生活还有一个地方报错,修改成如下形式。因为我已经对文件rosconsole_log4cxx.cpp作了上面的修改,所有是不是188行不太确认了,如果报“log4cxx::spi::LocationInfo”问题,按照下面修改就可以了。我在编译时还报了一个问题,就是我之前安装的是jazzy。所以在编译时会报ros变量名不对,这时对变量名做修改就可以了。具体怎么修改,百度。a、将源文件中所有CMakelist中编译标准改为c++ 17.

yangpan011的博客 3205

AUTOSAR OS演示项目搭建与验证

请注意,以上代码只是一个简单的示例,用于说明AUTOSAR OS项目的搭建和验证过程。此外,AUTOSAR OS还提供了其他功能和API,如事件、消息队列和任务间通信等,可以根据实际需求进行使用。AUTOSAR OS是AUTOSAR架构中的一部分,它提供了一种可移植且可扩展的操作系统,用于管理嵌入式应用程序的任务和资源。通过以上步骤,我们成功搭建了一个基于AUTOSAR OS的演示项目,并验证了应用程序任务的执行顺序。3、打开app.c文件,并编写一个简单的应用程序,作为我们的示例任务。

weixin_50547796的博客 195

Milvus 2.6 架构快速上手

Milvus是一款开源的云原生向量数据库,专为AI向量存储和相似度检索设计。它采用分布式微服务架构,原生支持Kubernetes部署,通过组件化设计实现高可用和弹性扩展。核心架构包括Client SDK接入层、Proxy代理层、Coordinator协调层、Workers工作节点层(Streaming/Query/Data节点)和持久化存储层。Milvus 2.6优化了流批分离处理,简化了组件结构,支持多种搜索类型(ANN、过滤、范围等),并通过分层存储兼顾性能与成本。其分布式特性支持多shard写入扩展和

热爱数据库的小胖 585

【总目录】AUTOSAR精进之路专栏介绍及内容目录持续更新...

本专栏系统讲解AUTOSAR汽车电子开发技术,包含Eth/OS/Can/Lin等协议栈、MCAL驱动、功能安全等核心模块。内容基于实际项目经验,从概念原理到工程配置、特殊需求实现及问题排查进行深入剖析。重点涵盖TC3xx芯片平台开发、多核OS、网络管理、存储协议栈等难点问题,提供100+篇原创技术文章。专栏采用付费模式,保证内容完整性和持续更新,并提供专业答疑服务。适合汽车电子工程师系统学习AUTOSAR开发技术。

qq_36056498的博客 6509

在 Mac 上使用 Docker 安装 Milvus 2.6.2

本文介绍了在Mac上使用Docker安装Milvus 2.6.2向量数据库的完整步骤:首先创建目录并下载Docker Compose文件,然后启动包含Milvus、MinIO和Etcd的容器。接着详细说明了如何在SpringBoot项目中集成Milvus:添加Java SDK依赖、配置连接参数、创建配置类以及编写测试接口。通过这套方案,开发者可以快速搭建本地开发环境,并实现应用程序与Milvus向量数据库的交互。

weixin_41290863的博客 798

华为 MetaERP 通过元数据驱动的多组织架构 + 内部交易协同 + 自动对账引擎 + 合并规则引擎,实现多组织内部往来与合并报表的全流程自动抵消,核心是源头标准化、过程自动化、结果可追溯

摘要: 华为MetaERP通过元数据驱动的多组织架构与主数据标准化,实现内部往来与合并报表全流程自动化。其核心包括:统一组织模型与主数据(确保数据口径一致)、内部交易协同(自动生成对称凭证)、智能对账引擎(多维度自动匹配差异)、合并规则引擎(配置化抵消模板)。依托GaussDB高性能数据库与流批一体架构,华为全球88家子公司合并报表效率提升400%,关账时间缩短至2小时,支持多准则、多币种自动抵消,审计全程可追溯。相比传统ERP,MetaERP在协同性、自动化与扩展性上优势显著,为跨国集团提供高效、准确的合

金牌架构师 264

Jetson agx Orin 适配Xenomai4

例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。

xiaoning132的专栏 465

milvus安装

官方建议,docker安装19.03或以上版本,docker-compose安装1.25.1或以上版本。实际测试时,docker18.09docker-compose1.24.1也可正常安装。但是还是建议安装官方推荐的版本。说明安装成功。

weixin_43102784的博客 1104

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

使用milvus不同版本(1.1.0和2.0.0)时如何import milvus

一、milvus1.1.0版本 milvus1.1.0版本时代码中import milvus时是这么写的 from milvus import Milvus, IndexType, MetricType 需要pip install pymilvus==1.1.0 二、milvus2.0.0版本 milvus2.0.0版本时代码中import milvus时是这么写的 from pymilvus import connections, FieldSchema, CollectionSchema

qq_29220369的博客 2764

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

windows安装milvus

在 Windows 上安装 Docker,最官方、最推荐的方式是使用 Docker Desktop。它提供图形界面,操作方便,且会与 WSL 2 深度集成以获得更好性能。在开始前,请确保你的电脑满足以下条件,否则安装可能失败:如何检查虚拟化是否已启用? 打开 任务管理器 -> 性能 标签页 -> 点击 CPU。在右侧信息中查看 “虚拟化” 状态是否为 “已启用”。如果显示“已禁用”,需要重启电脑进入BIOS设置开启。Docker Desktop 依赖 WSL 2 作为后端。请按以下步骤操作: 重启电脑,让

qq_15621951的博客 157

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

使用Milvus2.0时pip install pymilvus后无法import pymilvus的问题

原因:使用Milvus2.0版本时,对应的pymilvus版本已经是2.0.0rc5(或以上版本)了,不能使用pip install pymilvus安装低版本的pymilvus了。 解决方案: pip install pymilvus==2.0.0rc6 (rcN取决于自己的milvus版本) ...

qq_29220369的博客 4987

如何用 Milvus Operator 部署主备集群并配置 CDC 跨集群复制

Milvus 从 v2.6 开始支持 CDC(Change Data Capture),可以把一个集群的写入变更持续同步到另一个集群,从而搭建"一主一备"的容灾拓扑:主集群接受读写,备集群持续接收变更并可提供读流量,备集群在备角色下直接拒绝写入。本文按照 Milvus 仓库中的 [CDC Replication Quick Start](https://link.gitcode.com/i/811

gitblog_01135的博客 791

Milvus Lite向量数据库初体验

在 Windows 10 环境下安装 Milvus Lite,推荐使用官方提供的轻量级单机版 Docker 镜像,这是最稳定和官方推荐的方式。直接在 Windows 上原生安装 Milvus Lite(如通过 pip)通常用于开发测试,但生产级部署建议使用 Docker。‌:Milvus Lite 是单机版,适用于开发和测试。如需生产环境部署,建议使用 Linux 系统。安装过程中如遇端口冲突(19530、9091),请关闭占用端口的程序或修改映射端口。10GB+ 磁盘空间(用于存储向量和模型)

2501_91683456的博客 665

Milvus 2.6使用本地数据库报错缺milvus-lite的解决办法

简单说原因是Setuptools 82.0.0的问题,参考下面优快云的文章:“ModuleNotFoundError: No module named ‘pkg_resources‘复盘。提示需要安装milvus-lite,根据官网的文档安装后依然报错。根据官网文档安装最新版的Milvus 2.6.11。

qq_41848787的博客 82

Milvus 2.6 向量数据库搭建 RAG 知识库问答系统实战

在构建企业级知识库问答系统时,向量数据库是支撑检索增强生成(RAG)技术的核心基础设施。RAG 通过检索外部知识片段并注入大模型,有效缓解幻觉问题,实现对私有数据的低成本知识更新。向量数据库负责将文本转化为高维向量并执行相似度检索,其索引机制、标量过滤能力及分布式架构直接影响问答系统的召回质量与响应速度。Milvus 作为开源向量数据库,采用存储计算分离设计,支持 HNSW、IVF 等索引类型,可灵活应对百万级向量规模。本文从 RAG 流程中的数据链路切入,讲解 Milvus 2.6 Standalone

weixin_30383279的博客 348

Milvus可视化神器Attu实战:安装、功能与运维避坑指南

向量数据库在大规模数据管理中扮演着越来越重要的角色,但如何高效地查看数据、管理索引并排查查询问题,一直是实践中的痛点。对于常用的Milvus而言,传统命令行与脚本方式往往不够直观,而借助Attu这类可视化管理工具,可以极大提升日常运维效率。本文从向量数据库的基础操作切入,介绍Attu作为Milvus Web客户端的定位与原理,说明它如何通过图形化界面简化Collection管理、索引状态监测、数据预览及搜索验证。同时结合实际部署场景,如Milvus 2.6.8搭配外部MinIO时,如何利用Attu辅助检查数

weixin_29587015的博客 298

向量数据库Milvus的安装使用

向量数据库Milvus的安向量数据库Milvus的安装使用装使用

JAVA领域优质创作者,基于分片网络查询方法专利发明者。 455
上一篇: DeepSeek Harness介绍和简单使用
下一篇: Scrapling爬虫框架简单使用
MasonYyp
博客等级 码龄9年 301粉丝 297原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值