Milvus:向量字段-二进制向量、稀疏向量与密集向量(六)

一、向量类型概念深度解析

1.1 什么是向量?

在机器学习和数据科学中,向量是用来表示对象特征的数字数组。每个维度代表一个特定的特征,向量值表示该特征的强度或重要性。

1.2 三种向量类型核心概念

密集向量(Dense Vector)

定义 :密集向量是由连续实数构成的数组,其中大部分或所有元素都包含有意义的非零值
核心特征

  • 高信息密度:每个维度都承载语义信息

  • 连续表示:值为连续的浮点数

  • 语义丰富:能够捕捉复杂的语义关系

  • 固定维度:通常为384、768、1024等固定长度
    直观理解

    想象一个学生的综合能力评估:
    [数学能力: 0.85, 语文能力: 0.92, 英语能力: 0.78, 逻辑思维: 0.88, ...]
    每个维度都有具体的能力分数,共同构成完整的能力画像。

典型示例:

复制代码
# BERT模型生成的文本向量(前8维示例)
dense_vector = [
    -0.013052909,  # 语义维度1
    0.020387933,   # 语义维度2  
    -0.007869,     # 语义维度3
    -0.11111383,   # 语义维度4
    -0.030188112,  # 语义维度5
    -0.0053388323, # 语义维度6
    0.0010654867,  # 语义维度7
    0.072027855,   # 语义维度8
    # ... 更多语义维度
]
稀疏向量(Sparse Vector)

定义 :稀疏向量是大部分元素为零,只有少数维度有非零值的高维向量。
核心特征

  • 低信息密度:大部分维度为零值

  • 关键词驱动:非零值对应重要特征或关键词

  • 高维度:通常有数万到数百万个维度

  • 高效存储:只存储非零值及其位置
    直观理解

    想象一个图书馆的书籍分类:
    {计算机类: 0.8, 文学类: 0, 历史类: 0, 数学类: 0.6, 物理类: 0, 艺术类: 0.3, ...}
    只记录实际存在的书籍类别,忽略不存在的类别。

典型示例:

复制代码
# 文档关键词的稀疏表示
sparse_vector = {
    27: 0.5,   # 维度27:"机器学习" - 权重0.5
    100: 0.3,  # 维度100:"算法" - 权重0.3
    5369: 0.6, # 维度5369:"深度学习" - 权重0.6
    # 其他数万个维度都为0,不存储
}
二进制向量(Binary Vector)

定义 :二进制向量是只包含0和1两种值的向量,是密集向量的二值化版本。
核心特征

  • 二值表示:每个维度只能是0或1

  • 极度压缩:存储空间大幅减少

  • 计算高效:使用位运算快速计算相似度

  • 信息简化:丢失部分精度信息
    直观理解

    想象一个简单的特征检查表:
    [有红色: 1, 有圆形: 0, 有纹理: 1, 是大尺寸: 0, 是金属: 1, ...]
    只记录特征是否存在,不记录强度或程度。

典型示例:

复制代码
# 图像感知哈希的二进制向量
binary_vector = [
    1, 0, 1, 1, 0, 0, 1, 0,  # 字节1:图像区块1的特征
    0, 1, 0, 1, 1, 0, 1, 1,  # 字节2:图像区块2的特征
    1, 1, 0, 0, 1, 0, 0, 1,  # 字节3:图像区块3的特征
    # ... 更多图像特征位
]

1.3 三种向量的关系与演进

信息密度与计算复杂度关系
复制代码
二进制向量 ←---→ 稀疏向量 ←---→ 密集向量
    ↓              ↓             ↓
效率最高      平衡效率精度     精度最高
存储最小        中等存储       存储最大
速度最快        中等速度       速度较慢
适用场景的思维模型

