构建更智能的AI管道:类型化多维向量完全指南
CocoIndex现提供对类型化向量数据的强大灵活支持——从简单数值数组到深度嵌套的多维向量。该支持设计用于与高性能向量数据库的无缝集成,支持跨多种数据模态的高级索引、嵌入和检索工作流。
✅ 支持的Python向量类型
CocoIndex接受具有强类型保证的各种向量类型。注意CocoIndex会自动推断类型,因此在定义流时无需显式指定类型。仅在定义自定义函数时需要显式指定类型。
✅ 1. 一维向量
|
|
这些类型被解释为:
- 底层Python类型:
numpy.typing.NDArray[np.float32]或list[float] - 维度感知:与
Literal[N]使用时,明确强制执行维度大小
支持的数字类型:
- Python原生类型:
float,int - CocoIndex类型别名:
Float32,Float64,Int64(它们是Python原生类型的别名,但带有CocoIndex类型注释以指示确切位大小) - numpy数字类型:
numpy.float32,numpy.float64,numpy.int64
✅ 2. 二维向量(多向量)
|
|
这声明了一个包含两行3元素向量的向量。这些被视为多向量(例如,每个点有多个嵌入)。
- 底层Python类型:
numpy.typing.NDArray[np.float32, Literal[3, 2]]或嵌套list[list[float]] - 语义:适用于每个项目的嵌入集比较、多视图表示或批处理编码等场景
🧠 什么是多维向量?
多维向量就是元素本身也是向量的向量——本质上是矩阵或嵌套列表。在CocoIndex中,使用Vector[Vector[T, N], M]表示,意味着M个向量,每个维度为N。M和N是可选的——CocoIndex不要求它们固定,而某些目标有要求,例如导出到向量数据库的多向量需要具有固定的内部维度。
这个概念在深度学习和多模态应用中至关重要——例如:
- 图像可能表示为补丁级嵌入的集合
- 文档可以分解为段落级向量
- 用户会话可能是一系列行为向量
CocoIndex通过嵌套向量类型原生支持这些丰富表示,而不是将其扁平化。
🧭 多向量嵌入的使用场景
以下是多向量嵌入表现出色的场景:
🖼️ 1. 视觉:补丁嵌入
想象一个1024x1024图像由Vision Transformer(ViT)处理。ViT不是输出一个全局图像向量,而是每个补丁输出一个向量(例如8x8补丁→64个向量)。
使用案例:
|
|
- 196个补丁,每个具有768维嵌入
- 支持局部特征匹配和区域感知检索
📄 2. 文本:带段落的文档
长文档拆分为段落或句子:
|
|
- 10个段落向量,每个384维
- 比平均所有向量更好——保留上下文和结构
现在可以:
- 在文档的子部分中搜索
- 基于单个相关段落检索文档
- 实现分层搜索或重新排序
👤 3. 用户行为:会话或时间序列
每个用户会话可以视为一系列操作、点击或状态:
|
|
- 会话中的20个步骤,每个由16维向量表示
在以下领域有用:
- 电子商务:点击序列
- 金融:时间序列嵌入
- UX分析:多步骤交互
🧬 4. 科学与生物医学:多视图嵌入
分子或蛋白质可能具有多个构象、图或投影:
|
|
- 5种不同的视图或测量模态
- 不仅通过单个向量比较分子,而且跨其潜在空间比较
🔍 为什么不使用扁平向量?
可以将2x3多向量如[[1,2,3],[4,5,6]]扁平化为[1,2,3,4,5,6]——但会失去语义边界。
使用真正的多向量:
- 每个子向量保留其含义
- 可以在子向量级别进行匹配/查询
- 向量数据库可以跨多个嵌入评分,选择最佳匹配(例如,最接近的补丁、段落或步骤)
- 即使外部维度可变,内部向量也可以具有固定维度——这很常见,例如图像的补丁数量和文章的段落数量取决于特定数据
🧬 CocoIndex → 向量数据库类型映射
向量数据库是支持密集向量和多向量的流行向量数据库。CocoIndex将向量类型映射到向量数据库兼容格式如下:
| CocoIndex 类型 | 向量数据库类型 |
|---|---|
Vector[Float32, Literal[N]] |
密集向量 |
Vector[Vector[Float32, Literal[N]]] |
多向量 |
| 其他任何类型 | 存储为向量数据库JSON有效负载的一部分 |
向量数据库仅接受具有固定维度的向量。CocoIndex自动检测向量形状,并将不受支持或动态维度向量映射到有效负载中。
🧾 CocoIndex数据模型回顾
在CocoIndex中,数据结构化为行和字段:
- 行对应向量数据库点
- 字段可以:
- 是命名向量(如果符合向量数据库的向量约束)
- 是非符合类型的有效负载的一部分
这种混合方法提供了结构化元数据的灵活性和向量搜索的强大功能。
最终思考
通过支持深度类型化向量和多维嵌入的能力,CocoIndex为向量数据管道带来了结构和语义清晰度。无论是索引图像、文本、音频还是抽象图表示——类型系统确保了大规模兼容性、可调试性和正确性。