Jegyzet
Az oldalhoz való hozzáférés engedélyezést igényel. Próbálhatod be jelentkezni vagy könyvtárat váltani.
Az oldalhoz való hozzáférés engedélyezést igényel. Megpróbálhatod a könyvtár váltását.
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.