Поделиться через


Использование соединителя Volatile (in-Memory) (предварительная версия)

Предупреждение

Приложение C# VolatileVectorStore устарело и заменено новым пакетом. См. раздел "Соединитель InMemory"

Предупреждение

Функции хранилища векторов семантического ядра доступны в предварительной версии и улучшения, требующие критических изменений, могут по-прежнему возникать в ограниченных обстоятельствах перед выпуском.

Предупреждение

Функции хранилища векторов семантического ядра доступны в предварительной версии и улучшения, требующие критических изменений, могут по-прежнему возникать в ограниченных обстоятельствах перед выпуском.

Обзор

Соединитель Volatile Vector Store — это реализация векторного хранилища, предоставляемая семантической ядром, которая не использует внешнюю базу данных и сохраняет данные в памяти. Это векторное хранилище полезно для сценариев прототипа или для выполнения высокоскоростных операций в памяти.

Соединитель имеет следующие характеристики.

Область функций Поддержка
Коллекция сопоставляется с Словарь в памяти
Поддерживаемые типы свойств ключей Любой тип, который можно сравнить
Поддерживаемые типы свойств данных Любой тип
Поддерживаемые типы свойств вектора ReadOnlyMemory<float>
Поддерживаемые типы индексов Н/П
Поддерживаемые функции расстояния Н/П
Поддержка нескольких векторов в записи Да
Поддерживается IsFilterable? Да
Поддерживается Ли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();

Экземпляр Переменного векторного хранилища можно создать напрямую.

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 имеет простой дикт в качестве внутреннего механизма хранения, он может хранить любую модель данных, которую можно сериализовать в дикт.

Дополнительные сведения об этой концепции см. в документации по сериализации.

Начало работы

Добавьте последнюю версию API семантического ядра в проект Maven, добавьте в проект pom.xmlMaven следующую зависимость:

<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());