ai
  • index
  • cursor
  • vector
  • crawl
  • crawl-front
  • DrissionPage
  • logging
  • mysql
  • pprint
  • sqlalchemy
  • contextmanager
  • dotenv
  • Flask
  • python
  • job
  • pdfplumber
  • python-docx
  • redbook
  • douyin
  • ffmpeg
  • json
  • numpy
  • opencv-python
  • pypinyin
  • re
  • requests
  • subprocess
  • time
  • uuid
  • watermark
  • milvus
  • pymilvus
  • search
  • Blueprint
  • flash
  • Jinja2
  • secure_filename
  • url_for
  • Werkzeug
  • chroma
  • HNSW
  • pillow
  • pandas
  • beautifulsoup4
  • langchain-community
  • langchain-core
  • langchain
  • langchain_unstructured
  • libreoffice
  • lxml
  • openpyxl
  • pymupdf
  • python-pptx
  • RAGFlow
  • tabulate
  • sentence_transformers
  • jsonl
  • collections
  • jieba
  • rag_optimize
  • rag
  • rank_bm25
  • Hugging_Face
  • modelscope
  • all-MiniLM-L6-v2
  • ollama
  • rag_measure
  • ragas
  • ASGI
  • FastAPI
  • FastChat
  • Jupyter
  • PyTorch
  • serper
  • uvicorn
  • markdownify
  • NormalizedLevenshtein
  • raq-action
  • CrossEncoder
  • Bi-Encoder
  • neo4j
  • neo4j4python
  • matplotlib
  • Plotly
  • Streamlit
  • py2neo
  • abc
  • read_csv
  • neo4jinstall
  • APOC
  • neo4jproject
  • uv
  • GDS
  • heapq
  • 参考
  • 1.向量
  • 2.向量嵌入(Embeddings)
  • 3.向量数据库
  • 4. milvus
  • 5. 安装milvus
    • 5.1 启动命令
    • 5.2 docker-compose.yml
    • 5.3 配置docker镜像
  • 6.Attu
    • 6.1 启动Attu
    • 6.2 创建集合
      • 6.2.1 字段类型
      • 6.2.2 标量选项
      • 6.2.3 其它选项
    • 6.3.schema
    • 6.4.数据
    • 6.5.向量搜索
    • 6.6.分区
    • 6.7.数据段
    • 6.8.属性
  • 7.pymilvus

参考 #

  • 度数与弧度
  • 正切函数
  • 反正切函数
  • BM25
  • IDF
  • Math.log
  • 归一化
  • 向量的归一化
  • cos

1.向量 #

向量(Vector)是一个同时具有大小和方向的量。与普通的数(标量)不同,向量不仅仅表示"有多少",还表示"往哪里"。

  • 一维向量
  • 二维向量
  • 三维向量

2.向量嵌入(Embeddings) #

向量嵌入(Embeddings)是一种把"文字、图片、声音"等信息,转换成一组数字(向量)的技术。这些数字可以用来表示信息的"含义"或"特征"。

  • Embeddings
  • fruit

3.向量数据库 #

向量数据库是一种专门用来存储、管理和检索向量数据(如文本、图片、音频等经过嵌入后的向量)的数据库。它能高效地找到"最相似"的内容,是AI时代的关键基础设施。

  • 向量数据库

4. milvus #

  • milvus官网
  • milvus Github
  • 什么是milvus

5. 安装milvus #

  • milvus安装
  • 下载https://github.com/milvus-io/milvus/releases/download/v2.4.15/milvus-standalone-docker-compose.ym并保存为docker-compose.yml

5.1 启动命令 #

# 启动Milvus服务(后台运行模式)
docker compose up -d
# 查看Milvus服务运行状态
docker compose ps

5.2 docker-compose.yml #

# Docker Compose 版本声明
version: '3.5'

