Partilhar via


Usando o conector In-Memory (Pré-visualização)

Aviso

A funcionalidade In-Memory Vetor Store está em versão preliminar, e melhorias que exigem alterações significativas podem ainda ocorrer em circunstâncias limitadas antes do lançamento.

Aviso

A funcionalidade "Semantic Kernel Vector Store" está em pré-visualização, e melhorias que exigem alterações drásticas ainda podem ocorrer em circunstâncias limitadas antes do lançamento.

Aviso

A funcionalidade "Semantic Kernel Vector Store" está em pré-visualização, e melhorias que exigem alterações drásticas 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
Mapeamento da coleção para Dicionário em 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
  • ReadOnlyMemory
  • Flutuador de incorporação<>
  • flutuar[]
Tipos de índice suportados Apartamento
Funções de distância suportadas
  • Similaridade do Cosseno
  • CosineDistância
  • DotProductSimilarity
  • Distância Euclidiana
Cláusulas de filtro suportadas
  • AnyTagEqualTo
  • EqualTo
Suporta vários vetores em um registro Sim
IsIndexed é suportado? Sim
"É suportado IsFullTextIndexed?" Sim
Está StorageName 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.
O HybridSearch é suportado? Não

Primeiros passos

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.Extensions.DependencyInjection;
using Microsoft.SemanticKernel;

// Using Kernel Builder.
var kernelBuilder = Kernel
    .CreateBuilder();
kernelBuilder.Services
    .AddInMemoryVectorStore();
using Microsoft.Extensions.DependencyInjection;
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 InMemoryCollection<string, Hotel>("skhotels");

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
Mapeamento da coleção para Dicionário em 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
  • Semelhança de cosseno
  • Distância de Cosseno
  • Semelhança do produto Dot
  • Distância Euclidiana
  • Distância Euclidiana Quadrada
  • Distância Manhattan
  • Distância Hamming
Suporta vários vetores em um registro Sim
Está is_filterable suportado? Sim
A funcionalidade "is_full_text_searchable" é suportada? Sim

Primeiros passos

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.in_memory import InMemoryVectorStore

vector_store = InMemoryVectorStore()
vector_collection = vector_store.get_collection(record_type=DataModel, collection_name="collection_name")

É possível construir uma referência direta a uma coleção nomeada.

from semantic_kernel.connectors.in_memory import InMemoryCollection

vector_collection = InMemoryCollection(record_type=DataModel, collection_name="collection_name")

Brevemente

Mais informações em breve.