Использование соединителя 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.xml
Maven следующую зависимость:
<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());