# 定义服务
services:
  # etcd 服务 - 用于元数据存储和配置管理
  etcd:
    # 容器名称
    container_name: milvus-etcd
    # 使用的镜像
    image: quay.io/coreos/etcd:v3.5.5
    # 环境变量配置
    environment:
      # 自动压缩模式设置为修订版本
      - ETCD_AUTO_COMPACTION_MODE=revision
      # 自动压缩保留1000个修订版本
      - ETCD_AUTO_COMPACTION_RETENTION=1000
      # 后端存储配额设置为4GB
      - ETCD_QUOTA_BACKEND_BYTES=4294967296
      # 快照计数设置为50000
      - ETCD_SNAPSHOT_COUNT=50000
    # 数据卷挂载
    volumes:
      # 将本地etcd数据目录挂载到容器内
      - ${DOCKER_VOLUME_DIRECTORY:-.}/volumes/etcd:/etcd
    # 启动命令
    command: etcd -advertise-client-urls=http://127.0.0.1:2379 -listen-client-urls http://0.0.0.0:2379 --data-dir /etcd
    # 健康检查配置
    healthcheck:
      # 健康检查命令
      test: ["CMD", "etcdctl", "endpoint", "health"]
      # 检查间隔30秒
      interval: 30s
      # 超时时间20秒
      timeout: 20s
      # 重试次数3次
      retries: 3

  # MinIO 服务 - 用于对象存储
  minio:
    # 容器名称
    container_name: milvus-minio
    # 使用的镜像
    image: minio/minio:RELEASE.2023-03-20T20-16-18Z
    # 环境变量配置
    environment:
      # MinIO访问密钥
      MINIO_ACCESS_KEY: minioadmin
      # MinIO密钥
      MINIO_SECRET_KEY: minioadmin
    # 端口映射
    ports:
      # 控制台端口9001
      - "9001:9001"
      # API端口9000
      - "9000:9000"
    # 数据卷挂载
    volumes:
      # 将本地minio数据目录挂载到容器内
      - ${DOCKER_VOLUME_DIRECTORY:-.}/volumes/minio:/minio_data
    # 启动命令
    command: minio server /minio_data --console-address ":9001"
    # 健康检查配置
    healthcheck:
      # 健康检查命令
      test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"]
      # 检查间隔30秒
      interval: 30s
      # 超时时间20秒
      timeout: 20s
      # 重试次数3次
      retries: 3

  # Milvus 独立模式服务
  standalone:
    # 容器名称
    container_name: milvus-standalone
    # 使用的镜像
    image: milvusdb/milvus:v2.4.15
    # 启动命令
    command: ["milvus", "run", "standalone"]
    # 安全选项
    security_opt:
    # 禁用seccomp安全策略
    - seccomp:unconfined
    # 环境变量配置
    environment:
      # etcd服务端点
      ETCD_ENDPOINTS: etcd:2379
      # MinIO服务地址
      MINIO_ADDRESS: minio:9000
    # 数据卷挂载
    volumes:
      # 将本地milvus数据目录挂载到容器内
      - ${DOCKER_VOLUME_DIRECTORY:-.}/volumes/milvus:/var/lib/milvus
    # 健康检查配置
    healthcheck:
      # 健康检查命令
      test: ["CMD", "curl", "-f", "http://localhost:9091/healthz"]
      # 检查间隔30秒
      interval: 30s
      # 启动等待时间90秒
      start_period: 90s
      # 超时时间20秒
      timeout: 20s
      # 重试次数3次
      retries: 3
    # 端口映射
    ports:
      # Milvus服务端口19530
      - "19530:19530"
      # 健康检查端口9091
      - "9091:9091"
    # 依赖服务
    depends_on:
      # 依赖etcd服务
      - "etcd"
      # 依赖minio服务
      - "minio"

# 网络配置
networks:
  # 默认网络
  default:
    # 网络名称
    name: milvus

5.3 配置docker镜像 #

// Docker配置文件 - 用于配置Docker守护进程的行为
{
  // 构建器配置
  "builder": {
    // 垃圾回收配置
    "gc": {
      // 默认保留存储空间为20GB
      "defaultKeepStorage": "20GB",
      // 启用垃圾回收功能
      "enabled": true
    }
  },
  // 禁用实验性功能
  "experimental": false,
  // Docker镜像仓库镜像源配置
  "registry-mirrors": [
    // 阿里云镜像源
    "https://fwvjnv59.mirror.aliyuncs.com",
    // 道客云镜像源
    "https://docker.m.daocloud.io",
    // Huecker镜像源
    "https://huecker.io",
    // Timeweb镜像源
    "https://dockerhub.timeweb.cloud",
    // Noohub镜像源
    "https://noohub.ru"
  ]
}

6.Attu #

Attu 是 Milvus 官方推出的图形界面工具,让用户可以通过网页界面轻松管理和操作 Milvus 向量数据库,无需编写代码。