二进制向量 - "快速筛选"

  • 像超市的快速结账通道
  • 不求完美,但求快速找到大致匹配
  • 适合:初筛、去重、移动端
    稀疏向量 - "精确查找"
  • 像图书馆的目录检索系统
  • 基于明确的关键词和分类
  • 适合:文档检索、关键词搜索
    密集向量 - "智能理解"
  • 像经验丰富的专业顾问
  • 理解深层含义和复杂关系
  • 适合:语义搜索、智能推荐

二、二进制向量技术详解

2.1 二进制向量核心概念

什么是二进制向量?

二进制向量是将高维浮点向量转换为只包含0和1的二进制表示:

复制代码
# 二进制向量示例
binary_vector_8d = [1, 0, 1, 1, 0, 0, 1, 0]  # 8维二进制向量
binary_vector_16d = [1, 0, 0, 1, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 0]  # 16维
核心优势

|------|------------|---------------|
| 优势 | 说明 | 影响 |
| 存储效率 | 每个维度仅需1位 | 存储空间减少8-16倍 |
| 计算速度 | 使用位运算(XOR) | 计算速度提升10-100倍 |
| 资源友好 | 低内存占用 | 适合移动设备、嵌入式系统 |
| 实时性能 | 快速相似性计算 | 支持大规模实时推荐 |

2.2 二进制向量完整实践

创建二进制向量 Collection
python 复制代码
from pymilvus import MilvusClient, DataType

def create_binary_vector_collection():
    """创建二进制向量 Collection 完整示例"""
    
    client = MilvusClient(uri="http://localhost:19530")
    
    # 清理现有 Collection
    if client.has_collection("binary_vector_demo"):
        client.drop_collection("binary_vector_demo")
    
    # 创建 Schema
    schema = client.create_schema(
        auto_id=True,
        enable_dynamic_fields=True,
    )
    
    # 添加主键字段
    schema.add_field(
        field_name="pk", 
        datatype=DataType.VARCHAR, 
        is_primary=True, 
        max_length=100
    )
    
    # 添加二进制向量字段 - 注意:维度必须是8的倍数
    schema.add_field(
        field_name="binary_vector", 
        datatype=DataType.BINARY_VECTOR, 
        dim=128  # 128维,对应16字节
    )
    
    # 添加元数据字段
    schema.add_field(
        field_name="description", 
        datatype=DataType.VARCHAR, 
        max_length=500
    )
    
    # 配置索引参数
    index_params = client.prepare_index_params()
    index_params.add_index(
        field_name="binary_vector",
        index_name="binary_idx",
        index_type="BIN_IVF_FLAT",  # 二进制向量专用索引
        metric_type="HAMMING",      # 汉明距离
        params={"nlist": 1024}
    )
    
    # 创建 Collection
    client.create_collection(
        collection_name="binary_vector_demo",
        schema=schema,
        index_params=index_params
    )
    
    print("✅ 二进制向量 Collection 创建成功")
    return client

