Sdílet prostřednictvím


Vektorové databáze pro aplikace .NET AI

Vektorové databáze ukládají a spravují vkládání vektorů. Vkládání jsou číselná reprezentace dat, která zachová sémantický význam. Slova, dokumenty, obrázky, zvuk a další typy dat mohou být vektorizovány. Vkládání můžete použít k tomu, aby model umělé inteligence porozuměl významu vstupů, aby mohl provádět porovnání a transformace, například sumarizaci textu, hledání kontextových dat nebo vytváření obrázků z popisů textu.

Vektorovou databázi můžete použít například k:

  • Identifikujte podobné obrázky, dokumenty a skladby na základě jejich obsahu, motivů, mínění a stylů.
  • Identifikujte podobné produkty na základě jejich charakteristik, funkcí a skupin uživatelů.
  • Doporučte obsah, produkty nebo služby na základě uživatelských předvoleb.
  • Identifikujte nejlepší potenciální možnosti z velkého souboru možností, abyste splnili složité požadavky.
  • Identifikujte datové anomálie nebo podvodné aktivity, které se liší od převládajících nebo normálních vzorů.

Vektorové databáze poskytují možnosti vektorového vyhledávání k vyhledání podobných položek na základě jejich charakteristik dat, nikoli přesných shod v poli vlastnosti. Vektorové vyhledávání funguje tak, že analyzuje vektorové znázornění dat, která jste vytvořili pomocí modelu vkládání AI, jako jsou modely vkládání Azure OpenAI. Proces hledání měří vzdálenost mezi datovými vektory a vektorem dotazu. Datové vektory, které jsou nejblíže vektoru dotazu, jsou ty, které jsou nejvíce podobné sémanticky.

Některé služby, jako je Azure Cosmos DB pro virtuální jádro MongoDB, poskytují pro vaše data nativní možnosti vyhledávání vektorů. Další databáze je možné vylepšit pomocí vektorového vyhledávání indexováním uložených dat pomocí služby, jako je Azure AI Search, která může prohledávat a indexovat vaše data, aby poskytovala možnosti vektorového vyhledávání.

Pracovní postupy vektorového vyhledávání s využitím .NET a OpenAI

Vektorové databáze a jejich vyhledávací funkce jsou obzvláště užitečné v pracovních postupech RAG pattern s Azure OpenAI. Tento model umožňuje rozšířit model AI o další sémanticky bohaté znalosti vašich dat. Běžný pracovní postup AI využívající vektorové databáze zahrnuje tyto kroky:

  1. Vytvořte vestavěné vektory pro svá data pomocí modelu OpenAI pro vkládání.
  2. Uložte a indexujte embeddings do vektorové databáze nebo vyhledávací služby.
  3. Převeďte výzvy uživatelů z vaší aplikace na vkládání.
  4. Spusťte vektorové vyhledávání v rámci svých dat a porovnejte vkládání uživatelského dotazu s vkládáními v databázi.
  5. Pomocí jazykového modelu, jako je gpt-4o, můžete sestavit uživatelsky přívětivé dokončování z výsledků hledání vektorů.

Praktický příklad tohoto toku najdete v kurzu implementace Azure OpenAI s RAG pomocí vektorového vyhledávání v aplikaci .NET .

Mezi další výhody modelu RAG patří:

  • Vygenerujte kontextově relevantní a přesné odpovědi na výzvy uživatelů z modelů AI.
  • Překonejte limity tokenů LLM – hlavní zpracování se provádí prostřednictvím databázového vektorového vyhledávání.
  • Snižte náklady na časté vyladění aktualizovaných dat.

Knihovna Microsoft.Extensions.VectorData

Balíček 📦 Microsoft.Extensions.VectorData.Abstractions poskytuje jednotnou vrstvu abstrakcí pro interakci s vektorovými úložišti v .NET. Tyto abstrakce umožňují napsat kód pro jediné rozhraní API a nahradit používané vektorové úložiště s minimálními změnami vaší aplikace.

Knihovna poskytuje následující klíčové funkce:

  • Jednotný datový model: Definujte datový model jednou pomocí atributů .NET a použijte ho v libovolném podporovaném úložišti vektorů.
  • Operace CRUD: Vytvoření, čtení, aktualizace a odstranění záznamů v úložišti vektorů
  • Vektorové a textové vyhledávání: Dotazování záznamů pomocí sémantické podobnosti pomocí vektorové vyhledávání nebo pomocí klíčového slova pomocí vyhledávání textu.
  • Správa kolekcí: Vytváření, výpis a odstraňování kolekcí (tabulek nebo indexů) v úložišti vektorů.

Klíčové abstrakce

Knihovna Microsoft.Extensions.VectorData.Abstractions zveřejňuje následující hlavní abstraktní třídy:

  • VectorStore: Třída nejvyšší úrovně pro vektorovou databázi. Slouží k načítání a správě kolekcí.
  • VectorStoreCollection<TKey,TRecord>: Představuje pojmenovanou kolekci záznamů v rámci úložiště vektorů. Slouží k provádění operací CRUD a vyhledávání. Také implementuje IVectorSearchable<TRecord>.
  • IKeywordHybridSearchable<TRecord>: Implementované kolekcemi, které podporují hybridní vyhledávání, kombinování podobnosti vektorů s párováním klíčových slov.

Podrobné pokyny týkající se definice datového modelu, operací CRUD, vektorového vyhledávání, filtrování, hybridního vyhledávání a generování vkládání najdete v tématu Použití vektorových úložišť v aplikacích .NET AI.

Zprostředkovatelé vektorových úložiště

Balíček Microsoft.Extensions.VectorData.Abstractions definuje abstrakce a samostatné balíčky zprostředkovatele poskytují implementace pro konkrétní vektorové databáze. Zvolte poskytovatele, který odpovídá vaší vektorové databázi, například Microsoft.SemanticKernel.Connectors.AzureAISearch.

Poznámka:

Navzdory zahrnutí "SemanticKernel" do názvů balíčků nemají tito poskytovatelé nic společného s sémantické jádro a jsou použitelné kdekoli v .NET, včetně Agent Framework.

Všichni poskytovatelé implementují stejné VectorStore a VectorStoreCollection<TKey,TRecord> abstraktní třídy, takže mezi nimi můžete přepínat beze změny logiky aplikace.

Návod

Během vývoje a testování použijte zprostředkovatele v paměti (Microsoft.SemanticKernel.Connectors.InMemory). Nevyžaduje žádnou externí službu ani konfiguraci a později ji můžete vyměnit za poskytovatele produkčního prostředí.