Attu

6.1 启动Attu #

docker run -d -p 8000:3000 -e MILVUS_URL=192.168.2.111:19530 zilliz/attu:v2.5
  • docker run 这是 Docker 的命令,用于启动一个新的容器。

    1. -p 8000:3000
      • -p 表示端口映射(Port Mapping)。
      • 8000:3000 表示将主机的 8000 端口映射到容器内部的 3000 端口。
      • 这样,访问 http://<主机IP>:8000 时,请求会被转发到容器内的 3000 端口。
    1. -e MILVUS_URL=192.168.2.111:19530
      • -e 表示设置环境变量(Environment Variable)。
      • MILVUS_URL=192.168.2.111:19530 告诉 Attu(Milvus 的管理界面)连接的 Milvus 服务地址是 192.168.2.111:19530。
      • 默认情况下,Milvus 的端口是 19530,所以这里指向的是 Milvus 服务。
    1. zilliz/attu:v2.5
      • 这是 Docker 镜像名称,由 Zilliz 提供,用于运行 Attu(Milvus 的 Web 管理界面)。
      • v2.5 是版本标签,表示使用的是 2.5 版本的 Attu。
    1. 访问地址 http://192.168.2.111:8000
      • 由于容器映射了主机的 8000 端口,所以访问 http://192.168.2.111:8000 可以进入 Attu 的 Web 界面。
      • 如果是在本机运行,也可以直接用 http://localhost:8000 访问。
  1. 启动一个 Attu(Milvus 管理界面) 容器。
  2. 将主机的 8000 端口映射到容器的 3000 端口(Attu 默认运行在 3000 端口)。
  3. 配置 Attu 连接到 Milvus 服务地址 192.168.2.111:19530。
  4. 访问 http://192.168.2.111:8000 即可使用 Attu 管理 Milvus

6.2 创建集合 #

6.2.1 字段类型 #

类型类别 类型名称 说明/用途
主键字段 INT64 64位整数,常用于自增ID、编号等唯一标识。
VARCHAR 可变长度字符串,适合用作唯一标识的文本(如用户名、邮箱等)。
向量字段 Binary Vector 二进制向量,常用于图像、音频等二进制特征的检索。
Float Vector 浮点型向量,最常见的AI特征向量类型(如文本、图片的嵌入向量)。
Float16 Vector 16位浮点向量,节省存储空间,适合大规模数据。
BFloat16 Vector 另一种16位浮点格式,兼容AI硬件加速。
Sparse Vector 稀疏向量,适合大部分元素为0的高维特征(如文本one-hot编码)。
BM25(Varchar) 文本字段,支持BM25等关键词检索算法。
标量字段 Int8 8位整数,节省空间,适合小范围数字。
Int16 16位整数。
Int32 32位整数。
Int64 64位整数。
Float 单精度浮点数。
Double 双精度浮点数,精度更高。
Boolean 布尔值,只有true/false。
VarChar 可变长度字符串,适合存储文本(如名字、描述等)。
JSON 存储结构化的JSON数据,适合灵活扩展字段。
Array 数组类型,可以存储一组同类型的值。
  • 主键字段:每个集合必须有一个主键,保证每条数据唯一。可以用数字(INT64)或字符串(VARCHAR)。
  • 向量字段:用于存储AI模型生成的特征向量,是Milvus支持“相似度检索”的核心。
    • 例如:图片特征用Float Vector,文本检索用BM25(Varchar)。
  • 标量字段:存储普通属性,如年龄(Int32)、价格(Float)、标签(VarChar)、扩展信息(JSON)等。

6.2.2 标量选项 #

  • 分词器
  • 启动匹配
  • 分区
  • 分区键
  • Nullable

6.2.3 其它选项 #

  • 一致性
  • 动态Schema
  • 集合状态

6.3.schema #

  • 副本
  • 索引类型
  • 倒排索引
  • Milvus向量相似度计算方式
  • 余弦相似度

6.4.数据 #

6.5.向量搜索 #

  • level
  • radius
  • range filter
  • topK
  • 分组
  • 过滤表达式
  • 探索

6.6.分区 #

  • 分区

6.7.数据段 #

  • 数据段

6.8.属性 #

  • 属性

7.pymilvus #

  • nlist

访问验证

请输入访问令牌

Token不正确,请重新输入