Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A vektoradatbázisok vektoros beágyazásokat tárolnak és kezelnek. A beágyazások olyan adatok numerikus ábrázolásai, amelyek megőrzik a szemantikai jelentést. Szavak, dokumentumok, képek, hang és más típusú adatok mind vektorizálhatók. Beágyazásokkal segítheti az AI-modelleket a bemenetek jelentésének megértésében, hogy összehasonlításokat és átalakításokat hajtson végre, például a szöveg összegzését, a környezetfüggő adatok keresését vagy a szövegleírásokból származó képek létrehozását.
Egy vektoradatbázis például a következő célokra használható:
- Azonosítsa a hasonló képeket, dokumentumokat és dalokat azok tartalma, témái, hangulatai és stílusai alapján.
- Azonosítsa a hasonló termékeket jellemzőik, jellemzőik és felhasználói csoportjaik alapján.
- Tartalom, termékek vagy szolgáltatások ajánlása a felhasználói beállítások alapján.
- Az összetett követelményeknek való megfelelés érdekében azonosítsa a nagy választási lehetőségek közül a legjobb lehetőségeket.
- Azonosítsa azokat az adatrendellenességeket vagy csalárd tevékenységeket, amelyek eltérnek az elsődleges vagy a normál mintáktól.
A vektorkeresés ismertetése
A vektoradatbázisok vektorkeresési képességeket biztosítanak a hasonló elemek megkereséséhez az adattulajdonságuk alapján, nem pedig egy tulajdonságmező pontos egyezései alapján. A vektorkeresés úgy működik, hogy elemzi az AI-beágyazási modellel létrehozott adatok vektorábrázolásait, például a Azure OpenAI-beágyazási modelleket. A keresési folyamat méri az adatvektorok és a lekérdezésvektorok közötti távolságot. A lekérdezésvektorhoz legközelebb eső adatvektorok azok, amelyek szemantikailag leginkább hasonlítanak.
A legtöbb modern adatbázistermék támogatja a vektorkeresést a hagyományos lekérdezések mellett; ez a helyzet a Azure SQL/SQL Server, Azure Cosmos DB, PostgreSQL és sok más fő termék esetében. Alternatív megoldásként számos dedikált, speciális vektoradatbázis-termék létezik. Ezek a termékek nagymértékben optimalizálva vannak a vektorkeresés végrehajtására, és általában egy hagyományos adatbázis mellett vannak telepítve, kizárólag a vektorkeresési számítási feladatok kezelésére.
Vektorkeresési munkafolyamatok .NET és OpenAI használatával
A vektoradatbázisok és keresési funkcióik különösen hasznosak RAG-mintában Azure OpenAI-val folytatott munkafolyamatokban. Ez a minta lehetővé teszi az AI-modell bővítését az adatok szemantikailag gazdag ismereteivel. A vektoradatbázisokat használó gyakori AI-munkafolyamat a következő lépéseket tartalmazza:
- Hozzon létre beágyazásokat az adatokhoz egy OpenAI-beágyazási modellel.
- Tárolja és indexelje a beágyazásokat egy vektoradatbázisban vagy keresési szolgáltatásban.
- Felhasználói kérések konvertálása az alkalmazásból beágyazásokká.
- Futtasson egy vektorkeresést az adatok között, összehasonlítva a felhasználói kérések beágyazását az adatbázisban lévő beágyazásokkal.
- Használjon egy nyelvi modellt, például a gpt-4o-t, hogy felhasználóbarát befejezést állítsunk össze a vektorkeresési eredményekből.
A folyamat gyakorlati példájáért tekintse meg az Implement Azure OpenAI RAG-t vektoros kereséssel egy .NET alkalmazásban oktatóanyagot.
A RAG-minta további előnyei a következők:
- Környezetileg releváns és pontos válaszokat hozhat létre a felhasználói kérésekre az AI-modellekből.
- Az LLM-token korlátainak leküzdése – a nehéz munka az adatbázisvektor-kereséssel történik.
- Csökkentse a költségeket a frissített adatok gyakori finomhangolásával.
Microsoft.Extensions.VectorData könyvtár
A .NET vektorkeresésének használatához használhatja a normál adatbázis-illesztőprogramot vagy az SDK-t anélkül, hogy további kódtárat vagy API-t kellene igényelnie. Például a SQL Server esetében a vektorkeresés a T-SQL-ben végezhető el, amikor a standard .NET-illesztőt, az SqlClientet használjuk. A vektorkeresés ilyen módon való elérése azonban gyakran meglehetősen alacsony szintű, jelentős ceremóniát igényel a szerializálás/deszerializálás kezeléséhez, és az eredményként kapott kód nem hordozható az adatbázisok között.
Alternatív megoldásként a Microsoft. Az Extensions.VectorData könyvtár egységes absztrakciós réteget biztosít a .NET vektortárolóinak használatához.
Főbb absztrakciók
Íme egy minimális teljes körű példa, amely létrehoz egy gyűjteményt, rekordokat készít, és vektorkeresést hajt végre:
using Microsoft.Extensions.AI;
using Microsoft.Extensions.VectorData;
using Microsoft.SemanticKernel.Connectors.InMemory;
// Configure an embedding generator to transform text to embeddings
IEmbeddingGenerator<string, Embedding<float>> embeddingGenerator = ...;
// Create a vector store and get a collection with the embedding generator
var vectorStore = new InMemoryVectorStore(new() { EmbeddingGenerator = embeddingGenerator });
var collection = vectorStore.GetCollection<int, Movie>("movies");
await collection.EnsureCollectionExistsAsync();
// Upsert some records
await collection.UpsertAsync(new Movie { Key = 1, Title = "The Lion King", Description = "An animated film about a young lion prince" });
await collection.UpsertAsync(new Movie { Key = 2, Title = "Inception", Description = "A thief who steals corporate secrets through dream-sharing technology" });
await collection.UpsertAsync(new Movie { Key = 3, Title = "Finding Nemo", Description = "A fish searches the ocean for his lost son" });
// Search for movies similar to the query text
await foreach (var result in collection.SearchAsync("animals in the wild", top: 2))
{
Console.WriteLine($"{result.Record.Title} (score: {result.Score})");
}
// Define the data model
class Movie
{
[VectorStoreKey]
public int Key { get; set; }
[VectorStoreData]
public string Title { get; set; }
[VectorStoreVector(Dimensions: 1536)]
public string Description { get; set; }
}
Vektortároló-szolgáltatók
A Microsoft.Extensions.VectorData.Abstractions csomag határozza meg az absztrakciókat, és külön provider csomagokat biztosít implementációkat adott vektoradatbázisokhoz. Válassza ki a vektoradatbázisnak megfelelő szolgáltatót, például Microsoft. SemanticKernel.Connectors.AzureAISearch.
Megjegyzés:
Annak ellenére, hogy a csomagnevekben szerepel a "SemanticKernel", ezeknek a szolgáltatóknak semmi közük a Szemantikus kernelhez, és bárhol használhatók a .NET-ben, beleértve az Agent Frameworket is.
Minden szolgáltató ugyanazokat VectorStoreVectorStoreCollection<TKey,TRecord> az absztrakt osztályokat implementálja, így az alkalmazáslogika módosítása nélkül válthat közöttük.
Jótanács
Használja a memóriabeli szolgáltatót (Microsoft. SemanticKernel.Connectors.InMemory) a kezdeti fejlesztés/prototípuskészítés során – nem igényel külső szolgáltatást vagy konfigurációt, és később felcserélheti egy éles szolgáltatóra. Ne használja az InMemory-szolgáltatót tesztelésre, mivel fontos különbségek lehetnek a szolgáltató és az éles adatbázis között. Fontolja meg tesztkontainerek használatát az éles adatbázisrendszeren végzett tesztek futtatásához.