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.
Suggerimento
È consigliabile usare le astrazioni di Vector Store anziché gli archivi di memoria legacy. Per altre informazioni su come usare le astrazioni di Vector Store iniziano qui.
Il kernel semantico fornisce un set di astrazioni dell'archivio memoria in cui l'interfaccia primaria è Microsoft.SemanticKernel.Memory.IMemoryStore.
Astrazioni dell'archivio di memoria e dell'archivio vettoriale
Nell'ambito di uno sforzo per evolvere ed espandere le funzionalità di archiviazione vettoriale e ricerca del kernel semantico, è stato rilasciato un nuovo set di astrazioni per sostituire le astrazioni dell'archivio memoria. Chiamiamo le astrazioni sostitutive "astrazioni Vector Store". Lo scopo di entrambi è simile, ma le relative interfacce differiscono e le astrazioni di Vector Store offrono funzionalità espanse.
| Caratteristica | Archivi di memoria precedenti | Archivi vettoriali |
|---|---|---|
| Interfaccia principale | IMemoryStore | VectorStore |
| Pacchetto NuGet astrazioni | Microsoft.SemanticKernel.Abstractions | Microsoft.Extensions.VectorData.Abstractions |
| Convenzione di denominazione | {Provider}MemoryStore, ad esempio RedisMemoryStore | {Provider}VectorStore, ad esempio RedisVectorStore |
| Supporta operazioni di upsert, ottenimento ed eliminazione dei record | Sì | Sì |
| Supporta la creazione e l'eliminazione di raccolte | Sì | Sì |
| Supporta la ricerca vettoriale | Sì | Sì |
| Supporta la scelta dell'indice di ricerca e della distanza del vettore preferito | NO | Sì |
| Supporta più vettori per record | NO | Sì |
| Supporta schemi personalizzati | NO | Sì |
| Supporta più tipi di vettore | NO | Sì |
| Supporta il pre-filtro dei metadati per la ricerca vettoriale | NO | Sì |
| Supporta la ricerca vettoriale nei database non vettoriali scaricando l'intero set di dati nel client ed eseguendo una ricerca vettoriale locale | Sì | NO |
Connettori disponibili per Memory Store
Kernel semantico offre diversi connettori di Memory Store per database vettoriali che puoi usare per memorizzare e recuperare informazioni. tra cui:
| Servizio | C# | Pitone |
|---|---|---|
| Database vettoriale in Azure Cosmos DB per NoSQL | C# | Pitone |
| Database vettoriale in Azure Cosmos DB for MongoDB basato su vCore | C# | Pitone |
| Ricerca di intelligenza artificiale di Azure | C# | Pitone |
| Server PostgreSQL di Azure | C# | |
| Database SQL di Azure | C# | |
| Cromia | C# | Pitone |
| DuckDB | C# | |
| Milvus | C# | Pitone |
| Ricerca vettoriale di MongoDB Atlas | C# | Pitone |
| Pigna | C# | Pitone |
| Postgres | C# | Pitone |
| Qdrant | C# | Pitone |
| Redis | C# | Pitone |
| SQLite | C# | |
| Weaviate | C# | Pitone |
Migrazione da archivi di memoria a archivi vettoriali
Se si vuole eseguire la migrazione dall'uso delle astrazioni dell'archivio memoria alle astrazioni dell'archivio vettoriali, è possibile eseguire questa operazione in diversi modi.
Usa la raccolta esistente con le astrazioni dell’archivio vettoriale
Il modo più semplice in molti casi potrebbe essere usare solo le astrazioni di Vector Store per accedere a una raccolta creata usando le astrazioni dell'archivio memoria. In molti casi è possibile, poiché l'astrazione dell'archivio vettoriale consente di scegliere lo schema che si vuole usare. Il requisito principale consiste nel creare un modello di dati che corrisponda allo schema usato dall'implementazione dell'archivio memoria legacy.
Ad esempio, per accedere a una raccolta creata dall'archivio di memoria di Ricerca intelligenza artificiale di Azure, è possibile usare il modello di dati vector store seguente.
using Microsoft.Extensions.VectorData;
class VectorStoreRecord
{
[VectorStoreKey]
public string Id { get; set; }
[VectorStoreData]
public string Description { get; set; }
[VectorStoreData]
public string Text { get; set; }
[VectorStoreData]
public bool IsReference { get; set; }
[VectorStoreData]
public string ExternalSourceName { get; set; }
[VectorStoreData]
public string AdditionalMetadata { get; set; }
[VectorStoreVector(VectorSize)]
public ReadOnlyMemory<float> Embedding { get; set; }
}
Suggerimento
Per esempi più dettagliati su come usare le astrazioni di Vector Store per accedere alle raccolte create con un archivio memoria, vedere qui.
Crea una nuova raccolta
In alcuni casi la migrazione a una nuova raccolta può essere preferibile rispetto all'uso diretto della raccolta esistente. Lo schema scelto dal Memory Store potrebbe non soddisfare le tue esigenze, soprattutto per quanto riguarda il filtraggio.
Ad esempio, l'archivio memoria Redis usa uno schema con tre campi:
- metadati della stringa
- timestamp lungo
- float[] incorporamento
Tutti i dati diversi dall'incorporamento o dal timestamp vengono archiviati come stringa JSON serializzata nel campo Metadati. Ciò significa che non è possibile indicizzare i singoli valori e filtrarli. Ad esempio, potresti voler filtrare usando ExternalSourceName, ma ciò non è possibile finché si trova all'interno di una stringa JSON.
In questo caso, potrebbe essere preferibile eseguire la migrazione dei dati a una nuova raccolta con uno schema flat. Qui sono disponibili due opzioni. È possibile creare una nuova raccolta dai dati di origine o semplicemente eseguire il mapping e copiare i dati dal vecchio al nuovo. La prima opzione può essere più costosa perché sarà necessario rigenerare gli incorporamenti dai dati di origine.
Suggerimento
Per un esempio che usa Redis che mostra come copiare dati da una raccolta creata usando le astrazioni dell'archivio memoria in un oggetto creato usando le astrazioni di Vector Store, vedere qui.