2.17. semantic kernel向量存储数据架构
Semantic Kernel 向量存储数据架
向量存储核心组件
在 Semantic Kernel 中,向量存储抽象包含三个主要组件:
向量存储(Vector Store):对应一个数据库实例。
集合(Collection):一组记录的集合,包括查询或筛选这些记录所需的索引。
记录(Record):数据库中的单个数据条目。
不同数据库中的集合
集合在不同数据库中的实现方式不同,取决于数据库如何组织和索引记录。 大多数数据库都具备“记录集合”的概念,与向量存储抽象中的集合天然映射,但底层数据库未必称为“集合(collection)”。
Semantic Kernel 向量存储与 Postgres 映射关系
Vector Store
整个向量存储,包含多个集合
数据库实例(如 postgres 或 mydb)
Collection
一组记录的集合,带有索引,可查询/过滤
表(Table)(如 Hotels、Profiles)
Record
集合中的单条数据,包含键、普通字段、向量字段
表中的一行(Row),字段对应列,向量字段对应 vector 列
数据模型
Semantic Kernel 的向量存储连接器采用模型优先(model first)方式与数据库交互。 插入或获取记录的方法依赖强类型模型类,属性通过特性(attributes)标注用途。
示例模型:
VectorStoreKey 特性
标识属性为实体主键。
StorageName(可选)为数据库列提供替代名称,属性名与字段名可不同。注意:并非所有连接器都支持该参数,部分场景可用
JsonPropertyNameAttribute替代。
VectorStoreData 特性
标识属性为普通数据字段(非主键、非向量)。
可选参数:
IsIndexed:是否建立索引,加速查询和筛选,默认
false。IsFullTextIndexed:是否建立全文索引,用于模糊或关键字搜索,默认
false,仅在数据库支持时有效。StorageName:数据库列替代名称,部分连接器支持。
VectorStoreVector 特性
标识属性包含向量。
示例:
参数说明:
Dimensions(必填):向量维度数,创建索引时必须指定。
IndexKind(可选):向量索引类型,默认值依赖具体实现。
DistanceFunction(可选):向量搜索时的相似度函数,如余弦相似度、欧氏距离等。
StorageName(可选):数据库列替代名称,部分连接器支持。
常见索引类型(IndexKind)和距离函数(DistanceFunction)由 Microsoft.SemanticKernel.Data.IndexKind 和 Microsoft.SemanticKernel.Data.DistanceFunction 提供静态值。
部分数据库支持特殊索引或距离函数,具体实现可能有额外类型。
拓展
Microsoft.SemanticKernel.Data.IndexKind 和 Microsoft.SemanticKernel.Data.DistanceFunction 说明如下:
IndexKind 类定义:
DistanceFunction类定义
总结
我们这节主要介绍了向量存储中的核心组件向量存储(Vector Store)和集合(Collection)和记录(Record) 以及数据模型中使用的特性作用,以及各个特性中有那些参数以及作用。
Last updated