Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Návod
Místo starších úložišť paměti doporučujeme používat abstrakce vektorového úložiště. Další informace o tom, jak používat abstrakce vektorového úložiště, najdete zde.
Sémantické jádro poskytuje sadu abstrakcí pro úložiště paměti, kde je Microsoft.SemanticKernel.Memory.IMemoryStore primární rozhraní.
Abstrakce paměťového úložiště vs. vektorového úložiště
V rámci úsilí o rozvoj a rozšíření možností vektorového úložiště a vyhledávání sémantického jádra jsme vydali novou sadu abstrakcí, které nahradí abstrakce úložiště paměti. Nazýváme nahrazení abstrakce Vector Store abstrakce. Účel obou je podobný, ale jejich rozhraní se liší a abstrakce Vector Store poskytují rozšířené funkce.
| Charakteristika | Starší úložiště paměti | Vektorová úložiště |
|---|---|---|
| Hlavní rozhraní | IMemoryStore | VectorStore |
| Balíček NuGet pro abstrakce | Microsoft.SemanticKernel.Abstractions | Microsoft.Extensions.VectorData.Abstractions |
| Konvence vytváření názvů | {Provider}MemoryStore, např. RedisMemoryStore | {Provider}VectorStore, např. RedisVectorStore |
| Podporuje přidání a aktualizaci, získání a odstranění záznamu. | Ano | Ano |
| Podporuje vytváření a odstraňování kolekcí. | Ano | Ano |
| Podporuje vektorové vyhledávání. | Ano | Ano |
| Podporuje volbu preferovaného indexu hledání vektorů a funkce vzdálenosti. | Ne | Ano |
| Podporuje více vektorů na záznam. | Ne | Ano |
| Podporuje vlastní schémata. | Ne | Ano |
| Podporuje více typů vektorů. | Ne | Ano |
| Podporuje předběžné filtrování metadat pro vektorové vyhledávání. | Ne | Ano |
| Podporuje vektorové vyhledávání ne vektorových databází stažením celé datové sady do klienta a provedením místního vektorového vyhledávání. | Ano | Ne |
Dostupné konektory úložiště paměti
Sémantické jádro nabízí několik konektorů úložiště paměti pro vektorové databáze, které můžete použít k ukládání a načítání informací. Tady jsou některé z nich:
| Služba | C# | Python |
|---|---|---|
| Vector Database ve službě Azure Cosmos DB for NoSQL | C# | Python |
| Vektorová databáze ve vCore-based Azure Cosmos DB pro MongoDB | C# | Python |
| Azure AI Vyhledávač | C# | Python |
| Azure PostgreSQL Server | C# | |
| Azure SQL Database | C# | |
| Sytost barvy | C# | Python |
| DuckDB | C# | |
| Milvus | C# | Python |
| MongoDB Atlas Vector Search | C# | Python |
| Borová šiška | C# | Python |
| Postgres | C# | Python |
| Qdrant | C# | Python |
| Redis | C# | Python |
| Sqlite | C# | |
| Weaviate | C# | Python |
Migrace z paměťových úložišť do vektorových úložišť
Pokud chcete migrovat z abstrakcí úložiště paměti do abstrakcí vektorového úložiště, existují různé způsoby, jak to udělat.
Použijte existující kolekci s abstrakcemi vektorového úložiště
Nejjednodušším způsobem v mnoha případech může být pouze použití abstrakcí vektorového úložiště pro přístup k kolekci vytvořené pomocí abstrakcí úložiště paměti. V mnoha případech je to možné, protože abstrakce vektorového úložiště umožňuje zvolit schéma, které chcete použít. Hlavním požadavkem je vytvoření datového modelu, který odpovídá schématu použitému ve starší implementaci úložiště paměti.
Například pro přístup ke kolekci vytvořené úložištěm paměti Azure AI Search můžete použít následující datový model Vector Store.
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; }
}
Návod
Podrobnější příklady použití abstrakcí vektorového úložiště pro přístup ke kolekcím vytvořeným pomocí úložiště paměti najdete tady.
Vytvořit novou kolekci
V některých případech může být výhodnější migrovat do nové sbírky, než používat stávající sbírku přímo. Schéma zvolené úložištěm paměti nemusí odpovídat vašim požadavkům, zejména pokud jde o filtrování.
Například úložiště paměti Redis používá schéma se třemi poli:
- řetězcová metadata
- dlouhé časové razítko
- float[] zakotvení
Všechna data kromě vkládání nebo časového razítka jsou uložena jako serializovaný řetězec JSON v poli Metadata. To znamená, že není možné indexovat jednotlivé hodnoty a filtrovat je. Například možná budete chtít filtrovat pomocí ExternalSourceName, ale to není možné, když je uvnitř řetězce JSON.
V tomto případě může být lepší migrovat data do nové kolekce s plochým schématem. Tady jsou dvě možnosti. Můžete vytvořit novou kolekci ze zdrojových dat nebo jednoduše namapovat a zkopírovat data ze starého do nového. První možnost může být nákladnější, protože budete muset znovu vygenerovat vkládání ze zdrojových dat.
Návod
Příklad použití Redis ukazující, jak kopírovat data z kolekce vytvořené pomocí abstrakcí úložiště paměti do jednoho vytvořeného pomocí abstrakcí vektorového úložiště, viz zde.