Sharded DiskANN: Prioritní vektorové vyhledávání

Sharded DiskANN je funkce, která uživateli umožňuje ručně shardovat (nebo rozdělit) index vektoru DiskANN do menších nebo lépe spravovatelných indexů, které jsou efektivnější pro vyhledávání. V zásadách indexování kontejneru můžete definovat volitelný parametr, vectorIndexShardKeykterý odkazuje na vlastnost v dokumentech. To v podstatě vytvoří více jedinečných indexů vektorů DiskANN pro váš kontejner, jeden pro každou jedinečnou hodnotu, kterou může vlastnost vzít.

DiskANN s fragmentovaným úložištěm nabízí mnoho výhod, mezi které patří:

  • Nižší latence. Každý index vektoru DiskANN s horizontálním dělením je menší než jeden větší index. To může znamenat, že hledání vektorů se dokončí za kratší dobu.
  • Nižší náklady. Hledání menšího indexu vyžaduje menší výpočetní práci a může vést k nižším poplatkům za RU.
  • Vylepšená paměť. Izolováním vyhledávání na menší index DiskANN definovaný pro VectorIndexShardKey můžete dosáhnout vyšší úplnosti a přesnosti ve výsledcích hledání, protože hledání se provádí s více zaměřenou podmnožinou dat.
  • Scalability. Horizontální dělení umožňuje systému zpracovávat větší datové sady tím, že distribuuje data napříč několika horizontálními oddíly, což usnadňuje škálování při růstu datové sady.
  • Izolace vektorových dat Sharded DiskANN zajišťuje, že vektorová data mohou být izolována na základě specifických atributů (shard klíčů), což poskytuje lepší správu a zabezpečení dat. Hledání je omezené jenom na datové položky odpovídající danému shard klíči.

Případy použití

Shardovaný DiskANN je užitečný v následujících scénářích:

  • Prostředí s více tenanty Ve scénářích s více tenanty umožňuje Sharded DiskANN izolaci dat pro různé tenanty a zajistit, aby se data jednotlivých tenantů dotazovala nezávisle.
  • hledání Category-Specific. Sharded DiskANN umožňuje efektivní vektorové vyhledávání specifické pro kategorie rozdělením indexu na základě vlastnosti, která definuje kategorii vašich dat. Pak lze vektorové vyhledávání provést výhradně pro danou kategorii.

Note

Pokud chcete použít vektorové vyhledávání kolekcí s heirarchickými partitonovými klíči, spojte se s týmem na adrese: cosmossearch@microsoft.com nakonfigurujte svůj účet tak, aby ho optimálně používal.

Jak používat DiskANN s rozdělením na části

Použití DiskANN bez shardování

Protože je klíč VectorIndexShard volitelný parametr, vynechání vytvoří jeden index DiskANN na fyzický oddíl jako obvykle.

  "vectorIndexes": [
    {"path": "/vector2", "type": "DiskANN} 
]

Použijte vectorIndexShardKey

Zde vidíme příklad definování klíče pro shardování na základě vlastnosti tenantID. Může se jednat o libovolnou vlastnost datové položky, a to i klíč oddílu. Jediný řetězec musí být uzavřený v poli.

"vectorIndexes": [
    {
        "path": "/vector2",
        "type": "DiskANN",
        "vectorIndexShardKey": ["/tenantID"]
    }
]

Psaní vektorového vyhledávacího dotazu zaměřeného na klíč horizontálního dělení

Pokud chcete zaměřit vektorový vyhledávací dotaz na konkrétní hodnotu shard klíče, vyfiltrujte cestu k hodnotě pomocí klauzule WHERE, jak je znázorněno v následujícím příkladu:

SELECT TOP 10 *
FROM c
ORDER BY VectorDistance(c.vector, {queryVector})
WHERE c.tenantID = "tenant1"