Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Avviso
La funzionalità In-Memory Vector Store è in anteprima e potrebbe subire miglioramenti che richiedono cambiamenti significativi in circostanze limitate prima del rilascio.
Avviso
La funzionalità di archiviazione vettoriale del kernel semantico è in anteprima e i miglioramenti che richiedono modifiche di rilievo possono ancora verificarsi in circostanze limitate prima del rilascio.
Avviso
La funzionalità di archiviazione vettoriale del kernel semantico è in anteprima e i miglioramenti che richiedono modifiche di rilievo possono ancora verificarsi in circostanze limitate prima del rilascio.
Panoramica
Il connettore Di archiviazione vettoriale in memoria è un'implementazione dell'archivio vettoriale fornita dal kernel semantico che non usa database esterno e archivia i dati in memoria. Questo archivio vettoriale è utile per gli scenari di creazione di prototipi o per le operazioni in memoria ad alta velocità.
Il connettore presenta le caratteristiche seguenti.
| Area funzionalità | Supporto tecnico |
|---|---|
| Mapping delle raccolte a | Dizionario in memoria |
| Tipi di proprietà chiave supportati | Qualsiasi tipo che può essere confrontato |
| Tipi di proprietà dati supportati | Qualsiasi tipo |
| Tipi di proprietà vector supportati |
|
| Tipi di indice supportati | Appartamento |
| Funzioni di distanza supportate |
|
| Clausole di filtro supportate |
|
| Supporta più vettori in un record | Sì |
| Il supporto di IsIndexed è presente? | Sì |
| È supportato IsFullTextIndexed? | Sì |
| "StorageName è supportato?" | No, poiché l'archiviazione è in memoria e il riutilizzo dei dati non è quindi possibile, la denominazione personalizzata non è applicabile. |
| "HybridSearch è supportato?" | NO |
Introduzione
Aggiungere il pacchetto NuGet Semantic Kernel Core al progetto.
dotnet add package Microsoft.SemanticKernel.Connectors.InMemory --prerelease
È possibile aggiungere l'archivio vettoriale al contenitore di inserimento delle dipendenze disponibile in KernelBuilder o al IServiceCollection contenitore di inserimento delle dipendenze usando i metodi di estensione forniti dal kernel semantico.
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();
È possibile costruire direttamente un'istanza dell'archivio vettoriale InMemory.
using Microsoft.SemanticKernel.Connectors.InMemory;
var vectorStore = new InMemoryVectorStore();
È possibile costruire un riferimento diretto a una raccolta denominata.
using Microsoft.SemanticKernel.Connectors.InMemory;
var collection = new InMemoryCollection<string, Hotel>("skhotels");
Panoramica
Avviso
L'archivio vettoriale In-Memory supporta filtri personalizzati che possono essere espressi come funzioni lambda Python, queste funzioni vengono eseguite nello stesso processo dell'applicazione principale e pertanto possono eseguire codice arbitrario. Vengono filtrate alcune operazioni consentite, ma non è consigliabile consentire l'impostazione dei filtri da origini non attendibili, inclusi gli input LLM. Per altri dettagli, vedere la sezione Filtro .
Il connettore Di archiviazione vettoriale in memoria è un'implementazione dell'archivio vettoriale fornita dal kernel semantico che non usa database esterno e archivia i dati in memoria. Questo archivio vettoriale è utile per gli scenari di creazione di prototipi o per le operazioni in memoria ad alta velocità.
Il connettore presenta le caratteristiche seguenti.
| Area funzionalità | Supporto tecnico |
|---|---|
| Mapping delle raccolte a | Dizionario in memoria |
| Tipi di proprietà chiave supportati | Qualsiasi elemento autorizzato a essere una chiave dict, vedere la documentazione di Python per informazioni dettagliate qui |
| Tipi di proprietà dati supportati | Qualsiasi tipo |
| Tipi di proprietà vector supportati | list[float | int] | array numpy |
| Tipi di indice supportati | Appartamento |
| Funzioni di distanza supportate |
|
| Supporta più vettori in un record | Sì |
| "È supportato is_filterable?" | Sì |
| La ricerca testuale completa è supportata? | Sì |
Introduzione
Aggiungere il pacchetto Semantic Kernel al progetto.
pip install semantic-kernel
È possibile creare il negozio e le raccolte da questa posizione o creare direttamente le raccolte.
Nei frammenti di codice seguenti si presuppone che sia stata definita una classe del modello di dati denominata "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")
È possibile costruire un riferimento diretto a una raccolta denominata.
from semantic_kernel.connectors.in_memory import InMemoryCollection
vector_collection = InMemoryCollection(record_type=DataModel, collection_name="collection_name")
Filtraggio
Avviso
L'archivio vettoriale In-Memory supporta filtri personalizzati che possono essere espressi come funzioni lambda Python, queste funzioni vengono eseguite nello stesso processo dell'applicazione principale e pertanto possono eseguire codice arbitrario. Vengono filtrate alcune operazioni consentite, ma non è consigliabile consentire l'impostazione dei filtri da origini non attendibili, inclusi gli input LLM.
Il connettore In-Memory usa un approccio allowlist per la sicurezza dei filtri. Nelle espressioni di filtro sono consentite solo le operazioni seguenti:
Operazioni consentite
| Categoria | Operazioni consentite |
|---|---|
| Comparisons |
==, !=, <, <=, >, >=, in, not in, is, is not |
| Operazioni booleane |
and, or, not |
| Accesso ai dati | Accesso agli attributi (ad esempio, x.field), accesso tramite indice (ad esempio, x['field']), slicing |
| valori letterali | Costanti, elenchi, tuple, insiemi, dizionari |
| Aritmetica di base |
+, -, *, /, %// |
Funzioni consentite
Le funzioni e i metodi predefiniti seguenti possono essere usati nelle espressioni di filtro:
-
Conversione dei tipi:
str,int,float,bool -
Aggregazione:
len,abs,minmax,sum, ,anyall -
Metodi stringa:
lower,upper,strip,startswith,endswith,contains -
Metodi di dizionario:
get,keys,values,items
Esempi
# Simple equality filter
results = await collection.search(vector, filter="lambda x: x.category == 'electronics'")
# Numeric comparison
results = await collection.search(vector, filter="lambda x: x.price < 100")
# Boolean combination
results = await collection.search(vector, filter="lambda x: x.in_stock and x.rating >= 4.0")
# String method
results = await collection.search(vector, filter="lambda x: x.name.startswith('A')")
# Membership test
results = await collection.search(vector, filter="lambda x: x.status in ['active', 'pending']")
Presto disponibile
Altre informazioni saranno presto disponibili.