2.17. semantic kernel向量存储数据架构

Semantic Kernel 向量存储数据架

向量存储核心组件

在 Semantic Kernel 中,向量存储抽象包含三个主要组件:

  • 向量存储(Vector Store):对应一个数据库实例。

  • 集合(Collection):一组记录的集合,包括查询或筛选这些记录所需的索引。

  • 记录(Record):数据库中的单个数据条目。


不同数据库中的集合

集合在不同数据库中的实现方式不同,取决于数据库如何组织和索引记录。 大多数数据库都具备“记录集合”的概念,与向量存储抽象中的集合天然映射,但底层数据库未必称为“集合(collection)”。


Semantic Kernel 向量存储与 Postgres 映射关系

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.IndexKindMicrosoft.SemanticKernel.Data.DistanceFunction 提供静态值。 部分数据库支持特殊索引或距离函数,具体实现可能有额外类型。

拓展

Microsoft.SemanticKernel.Data.IndexKindMicrosoft.SemanticKernel.Data.DistanceFunction 说明如下:

IndexKind 类定义:

DistanceFunction类定义

总结

我们这节主要介绍了向量存储中的核心组件向量存储(Vector Store)集合(Collection)记录(Record) 以及数据模型中使用的特性作用,以及各个特性中有那些参数以及作用。

Last updated