Megosztás:


Örökölt szemantikus kernelmemóriatárolók

Tipp.

Javasoljuk, hogy a vektortár absztrakcióit használja az örökölt memóriatárolók helyett. A Vector Store absztrakcióinak használatáról itt olvashat bővebben.

A Szemantikus Kernel olyan memóriatár-absztrakciókat biztosít, ahol az elsődleges interfész .Microsoft.SemanticKernel.Memory.IMemoryStore

Memóriatároló és vektortár absztrakciói

A Szemantic Kernel vektoros tárolási és keresési képességeinek fejlesztése és bővítése érdekében egy új absztrakciókészletet adtunk ki a Memóriatár absztrakcióinak helyére. A helyettesítő absztrakciókat Vector Store-absztrakcióknak hívjuk. Mindkettő célja hasonló, de a felületük különbözik, és a Vektortár absztrakciói kiterjesztett funkcionalitást biztosítanak.

Jellemző Régi memóriatárolók Vektortárolók
Fő felület IMemoryStore VectorStore
Absztrakciók NuGet csomag Microsoft.SemanticKernel.Abstractions Microsoft.Extensions.VectorData.Absztrakciók
Elnevezési egyezmény {Provider}MemoryStore, például RedisMemoryStore {Provider}VectorStore, például RedisVectorStore
Támogatja a rekordok felülírását, lekérdezését és törlését Igen Igen
Támogatja a gyűjtemény létrehozását és törlését Igen Igen
Támogatja a vektorkeresést Igen Igen
Támogatja az előnyben részesített vektorkeresési index és távolságfüggvény kiválasztását Nem Igen
Rekordonként több vektort támogat Nem Igen
Egyéni sémák támogatása Nem Igen
Több vektortípust támogat Nem Igen
Támogatja a metaadatok előzetes szűrését a vektorkereséshez Nem Igen
Támogatja a vektorkeresést nem vektoros adatbázisokon a teljes adathalmaz ügyfélre való letöltésével és helyi vektorkereséssel Igen Nem

Rendelkezésre álló Memóriatár-összekötők

A Szemantic Kernel számos Memóriatároló-összekötőt kínál az adatok tárolására és lekérésére használható vektoradatbázisokhoz. Ezek közé tartoznak:

Szolgáltatás C# Piton
Vektoradatbázis az Azure Cosmos DB for NoSQL-ben C# Piton
Vektoradatbázis a vCore-alapú Azure Cosmos DB-ben a MongoDB-hez C# Piton
Azure AI Keresés C# Piton
Azure PostgreSQL-kiszolgáló C#
Azure SQL Database C#
Króma C# Piton
DuckDB C#
Milvus C# Piton
MongoDB Atlas Vector Search C# Piton
Fenyőtoboz C# Piton
Postgres C# Piton
Qdrant C# Piton
Redis nevű adatbázis-kezelő rendszer C# Piton
Sqlite C#
Weaviate C# Piton

Migrálás memóriatárolókból vektortárolókba

Ha a Memóriatár absztrakcióiból a Vektortár absztrakcióiba szeretne migrálni, többféleképpen is megteheti ezt.

A meglévő gyűjtemény használata a Vector Store absztrakcióival

A legegyszerűbb módszer sok esetben az lehet, ha csak a Vector Store absztrakcióival fér hozzá a Memóriatár absztrakcióival létrehozott gyűjteményhez. Ez sok esetben lehetséges, mivel a Vektortár absztrakciója lehetővé teszi a használni kívánt séma kiválasztását. A fő követelmény egy olyan adatmodell létrehozása, amely megfelel az örökölt Memóriatároló-implementáció által használt sémának.

Például az Azure AI Search Memóriatároló által létrehozott gyűjtemény eléréséhez használhatja a következő Vector Store-adatmodellt.

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; }
}

Tipp.

A Vector Store absztrakcióinak a Memóriatárolóval létrehozott gyűjtemények elérésére való használatával kapcsolatos részletesebb példákért lásd itt.

Új gyűjtemény létrehozása

Bizonyos esetekben az új gyűjteménybe való migrálás előnyösebb lehet, mint a meglévő gyűjtemény közvetlen használata. Előfordulhat, hogy a Memóriatároló által kiválasztott séma nem felel meg a követelményeknek, különösen a szűrés tekintetében.

A Redis Memóriatároló például egy három mezőből álló sémát használ:

  • sztring metaadatai
  • hosszú időbélyeg
  • float[] beágyazás

A beágyazáson és az időbélyegen kívül minden adat szerializált json-sztringként van tárolva a Metaadatok mezőben. Ez azt jelenti, hogy az egyes értékek indexelése és szűrése nem lehetséges. Előfordulhat például, hogy az ExternalSourceName használatával szeretne szűrni, de ez nem lehetséges, amíg egy json-sztringen belül van.

Ebben az esetben jobb lehet, ha az adatokat egy egyszerű sémával rendelkező új gyűjteménybe migrálja. Itt két lehetőség közül választhat. Létrehozhat egy új gyűjteményt a forrásadatokból, vagy egyszerűen leképelheti és átmásolhatja az adatokat a régiből az újba. Az első lehetőség költségesebb lehet, mivel újra kell létrehoznia a beágyazásokat a forrásadatokból.

Tipp.

Ha például a Redis használatával szeretné átmásolni az adatokat a Memóriatár absztrakcióival létrehozott gyűjteményből a Vektortár absztrakcióival létrehozott gyűjteménybe, tekintse meg itt.