# 执行创建
binary_client = create_binary_vector_collection()
二进制向量数据转换与插入
python 复制代码
def binary_vector_utils():
    """二进制向量工具函数"""
    
    def bool_list_to_bytes(bool_list):
        """将布尔列表转换为字节数组"""
        if len(bool_list) % 8 != 0:
            raise ValueError("布尔列表长度必须是8的倍数")
        
        byte_array = bytearray(len(bool_list) // 8)
        for i, bit in enumerate(bool_list):
            if bit == 1:
                index = i // 8
                shift = i % 8
                byte_array[index] |= (1 << shift)
        return bytes(byte_array)
    
    def bytes_to_bool_list(byte_data, dim):
        """将字节数组转换回布尔列表"""
        bool_list = []
        for byte in byte_data:
            for i in range(8):
                bool_list.append((byte >> i) & 1)
        return bool_list[:dim]
    
    return bool_list_to_bytes, bytes_to_bool_list

# 使用工具函数
bool_to_bytes, bytes_to_bool = binary_vector_utils()

def insert_binary_data(client):
    """插入二进制向量数据"""
    
    # 生成示例二进制向量数据(128维)
    binary_data = [
        {
            "binary_vector": bool_to_bytes([1, 0, 0, 1, 1, 0, 1, 1] * 16),  # 128维
            "description": "科技类内容特征向量"
        },
        {
            "binary_vector": bool_to_bytes([0, 1, 0, 1, 0, 1, 0, 0] * 16),
            "description": "教育类内容特征向量"
        },
        {
            "binary_vector": bool_to_bytes([1, 1, 0, 0, 1, 0, 1, 0] * 16),
            "description": "娱乐类内容特征向量"
        }
    ]
    
    # 插入数据
    result = client.insert(
        collection_name="binary_vector_demo",
        data=binary_data
    )
    
    print(f"✅ 插入 {len(result['ids'])} 条二进制向量数据")
    return result

# 插入数据
insert_result = insert_binary_data(binary_client)
二进制向量搜索
python 复制代码
def binary_vector_search(client):
    """二进制向量相似性搜索"""
    
    # 准备查询向量
    query_bool = [1, 0, 0, 1, 1, 0, 1, 1] * 16  # 128维查询向量
    query_vector = bool_to_bytes(query_bool)
    
    # 搜索参数
    search_params = {
        "params": {"nprobe": 10}
    }
    
    # 执行搜索
    results = client.search(
        collection_name="binary_vector_demo",
        data=[query_vector],
        anns_field="binary_vector",
        search_params=search_params,
        limit=3,
        output_fields=["description"]
    )
    
    print("🔍 二进制向量搜索结果:")
    for i, hits in enumerate(results):
        print(f"查询 {i+1}:")
        for hit in hits:
            # 汉明距离越小表示越相似
            similarity = 1 - (hit['distance'] / 128)  # 转换为相似度分数
            print(f"  - ID: {hit['id']}, 汉明距离: {hit['distance']}, 相似度: {similarity:.3f}")
            print(f"    描述: {hit['entity']['description']}")
    
    return results

# 执行搜索
search_results = binary_vector_search(binary_client)

三、稀疏向量技术详解

3.1 稀疏向量核心概念

什么是稀疏向量?

稀疏向量是高维向量,其中大部分元素为零:

python 复制代码
# 稀疏向量表示示例
dense_vector = [0.0, 0.0, 0.2, 0.0, 0.0, 0.0, 0.0, 0.5, 0.0, 0.7]  # 稠密表示
sparse_vector = {2: 0.2, 7: 0.5, 9: 0.7}  # 稀疏表示 - 只存储非零值
稀疏向量生成方法

|------|----------------|-------------|
| 方法 | 技术 | 特点 |
| 传统统计 | TF-IDF, BM25 | 基于词频统计,精确匹配 |
| 神经稀疏 | SPLADE, DeepCT | 基于深度学习,语义增强 |

3.2 稀疏向量完整实践

创建稀疏向量 Collection
python 复制代码
def create_sparse_vector_collection():
    """创建稀疏向量 Collection"""
    
    client = MilvusClient(uri="http://localhost:19530")
    
    # 清理现有 Collection
    if client.has_collection("sparse_vector_demo"):
        client.drop_collection("sparse_vector_demo")
    
    # 创建 Schema
    schema = client.create_schema(
        auto_id=True,
        enable_dynamic_fields=True,
    )
    
    # 添加字段
    schema.add_field(
        field_name="pk", 
        datatype=DataType.VARCHAR, 
        is_primary=True, 
        max_length=100
    )
    
    schema.add_field(
        field_name="sparse_vector", 
        datatype=DataType.SPARSE_FLOAT_VECTOR  # 稀疏向量类型
    )
    
    schema.add_field(
        field_name="text", 
        datatype=DataType.VARCHAR, 
        max_length=65535
    )
    
    schema.add_field(
        field_name="category", 
        datatype=DataType.VARCHAR, 
        max_length=100
    )
    
    # 配置稀疏向量索引
    index_params = client.prepare_index_params()
    index_params.add_index(
        field_name="sparse_vector",
        index_name="sparse_idx",
        index_type="SPARSE_INVERTED_INDEX",
        metric_type="IP",  # 内积
        params={"inverted_index_algo": "DAAT_MAXSCORE"}
    )
    
    # 创建 Collection
    client.create_collection(
        collection_name="sparse_vector_demo",
        schema=schema,
        index_params=index_params
    )
    
    print("✅ 稀疏向量 Collection 创建成功")
    return client

# 执行创建
sparse_client = create_sparse_vector_collection()
稀疏向量数据插入
python 复制代码
def insert_sparse_data(client):
    """插入稀疏向量数据"""
    
    # 稀疏向量数据 - 使用字典表示
    sparse_data = [
        {
            "text": "机器学习深度学习自然语言处理",
            "sparse_vector": {
                1: 0.8,    # 机器学习
                5: 0.9,    # 深度学习  
                10: 0.7,   # 自然语言处理
                15: 0.3,   # 人工智能
                20: 0.1    # 算法
            },
            "category": "AI"
        },
        {
            "text": "数据库存储系统分布式计算",
            "sparse_vector": {
                2: 0.6,    # 数据库
                6: 0.8,    # 存储系统
                12: 0.9,   # 分布式计算
                18: 0.4,   # 大数据
                25: 0.2    # 云计算
            },
            "category": "数据库"
        },
        {
            "text": "网络安全加密算法隐私保护",
            "sparse_vector": {
                3: 0.7,    # 网络安全
                8: 0.8,    # 加密算法
                14: 0.6,   # 隐私保护
                22: 0.5,   # 信息安全
                30: 0.3    # 数据保护
            },
            "category": "安全"
        }
    ]
    
    # 插入数据
    result = client.insert(
        collection_name="sparse_vector_demo",
        data=sparse_data
    )
    
    print(f"✅ 插入 {len(result['ids'])} 条稀疏向量数据")
    return result

# 插入数据
sparse_insert_result = insert_sparse_data(sparse_client)
稀疏向量搜索
python 复制代码
def sparse_vector_search(client):
    """稀疏向量相似性搜索"""
    
    # 查询稀疏向量
    query_sparse = {
        1: 0.5,   # 机器学习
        5: 0.6,   # 深度学习
        10: 0.4   # 自然语言处理
    }
    
    # 搜索参数
    search_params = {
        "params": {"drop_ratio_search": 0.1}  # 丢弃比例,加速搜索
    }
    
    # 执行搜索
    results = client.search(
        collection_name="sparse_vector_demo",
        data=[query_sparse],
        anns_field="sparse_vector",
        search_params=search_params,
        limit=3,
        output_fields=["text", "category"]
    )
    
    print("🔍 稀疏向量搜索结果:")
    for i, hits in enumerate(results):
        print(f"查询 {i+1}:")
        for hit in hits:
            print(f"  - ID: {hit['id']}, 相似度: {hit['distance']:.4f}")
            print(f"    文本: {hit['entity']['text']}")
            print(f"    类别: {hit['entity']['category']}")
    
    return results

# 执行搜索
sparse_search_results = sparse_vector_search(sparse_client)

四、密集向量技术详解

4.1 密集向量核心概念

什么是密集向量?

密集向量是由实数组成的数组,大部分元素不为零:

python 复制代码
# 密集向量示例
dense_vector_4d = [0.1, 0.2, 0.3, 0.7]
dense_vector_768d = [-0.013, 0.020, -0.007, -0.111, ...]  # BERT输出
密集向量数据类型对比

|-----------------|-----|-------|---------|
| 数据类型 | 精度 | 存储 | 适用场景 |
| FLOAT_VECTOR | 32位 | 标准 | 高精度语义搜索 |
| FLOAT16_VECTOR | 16位 | 50%节省 | 推荐系统召回 |
| BFLOAT16_VECTOR | 16位 | 50%节省 | 大规模图像检索 |
| INT8_VECTOR | 8位 | 75%节省 | 量化模型推理 |

4.2 密集向量完整实践

创建密集向量 Collection
python 复制代码
def create_dense_vector_collection():
    """创建密集向量 Collection"""
    
    client = MilvusClient(uri="http://localhost:19530")
    
    # 清理现有 Collection
    if client.has_collection("dense_vector_demo"):
        client.drop_collection("dense_vector_demo")
    
    # 创建 Schema
    schema = client.create_schema(
        auto_id=True,
        enable_dynamic_fields=True,
    )
    
    # 添加字段
    schema.add_field(
        field_name="pk", 
        datatype=DataType.VARCHAR, 
        is_primary=True, 
        max_length=100
    )
    
    schema.add_field(
        field_name="dense_vector", 
        datatype=DataType.FLOAT_VECTOR, 
        dim=384  # 常用维度:384, 768, 1024
    )
    
    schema.add_field(
        field_name="content", 
        datatype=DataType.VARCHAR, 
        max_length=2000
    )
    
    schema.add_field(
        field_name="embedding_model", 
        datatype=DataType.VARCHAR, 
        max_length=100
    )
    
    # 配置索引
    index_params = client.prepare_index_params()
    index_params.add_index(
        field_name="dense_vector",
        index_name="dense_idx",
        index_type="AUTOINDEX",
        metric_type="COSINE"  # 余弦相似度
    )
    
    # 创建 Collection
    client.create_collection(
        collection_name="dense_vector_demo",
        schema=schema,
        index_params=index_params
    )
    
    print("✅ 密集向量 Collection 创建成功")
    return client

# 执行创建
dense_client = create_dense_vector_collection()
密集向量数据插入
python 复制代码
def insert_dense_data(client):
    """插入密集向量数据"""
    
    # 模拟不同嵌入模型生成的密集向量
    dense_data = [
        {
            "dense_vector": [0.1, 0.2, 0.3, 0.4] * 96,  # 384维
            "content": "人工智能是未来科技发展的重要方向",
            "embedding_model": "BERT-base"
        },
        {
            "dense_vector": [0.2, 0.3, 0.4, 0.5] * 96,
            "content": "机器学习算法在数据分析中广泛应用", 
            "embedding_model": "BERT-base"
        },
        {
            "dense_vector": [0.15, 0.25, 0.35, 0.45] * 96,
            "content": "深度学习模型需要大量计算资源",
            "embedding_model": "Sentence-BERT"
        }
    ]
    
    # 插入数据
    result = client.insert(
        collection_name="dense_vector_demo", 
        data=dense_data
    )
    
    print(f"✅ 插入 {len(result['ids'])} 条密集向量数据")
    return result

# 插入数据
dense_insert_result = insert_dense_data(dense_client)
密集向量搜索
python 复制代码
def dense_vector_search(client):
    """密集向量相似性搜索"""
    
    # 查询向量
    query_vector = [0.12, 0.22, 0.32, 0.42] * 96  # 384维查询向量
    
    # 搜索参数
    search_params = {
        "params": {"nprobe": 16}
    }
    
    # 执行搜索
    results = client.search(
        collection_name="dense_vector_demo",
        data=[query_vector],
        anns_field="dense_vector", 
        search_params=search_params,
        limit=3,
        output_fields=["content", "embedding_model"]
    )
    
    print("🔍 密集向量搜索结果:")
    for i, hits in enumerate(results):
        print(f"查询 {i+1}:")
        for hit in hits:
            print(f"  - ID: {hit['id']}, 相似度: {hit['distance']:.4f}")
            print(f"    内容: {hit['entity']['content']}")
            print(f"    模型: {hit['entity']['embedding_model']}")
    
    return results

# 执行搜索
dense_search_results = dense_vector_search(dense_client)

五、三种向量类型对比与应用场景

5.1 技术特性对比

|------|---------|-----------|-----------|
| 特性 | 二进制向量 | 稀疏向量 | 密集向量 |
| 数据表示 | 0/1二进制 | 键值对{索引:值} | 浮点数数组 |
| 存储效率 | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐ |
| 计算速度 | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐ |
| 语义理解 | ⭐⭐ | ⭐⭐⭐ | ⭐⭐⭐⭐⭐ |
| 精度损失 | 中-高 | 低-中 | 无-低 |
| 适用维度 | 中低维度 | 超高维度 | 中高维度 |
| 典型维度 | 64-512维 | 1万-100万维 | 384-1024维 |

5.2 应用场景详解

二进制向量应用场景

1. 图像去重与版权保护

  • 技术原理:使用感知哈希(pHash)算法生成图像指纹
  • 优势特点:快速计算图像相似性,高效识别重复或侵权内容
  • 典型应用
    • 社交媒体平台的内容去重
    • 数字版权管理(DRM)系统
  • 电商平台商品图片查重
    2. 移动端实时推荐
  • 技术原理:将浮点向量二值化,大幅减少模型大小
  • 优势特点:低内存占用,支持设备端实时推理
  • 典型应用
    • 移动APP的个性化内容推荐
    • 嵌入式设备的智能功能
  • 离线环境下的相似内容推荐
    3. 大规模检索系统
  • 技术原理:采用哈希学习技术,将高维数据映射到汉明空间
  • 优势特点:支持亿级数据量的毫秒级检索
  • 典型应用
    • 电商平台的商品检索
    • 视频平台的内容检索
    • 新闻资讯的相似文章推荐
稀疏向量应用场景

1. 关键词搜索与文档检索

  • 技术原理:基于BM25、TF-IDF等传统信息检索算法
  • 优势特点:精确的术语匹配,结果可解释性强
  • 典型应用
    • 企业知识库的文档检索
    • 学术论文检索系统
    • 站内搜索引擎

2. 专业领域精准匹配

  • 技术原理:使用SPLADE等神经稀疏嵌入模型
  • 优势特点:对专业术语和领域词汇有更好的理解
  • 典型应用
    • 法律案例和法条检索
    • 医疗文献查询系统
  • 专利检索与分析
    3. 电商搜索与商品推荐
  • 技术原理:基于商品属性和用户行为的稀疏表示
  • 优势特点:对商品属性进行精确匹配和筛选
  • 典型应用
    • 电商平台的商品搜索
    • 基于属性的商品推荐
    • 多维度商品筛选
密集向量应用场景

1. 深度语义搜索

  • 技术原理:使用BERT、Sentence-BERT等预训练语言模型
  • 优势特点:理解深层语义,支持同义词和上下文理解
  • 典型应用
    • 智能客服问答系统
    • 企业知识库语义搜索
  • 内容平台的智能推荐
    2. 个性化推荐系统
  • 技术原理:基于用户行为和内容的深度嵌入表示
  • 优势特点:能够捕捉用户的深层兴趣和偏好
  • 典型应用
    • 流媒体平台的内容推荐
    • 电商平台的个性化商品推荐
  • 社交网络的好友推荐
    3. 多模态检索与理解
  • 技术原理:采用CLIP、Multimodal BERT等跨模态模型
  • 优势特点:实现文本、图像、音频等多模态数据的统一表示
  • 典型应用
    • 以文搜图、以图搜文
    • 跨模态内容检索
    • 多媒体内容理解

5.3 混合使用策略

召回-排序两阶段策略
  • 第一阶段:快速召回
    • 使用二进制向量进行粗筛,快速从海量数据中召回候选集
    • 目标:覆盖尽可能多的相关结果,保证召回率
  • 第二阶段:精准排序
    • 使用密集向量对召回结果进行精细排序
    • 目标:提升结果的相关性和准确性
多路召回融合策略
  • 语义召回通路
    • 使用密集向量捕捉语义相似性
    • 覆盖语义相关但关键词不同的内容
  • 关键词召回通路
    • 使用稀疏向量进行精确关键词匹配
    • 确保重要关键词的精确命中
  • 去重召回通路
    • 使用二进制向量识别近似重复内容
    • 提升结果的多样性
渐进式检索策略
  • 第一层:二进制向量粗筛
    • 从全量数据中快速筛选出大致相关的内容
    • 减少后续处理的数据量
  • 第二层:稀疏向量精筛
    • 在粗筛结果基础上进行关键词精确匹配
    • 进一步提升结果质量
  • 第三层:密集向量重排
    • 对精筛结果进行语义重排序
    • 输出最终最优结果

六、选择指南与最佳实践

6.1 向量类型选择指南

基于数据规模的选择
  • 亿级以上数据量
    • 首选:二进制向量
    • 备选:稀疏向量 + 二进制向量混合
    • 理由:存储和计算效率是首要考虑因素
  • 千万级数据量
    • 推荐:稀疏向量 + 二进制向量组合
    • 可选:优化的密集向量方案
    • 理由:在精度和效率间取得平衡
  • 百万级数据量
    • 推荐:密集向量 + 稀疏向量组合
    • 可选:纯密集向量方案
    • 理由:可以追求更高的准确率
基于精度要求的选择
  • 高精度场景(>95%)
    • 首选:密集向量
    • 适用:语义搜索、智能问答、重要推荐
  • 中等精度场景(85%-95%)
    • 推荐:稀疏向量
    • 适用:文档检索、关键词搜索、商品匹配
  • 基础精度场景(70%-85%)
    • 推荐:二进制向量
    • 适用:内容去重、初步筛选、移动端应用
基于响应时间要求的选择
  • 毫秒级响应(<100ms)
    • 首选:二进制向量
    • 适用:实时推荐、交互式搜索
  • 百毫秒级响应(100-500ms)
    • 推荐:稀疏向量
    • 适用:一般搜索、批量处理
  • 秒级响应(>500ms)
    • 可选:密集向量
    • 适用:离线分析、深度挖掘
基于硬件资源的选择
  • 资源受限环境
    • 移动设备、嵌入式系统:二进制向量
    • 边缘计算节点:稀疏向量
    • 理由:低内存、低算力需求
  • 中等资源环境
    • 普通服务器:稀疏向量 + 二进制向量
    • 云服务器基础配置:密集向量(优化版)
  • 资源充足环境
    • GPU服务器:密集向量
    • 大规模集群:任意向量类型组合

6.2 性能指标参考

|-------|-------------|----------|---------|------|
| 向量类型 | QPS | 平均延迟 | 准确率范围 | 内存占用 |
| 二进制向量 | 10,000+ | | 70%-85% | 极低 |
| 稀疏向量 | 1,000-5,000 | 10-50ms | 85%-95% | 中等 |
| 密集向量 | 100-1,000 | 50-200ms | 95%-99% | 较高 |

相关推荐
寒秋丶6 小时前
Milvus:通过Docker安装Milvus向量数据库(一)
数据库·人工智能·docker·ai·ai编程·milvus·rag
材料科学研究6 小时前
深度学习PINN!从入门到精通!
python·深度学习·神经网络·pinn
CC大煊6 小时前
【cursor】常用使用技巧篇
ai编程
珊珊而川6 小时前
MAC-SQL 论文翻译
人工智能
闻缺陷则喜何志丹6 小时前
【超音速专利 CN118134841A】一种光伏产品缺陷检测AI深度学习算法
人工智能·深度学习·算法·专利·光伏·超音速
Coovally AI模型快速验证7 小时前
超越传统3D生成:OccScene实现感知与生成的跨任务共赢
人工智能·深度学习·机器学习·计算机视觉·3d·目标跟踪
AiTop1007 小时前
美团LongCat-Flash-Omni上线:5600亿参数实现音视频交互“零延迟”
人工智能·ai·aigc·音视频·交互
我想进大厂7 小时前
Python---数据容器(Set 集合)
开发语言·python
IT_陈寒7 小时前
Vite 5震撼发布!10个新特性让你的开发效率飙升200% 🚀
前端·人工智能·后端