Usando o conector na memória (visualização)
Aviso
A funcionalidade Semantic Kernel Vetor Store está em pré-visualização, e melhorias que exigem alterações de quebra ainda podem ocorrer em circunstâncias limitadas antes do lançamento.
Descrição geral
O conector In-Memory Vetor Store é uma implementação do Vetor Store fornecida pelo Semantic Kernel que não usa nenhum banco de dados externo e armazena dados na memória. Este Vetor Store é útil para cenários de prototipagem ou onde são necessárias operações de alta velocidade na memória.
O conector tem as seguintes características.
Área de funcionalidades | Suporte |
---|---|
Mapas da coleção para | Dicionário na memória |
Tipos de propriedade de chave suportados | Qualquer tipo que possa ser comparado |
Tipos de propriedade de dados suportados | Qualquer tipo |
Tipos de propriedade vetorial suportados | Float ReadOnlyMemory<> |
Tipos de índice suportados | Apartamento |
Funções de distância suportadas |
|
Cláusulas de filtro suportadas |
|
Suporta vários vetores em um registro | Sim |
IsFilterable suportado? | Sim |
IsFullTextSearchable suportado? | Sim |
StoragePropertyName suportado? | Não, como o armazenamento é na memória e, portanto, a reutilização de dados não é possível, a nomenclatura personalizada não é aplicável. |
Introdução
Adicione o pacote nuget do Semantic Kernel Core ao seu projeto.
dotnet add package Microsoft.SemanticKernel.Connectors.InMemory --prerelease
Você pode adicionar o armazenamento vetorial ao contêiner de injeção de dependência disponível no KernelBuilder
ou ao contêiner de IServiceCollection
injeção de dependência usando métodos de extensão fornecidos pelo Semantic Kernel.
using Microsoft.SemanticKernel;
// Using Kernel Builder.
var kernelBuilder = Kernel
.CreateBuilder()
.AddInMemoryVectorStore();
using Microsoft.SemanticKernel;
// Using IServiceCollection with ASP.NET Core.
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddInMemoryVectorStore();
Você pode construir uma instância do InMemory Vetor Store diretamente.
using Microsoft.SemanticKernel.Connectors.InMemory;
var vectorStore = new InMemoryVectorStore();
É possível construir uma referência direta a uma coleção nomeada.
using Microsoft.SemanticKernel.Connectors.InMemory;
var collection = new InMemoryVectorStoreRecordCollection<string, Hotel>("skhotels");
Pesquisa de propriedades Key e Vector
Por padrão, o conector In-Memory Vetor Store lerá os valores de chaves e vetores usando reflexão. As chaves e os vetores são assumidos como propriedades diretas no modelo de dados.
Se for necessário um modelo de dados que tenha uma estrutura onde chaves e vetores não são propriedades diretas do modelo de dados, é possível fornecer funções para ler os valores destes.
Ao usar isso, também é necessário fornecer um VectorStoreRecordDefinition
para que as informações sobre o tamanho da dimensão do vetor e a função de distância possam ser comunicadas ao armazenamento vetorial In-Memory.
var collection = new InMemoryVectorStoreRecordCollection<string, MyDataModel>(
"mydata",
new()
{
VectorStoreRecordDefinition = vectorStoreRecordDefinition,
KeyResolver = (record) => record.Key,
VectorResolver = (vectorName, record) => record.Vectors[vectorName]
});
private class MyDataModel
{
public string Key { get; set; }
public Dictionary<string, ReadOnlyMemory<float>> Vectors { get; set; }
}
Descrição geral
O conector In-Memory Vetor Store é uma implementação do Vetor Store fornecida pelo Semantic Kernel que não usa nenhum banco de dados externo e armazena dados na memória. Este Vetor Store é útil para cenários de prototipagem ou onde são necessárias operações de alta velocidade na memória.
O conector tem as seguintes características.
Área de funcionalidades | Suporte |
---|---|
Mapas da coleção para | Dicionário na memória |
Tipos de propriedade de chave suportados | Qualquer um que tenha permissão para ser uma chave de dicionário, consulte a documentação do Python para obter detalhes aqui |
Tipos de propriedade de dados suportados | Qualquer tipo |
Tipos de propriedade vetorial suportados | lista[float | int] | matriz numpy |
Tipos de índice suportados | Apartamento |
Funções de distância suportadas |
|
Suporta vários vetores em um registro | Sim |
Está is_filterable suportado? | Sim |
is_full_text_searchable suportado? | Sim |
Introdução
Adicione o pacote Semantic Kernel ao seu projeto.
pip install semantic-kernel
Você pode criar a loja e as coleções a partir daí, ou criar as coleções diretamente.
Nos trechos abaixo, supõe-se que você tenha uma classe de modelo de dados definida chamada 'DataModel'.
from semantic_kernel.connectors.memory.in_memory import InMemoryVectorStore
vector_store = InMemoryVectorStore()
vector_collection = vector_store.get_collection("collection_name", DataModel)
É possível construir uma referência direta a uma coleção nomeada.
from semantic_kernel.connectors.memory.in_memory import InMemoryCollection
vector_collection = InMemoryCollection("collection_name", DataModel)
Brevemente
Mais informações em breve.