使用易失性(内存中)连接器(预览版)

警告

C# VolatileVectorStore 已过时,已替换为新包。 请参阅 InMemory 连接器

警告

语义内核向量存储功能处于预览状态,需要中断性变更的改进可能仍发生在发布前的有限情况下。

警告

语义内核向量存储功能处于预览状态,需要中断性变更的改进可能仍发生在发布前的有限情况下。

概述

Volatile Vector Store 连接器是由语义内核提供的矢量存储实现,它不使用外部数据库并将数据存储在内存中。 此矢量存储对于原型制作方案或需要高速内存中操作的情况非常有用。

连接器具有以下特征。

功能区域 支持
集合映射到 内存中字典
支持的键属性类型 可以比较的任何类型
支持的数据属性类型 任何类型
支持的向量属性类型 ReadOnlyMemory<float>
支持的索引类型 空值
支持的距离函数 空值
支持记录中的多个向量
是否支持Filterable?
是否支持FullTextSearchable?
支持 StoragePropertyName? 否,因为存储是易失性的,因此无法重复使用数据,因此自定义命名没有用处且不受支持。

入门

将语义内核核心 nuget 包添加到项目。

dotnet add package Microsoft.SemanticKernel.Core

可以使用语义内核提供的扩展方法将向量存储添加到可用的 KernelBuilder 依赖项注入容器或 IServiceCollection 依赖项注入容器。

using Microsoft.SemanticKernel;

// Using Kernel Builder.
var kernelBuilder = Kernel
    .CreateBuilder()
    .AddVolatileVectorStore();
using Microsoft.SemanticKernel;

// Using IServiceCollection with ASP.NET Core.
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddVolatileVectorStore();

可以直接构造 Volatile Vector Store 实例。

using Microsoft.SemanticKernel.Data;

var vectorStore = new VolatileVectorStore();

可以构造对命名集合的直接引用。

using Microsoft.SemanticKernel.Data;

var collection = new VolatileVectorStoreRecordCollection<string, Hotel>("skhotels");

入门

安装语义内核。

pip install semantic-kernel

然后,可以使用该类创建矢量存储实例 VolatileStore


from semantic_kernel.connectors.memory.volatile import VolatileStore

vector_store = VolatileStore()

也可以直接创建集合。

from semantic_kernel.connectors.memory.volatile import VolatileCollection

collection = VolatileCollection(collection_name="skhotels", data_model_type=Hotel)

序列化

由于 Volatile 连接器具有简单的听写作为内部存储机制,因此它可以存储可序列化为听写的任何数据模型。

有关此概念的更多详细信息,请参阅 序列化文档

入门

在 Maven 项目中包括最新版本的语义内核 API,将以下依赖项添加到以下 pom.xml依赖项:

<dependency>
    <groupId>com.microsoft.semantic-kernel</groupId>
    <artifactId>semantickernel-api</artifactId>
    <version>[LATEST]</version>
</dependency>

然后,可以使用该类创建矢量存储实例 VolatileVectorStore

import com.microsoft.semantickernel.data.VolatileVectorStore;
import com.microsoft.semantickernel.data.VolatileVectorStoreRecordCollection;
import com.microsoft.semantickernel.data.VolatileVectorStoreRecordCollectionOptions;

public class Main {
    public static void main(String[] args) {
        // Build an Azure AI Search Vector Store
        var vectorStore = new VolatileVectorStore();
    }
}

也可以直接创建集合。

var collection = new VolatileVectorStoreRecordCollection<>("skhotels",
        VolatileVectorStoreRecordCollectionOptions.<Hotel>builder()
                .withRecordClass(Hotel.class)
                .build());