Megosztás a következőn keresztül:


Integrált vektortároló az Azure DocumentDB-ben

Az Azure DocumentDB integrált vektoradatbázisával zökkenőmentesen csatlakoztathatja az AI-alapú alkalmazásokat az Azure DocumentDB-ben tárolt adataihoz. Ez az integráció az Azure OpenAI-beágyazások használatával létrehozott alkalmazásokat is tartalmazhat. A natívan integrált vektoradatbázissal hatékonyan tárolhatja, indexelheti és lekérdezheti a közvetlenül az Azure DocumentDB-ben tárolt nagy dimenziójú vektoradatokat, valamint azokat az eredeti adatokat, amelyekből a vektoradatok létrejönnek. Ez szükségtelenné teszi az adatok alternatív vektortárolókba való átvitelét, és többletköltséggel jár.

Mi az a vektortároló?

A vektortárolók vagy vektoradatbázisok vektoros beágyazások tárolására és kezelésére szolgáló adatbázisok, amelyek nagy dimenziójú térben lévő adatok matematikai ábrázolásai. Ebben a térben minden dimenzió megfelel az adatok egy funkciójának, és több tízezer dimenzió használható kifinomult adatok megjelenítésére. A vektor pozíciója ebben a térben annak jellemzőit jelöli. Szavak, kifejezések vagy teljes dokumentumok, képek, hang és más típusú adatok mind vektorizálhatók.

Hogyan működik a vektortároló?

A vektortárakban a vektorkeresési algoritmusok a beágyazások indexelésére és lekérdezésére szolgálnak. Néhány jól ismert vektorkeresési algoritmus a Hierarchical Navigable Small World (HNSW), az Inverted File (IVF) és a DiskANN. A vektoros keresés egy olyan módszer, amely segít megtalálni a hasonló elemeket az adattulajdonságuk alapján, nem pedig egy tulajdonságmező pontos egyezései alapján. Ez a technika olyan alkalmazásokban hasznos, mint a hasonló szövegek keresése, a kapcsolódó képek keresése, javaslatok készítése vagy akár a rendellenességek észlelése. A gépi tanulási modellel létrehozott adatok vektoros beágyazásának (számlistáinak) lekérdezésére szolgál egy beágyazási API használatával. A beágyazási API-k például az Azure OpenAI-beágyazások vagy a Hugging Face az Azure-on. A vektorkeresés az adatvektorok és a lekérdezésvektor közötti távolságot méri. A lekérdezésvektorhoz legközelebb eső adatvektorok azok, amelyek szemantikailag a leginkább hasonlítanak.

Az Azure DocumentDB integrált vektoradatbázisában az eredeti adatok mellett tárolhatja, indexelheti és lekérdezheti a beágyazásokat. Ez a módszer kiküszöböli az adatok egy különálló, tiszta vektoradatbázisban való replikálásának többletköltségét. Emellett ez az architektúra együtt tartja a vektorbeágyazást és az eredeti adatokat, ami jobban megkönnyíti a multimodális adatműveleteket, és nagyobb adatkonzisztenciát, skálázást és teljesítményt tesz lehetővé.

Vektoradatbázis használati esetei

A vektoradatbázisok az AI és az adatelemzés számos területén használhatók. Segítenek olyan feladatok elvégzésében, mint a természetes nyelv megértése, a képek és videók felismerése, a javaslati rendszerek létrehozása és a keresési funkciók használata. Ezeket az elemzési AI- és a generatív AI-alkalmazásokban is megtalálhatja.

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 egyéni beállítások alapján.
  • Tartalom, termékek vagy szolgáltatások ajánlása a felhasználói csoportok hasonlóságai alapján.
  • Azonosítsa a nagy választási lehetőségek közül a legjobban illeszkedő lehetőségeket az összetett követelményeknek való megfelelés érdekében.
  • 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.
  • Állandó memória implementálása AI-ügynökök számára.
  • Információ-visszakereséssel kibővített generálás (RAG) engedélyezése.

Integrált vektoradatbázis és tiszta vektoradatbázis

A vektoradatbázis-implementációknak két gyakori típusa létezik: a tiszta vektoradatbázis és az integrált vektoradatbázis egy NoSQL- vagy relációs adatbázisban.

A tiszta vektoradatbázis hatékonyan tárolja és kezeli a vektoros beágyazásokat, valamint kis mennyiségű metaadatot. Ez különbözik attól az adatforrástól, amelyből a beágyazások származnak.

A nagy teljesítményű NoSQL-ben vagy relációs adatbázisban integrálható vektoradatbázis további képességeket biztosít. A NoSQL-ben vagy relációs adatbázisban lévő integrált vektoradatbázis a megfelelő eredeti adatok mellett tárolhatja, indexelheti és lekérdezésbeágyazhatja őket. Ez a módszer kiküszöböli az adatok egy különálló, tiszta vektoradatbázisban való replikálásának többletköltségét. Emellett a vektorbeágyazások és az eredeti adatok együttes megtartása jobban megkönnyíti a multimodális adatműveleteket, és nagyobb adatkonzisztenciát, skálázást és teljesítményt tesz lehetővé.

Nyílt forráskódú vektoradatbázisok

Ha a fejlesztők vektoradatbázisokat választanak ki, a nyílt forráskódú lehetőségek számos előnnyel járnak. A nyílt forráskód azt jelenti, hogy a szoftver forráskódja szabadon elérhető, így a felhasználók a saját igényeiknek megfelelően testre szabhatják az adatbázist. Ez a rugalmasság előnyös az olyan szervezetek számára, amelyekre egyedi szabályozási követelmények vonatkoznak az adatokra, például a pénzügyi szolgáltatási ágazatban tevékenykedő vállalatokra.

A nyílt forráskódú vektoradatbázisok másik előnye az erős közösségi támogatás, amelyet élveznek. Az aktív felhasználói közösségek gyakran hozzájárulnak ezeknek az adatbázisoknak a fejlesztéséhez, támogatják és osztják meg az ajánlott eljárásokat, elősegítve az innovációt.

Egyes személyek azért választják a nyílt forráskódú vektoradatbázisokat, mert "ingyenesek", ami azt jelenti, hogy a szoftver beszerzése és használata nem jár költséggel. Alternatív megoldásként használhatja a felügyelt vektoradatbázis-szolgáltatások által kínált ingyenes szinteket. Ezek a felügyelt szolgáltatások nem csak költségmentes hozzáférést biztosítanak egy bizonyos használati korlátig, hanem a karbantartás, a frissítések és a méretezhetőség kezelésével is leegyszerűsítik az üzemeltetési terheket. Ezért a felügyelt vektoradatbázis-szolgáltatások ingyenes rétegének használatával költségmegtakarítást érhet el, miközben csökkenti a felügyeleti többletterhelést. Ez a megközelítés lehetővé teszi, hogy az adatbázis-felügyelet helyett inkább az alapvető tevékenységekre összpontosítson.

Válassza ki a legjobb nyílt forráskódú vektoradatbázist

A legjobb nyílt forráskódú vektoradatbázis kiválasztásához több tényezőt is figyelembe kell venni. Az adatbázis teljesítménye és méretezhetősége kritikus fontosságú, mivel ezek befolyásolják, hogy az adatbázis képes-e kezelni az Adott számítási feladatra vonatkozó követelményeket. A hatékony indexelési és lekérdezési képességekkel rendelkező adatbázisok általában optimális teljesítményt nyújtanak. Egy másik tényező az adatbázishoz elérhető közösségi támogatás és dokumentáció. A robusztus közösség és a bőséges dokumentáció értékes segítséget nyújthat. A DocumentDB például egy népszerű nyílt forráskódú vektoradatbázis:

Lehet, hogy a legnépszerűbb lehetőség nem a legjobb választás az Ön számára. Ezért különböző lehetőségeket kell összehasonlítania a funkciók, a támogatott adattípusok és a meglévő eszközökkel és keretrendszerekkel való kompatibilitás alapján. A nyílt forráskódú vektoradatbázisok kihívásait is szem előtt kell tartania.

A nyílt forráskódú vektoradatbázisok kihívásai

A legtöbb nyílt forráskódú vektoradatbázis, beleértve a korábban felsoroltakat is, tiszta vektoradatbázisok. Más szóval úgy vannak kialakítva, hogy csak vektoros beágyazásokat tároljon és kezeljen, valamint kis mennyiségű metaadatot. Mivel ezek az eredeti adatoktól elkülönítve működnek, át kell helyeznie az adatokat a különböző szolgáltatások között. Ez az összetettség többletköltséget jelent, összetettebbé teszi a dolgokat, és lelassíthatja a termelési rendszereket.

A nyílt forráskódú adatbázisokra jellemző kihívásokat is felvetik:

  • Beállítás: Az adatbázis telepítéséhez, konfigurálásához és működtetéséhez részletes ismeretekre van szüksége, különösen összetett üzemelő példányok esetén. Az erőforrások és a konfiguráció optimalizálása a művelet vertikális felskálázása során szoros monitorozást és módosításokat igényel.
  • Karbantartás: Saját frissítéseket, javításokat és karbantartásokat kell kezelnie. A gépi tanulási szakértelem nem elég; az adatbázis-felügyelet terén is széles körű tapasztalattal kell rendelkeznie.
  • Támogatás: A hivatalos támogatás a felügyelt szolgáltatásokhoz képest korlátozható, és nagyobb mértékben támaszkodhat a közösségi segítségre.

Ezért a nyílt forráskódú vektoradatbázisok kezdetben ingyenesen jelentős költségekkel járnak a felskálázás során. A bővülő műveletekhez több hardverre, képzett informatikai személyzetre és fejlett infrastruktúra-kezelésre van szükség, ami magasabb hardver-, személyzeti és üzemeltetési költségeket eredményez. A nyílt forráskódú vektoradatbázisok skálázása a licencdíjak hiánya ellenére is pénzügyileg igényelhető.

A nyílt forráskódú vektoradatbázisok kihívásainak kezelése

A nagy teljesítményű NoSQL-ben vagy relációs adatbázisban integrálható teljes mértékben felügyelt vektoradatbázisok elkerülik a nyílt forráskódú vektoradatbázisok többletköltségét és összetettségét. Az ilyen adatbázis tárolja, indexeli és lekérdezi a beágyazásokat a megfelelő eredeti adatokkal együtt. Ez a módszer kiküszöböli az adatok egy különálló, tiszta vektoradatbázisban való replikálásának többletköltségét. Emellett a vektoros beágyazások és az eredeti adatok együttes megtartása jobban megkönnyíti a multimodális adatműveleteket, és nagyobb adatkonzisztenciát, skálázást és teljesítményt tesz lehetővé. Eközben a teljes körűen felügyelt szolgáltatás segít a fejlesztőknek elkerülni a problémákat a nyílt forráskódú vektoradatbázisok beállításával, karbantartásával és közösségi támogatásával kapcsolatban. Ezenkívül néhány felügyelt vektoradatbázis-szolgáltatás teljes élettartamú ingyenes szintet kínál.

Ilyen például az Azure DocumentDB integrált vektoradatbázisa. Ez a beállítás lehetővé teszi, hogy a fejlesztők a nyílt forráskódú vektoradatbázisokhoz hasonlóan pénzt takarítson meg. A nyílt forráskódú lehetőségektől eltérően azonban a szolgáltató gondoskodik a karbantartásról, a frissítésekről és a skálázásról. A frissítés gyors és egyszerű, miközben alacsonyan tartható a teljes bekerülési költség (TCO), amikor a működés felskálázása szükségessé válik. A szolgáltatással kényelmesen méretezheti a produkciós környezetben lévő MongoDB-alkalmazásokat.

Az Azure DocumentDB robusztus vektorkeresési képességeket biztosít, amelyek lehetővé teszik a nagy sebességű hasonlósági kereséseket összetett adathalmazok között. Ha vektorkeresést szeretne végezni az Azure DocumentDB-ben, először létre kell hoznia egy vektorindexet. Bár az Azure DocumentDB több lehetőséget is kínál, az alábbi általános irányelvek segítenek az adathalmaz méretétől függően az első lépésekben:

IVF HNSW DiskANN (ajánlott)
Leírás Az IVFFlat-indexek a vektorokat listákra osztják, majd a lekérdezésvektorhoz legközelebbi részhalmazban keresnek. A HNSW-index többrétegű gráfot hoz létre. A DiskANN egy hozzávetőleges szomszédkeresési algoritmus, amely hatékony vektorkeresésre lett tervezve bármilyen léptékben.
Főbb kompromisszumok Profik: Gyorsabb összeállítási idő, kevesebb memóriahasználat.
Hátránya: Alacsonyabb lekérdezési teljesítmény (a gyors visszahívási kompromisszum szempontjából).
Profik: Egy üres táblán jobb lekérdezési teljesítmény hozható létre (a sebességvisszahívási kompromisszum szempontjából).
Hátránya: Lassabb buildelési idő, nagyobb memóriahasználat.
Profik: Hatékony bármilyen léptékben, nagy visszahívás, nagy átviteli sebesség, alacsony késés.
Vektorok száma 10 000 alatt Legfeljebb 50 000 Akár 500 000+
Ajánlott fürtszint M10 vagy M20 M30 és újabb M30 és újabb

A DiskANN-indexeket M30-on és magasabb szinteken is használhatja. A DiskANN-index létrehozásához állítsa be a "kind" paramétert a "vector-diskann" sablon alapján:

{ 
    "createIndexes": "<collection_name>",
    "indexes": [
        {
            "name": "<index_name>",
            "key": {
                "<path_to_property>": "cosmosSearch"
            },
            "cosmosSearchOptions": { 
                "kind": "vector-diskann", 
                "dimensions": <integer_value>,
                "similarity": <string_value>,
                "maxDegree" : <integer_value>, 
                "lBuild" : <integer_value>, 
            } 
        } 
    ] 
}
szakterület Típus Description
index_name karakterlánc Az index egyedi neve.
path_to_property karakterlánc A vektort tartalmazó tulajdonság elérési útja. Ez az elérési út lehet legfelső szintű tulajdonság vagy pont jelölési útvonal a tulajdonsághoz. A vektoroknak indexeltnek kell lenniük number[] , hogy a vektorkeresési eredményekben lehessen őket használni. Egy másik típusú vektor( például double[]) megakadályozza a dokumentum indexelését. A nem indexelt dokumentumokat a vektorkeresés eredménye nem adja vissza.
kind karakterlánc A létrehozandó vektorindex típusa. A beállítások a következők vector-ivf: , vector-hnswés vector-diskann.
dimensions egész szám A vektoros hasonlóság dimenzióinak száma. A DiskANN legfeljebb 16 000 dimenziót támogat (termékkvantálással), a jövőben pedig tervezik a 40 000-nél több támogatását.
similarity karakterlánc Hasonlósági metrika az indexhez. Lehetséges lehetőségek a COS következők: (koszinusz távolság), L2 (euklideszi távolság) és IP (belső termék).
maxDegree egész szám Csomópontonkénti élek maximális száma a gráfban. Ez a paraméter 20 és 2048 közötti (alapértelmezés szerint 32). A magasabb maxDegree a nagy mérettel és/vagy nagy pontossági követelményekkel rendelkező adathalmazokhoz alkalmas.
lBuild egész szám Beállítja a DiskANN-index felépítése során kiértékelt jelölt szomszédok számát. Ez a 10 és 500 közötti (alapértelmezés szerint 50) paraméter a pontosságot és a számítási többletterhelést egyensúlyba hozza: a magasabb értékek javítják az index minőségét és pontosságát, de növelik a létrehozási időt

Vektorkeresés végrehajtása a DiskANN használatával

Vektorkeresés végrehajtásához használja az $search aggregációs folyamat szakaszát, és kérdezze le az cosmosSearch operátort. A DiskANN nagy teljesítményű keresést tesz lehetővé nagy teljesítményű adathalmazokban opcionális szűréssel, például térinformatikai vagy szövegalapú szűrőkkel.

{
  "$search": {
    "cosmosSearch": {
      "path": "<path_to_property>",
      "query": "<query_vector>",  
      "k": <num_results_to_return>,  
      "filter": {"$and": [
        { "<attribute_1>": { "$eq": <value> } },
        {"<location_attribute>": {"$geoWithin": {"$centerSphere":[[<longitude_integer_value>, <latitude_integer_value>], <radius>]}}}
      ]}
    }
  }
},
szakterület Típus Description
lSearch egész szám Megadja a keresési dinamikus jelöltlista méretét. Az alapértelmezett érték 40, 10 és 1000 közötti konfigurálható tartománnyal. Az érték növelése javítja a visszahívást, de csökkentheti a keresési sebességet.
k egész szám Meghatározza a visszaadni kívánt keresési eredmények számát. Az k értéknek kisebbnek vagy egyenlőnek lSearchkell lennie.

Példa DiskANN-index szűréssel történő használatára

Vektorok hozzáadása az adatbázishoz

Ha térinformatikai szűrőkkel szeretné használni a vektorkeresést, adjon hozzá olyan dokumentumokat, amelyek vektorbeágyazást és helykoordinátát is tartalmaznak. A beágyazásokat saját modellel, Azure OpenAI beágyazásokkal vagy egy API-val, például a Hugging Face az Azure-on hozhatja létre.

from pymongo import MongoClient

client = MongoClient("<your_connection_string>")
db = client["test"]
collection = db["testCollection"]

documents = [
    {"name": "Eugenia Lopez", "bio": "CEO of AdventureWorks", "is_open": 1, "location": [-118.9865, 34.0145], "contentVector": [0.52, 0.20, 0.23]},
    {"name": "Cameron Baker", "bio": "CFO of AdventureWorks", "is_open": 1, "location": [-0.1278, 51.5074], "contentVector": [0.55, 0.89, 0.44]},
    {"name": "Jessie Irwin", "bio": "Director of Our Planet initiative", "is_open": 0, "location": [-118.9865, 33.9855], "contentVector": [0.13, 0.92, 0.85]},
    {"name": "Rory Nguyen", "bio": "President of Our Planet initiative", "is_open": 1, "location": [-119.0000, 33.9855], "contentVector": [0.91, 0.76, 0.83]}
]

collection.insert_many(documents)

DiskANN-vektorindex létrehozása

Az alábbi példa bemutatja, hogyan állíthat be Egy DiskANN-vektorindexet szűrési képességekkel. Ez a példa magában foglalja a vektorindex létrehozását a hasonlóság kereséséhez, a vektor- és térinformatikai tulajdonságokkal rendelkező dokumentumok hozzáadását, valamint a mezők indexelését a további szűrés érdekében.

db.command({
    "createIndexes": "testCollection",
    "indexes": [
        {
            "name": "DiskANNVectorIndex",
            "key": {
                "contentVector": "cosmosSearch"
            },
            "cosmosSearchOptions": {
                "kind": "vector-diskann",
                "dimensions": 3,
                "similarity": "COS",
                "maxDegree": 32,
                "lBuild": 64
            }
        },
        { 
            "name": "is_open",
            "key": { 
                "is_open": 1 
            }      
        },
        {
            "name": "locationIndex",
            "key": {
                "location": 1
            }
        }
    ]
})

Ez a parancs létrehoz egy DiskANN-vektorindexet a contentVector mezőn exampleCollection, amely lehetővé teszi a hasonlósági kereséseket. A következőt is hozzáadja:

  • A mező indexe is_open , amely alapján szűrheti az eredményeket attól függően, hogy a vállalkozások nyitva vannak-e.
  • Térinformatikai index a mezőn a location földrajzi közelség alapján történő szűréshez.

Ha hasonló vektorokkal rendelkező dokumentumokat szeretne megkeresni egy adott földrajzi sugaron belül, adja meg a queryVector hasonlóság keresését, és adjon meg egy térinformatikai szűrőt.

query_vector = [0.52, 0.28, 0.12]
pipeline = [
    {
        "$search": {
            "cosmosSearch": {
                "path": "contentVector",
                "vector": query_vector,
                "k": 5,
                "filter": {
                    "$and": [
                        {"is_open": {"$eq": 1}},
                        {"location": {"$geoWithin": {"$centerSphere": [[-119.7192861804, 34.4102485028], 100 / 3963.2]}}}
                    ]
                }
            }
        }
    }
]

results = list(collection.aggregate(pipeline))
for result in results:
    print(result)

Ebben a példában a vektor-hasonlósági keresés a megadott k hasonlósági metrika alapján adja vissza a legközelebbi COS legközelebbi vektorokat, az eredmények szűrése pedig csak a 100 mérföldes körzeten belüli nyitott vállalkozásokat foglalja magában.

[
  {
    similarityScore: 0.9745354109084544,
    document: {
      _id: ObjectId("645acb54413be5502badff94"),
      name: 'Eugenia Lopez',
      bio: 'CEO of AdventureWorks',
      is_open: 1,
      location: [-118.9865, 34.0145],
      contentVector: [0.52, 0.20, 0.23]
    }
  },
  {
    similarityScore: 0.9006955671333992,
    document: {
      _id: ObjectId("645acb54413be5502badff97"),
      name: 'Rory Nguyen',
      bio: 'President of Our Planet initiative',
      is_open: 1,
      location: [-119.7302, 34.4005],
      contentVector: [0.91, 0.76, 0.83]
    }
  }
]

Ez az eredmény a legjobban hasonlító dokumentumokat queryVector-hez mutatja; 100 mérföldes sugárra korlátozva és nyitva tartó vállalkozásokra. Minden eredmény tartalmazza a hasonlósági pontszámot és a metaadatokat, bemutatva, hogyan támogatja a DiskANN az Azure DocumentDB-ben a kombinált vektoros és térinformatikai lekérdezéseket a gazdagított, helyérzékeny keresési élményekhez.

Vektorindex-definíciók lekérése

A vektorindex definíciójának gyűjteményből való lekéréséhez használja a listIndexes következő parancsot:

db.exampleCollection.getIndexes();

Ebben a példában a vectorIndex visszaadja azokat a cosmosSearch paramétereket, amelyeket az index létrehozásához használtak.

[
  { v: 2, key: { _id: 1 }, name: '_id_', ns: 'test.exampleCollection' },
  {
    v: 2,
    key: { vectorContent: 'cosmosSearch' },
    name: 'vectorSearchIndex',
    cosmosSearch: {
      kind: <index_type>, // options are `vector-ivf`, `vector-hnsw`, and `vector-diskann`
      numLists: 3,
      similarity: 'COS',
      dimensions: 3
    },
    ns: 'test.exampleCollection'
  }
]

Mostantól bármilyen támogatott lekérdezésszűrővel futtathat vektorkereséseket, például $lt, $lte, $eq, $neq, $gte, $gt, $in$nin, és $regex.

Az előszűrés használatához először meg kell határoznia egy szabványos indexet a vektorindex mellett azon a tulajdonságon, amely alapján szűrni szeretne. Íme egy példa egy szűrőindex létrehozására:

db.runCommand({
  "createIndexes": "<collection_name>",
  "indexes": [ {
    "key": {
      "<property_to_filter>": 1
    },
    "name": "<name_of_filter_index>"
  }
  ]
});

A szűrőindex létrehozása után közvetlenül hozzáadhatja a "filter" záradékot a vektorkeresési lekérdezéshez. Ez a példa bemutatja, hogyan szűrheti azokat az eredményeket, ahol a "title" tulajdonság értéke nem szerepel a megadott listában:

db.exampleCollection.aggregate([
  {
    '$search': {
      "cosmosSearch": {
        "vector": "<query_vector>",
        "path": <path_to_vector>,
        "k": num_results,
        "filter": {<property_to_filter>: {"$nin": ["not in this text", "or this text"]}}
      },
      "returnStoredSource": True }},
  {'$project': { 'similarityScore': { '$meta': 'searchScore' }, 'document' : '$$ROOT' }
}
]);

Fontos

Az előre szűrt vektorkeresések teljesítményének és pontosságának optimalizálásához érdemes módosítani a vektorindex paramétereit. A DiskANN indexek esetében a maxDegree vagy lBuild érték növelése jobb eredményeket hozhat. A HNSW-indexek esetében magasabb értékekkel mkísérletezve, efConstructionvagy efSearch javíthatja a teljesítményt. Az IVF-indexek esetében hasonlóképpen finomhangolható numLists vagy nProbes kielégítőbb eredményekhez vezethet. Fontos, hogy az Ön adataival tesztelje az adott konfigurációt annak érdekében, hogy az eredmények megfeleljenek a követelményeinek. Ezek a paraméterek befolyásolják az index struktúráját és a keresési viselkedést, és az optimális értékek az adattulajdonságok és a lekérdezési minták alapján változhatnak.

Nagy nyelvi modell (LLM) vezénylési eszközeinek használata

Vektoradatbázisként való használat szemantikus kernellel

A Szemantic Kernel használatával vezényli az azure DocumentDB-ből és az LLM-ből történő információlekérést. További információ: GitHub-adattár.

Vektoradatbázisként való használat a LangChainnel

A LangChain használatával vezényelheti az Azure DocumentDB-ből és az LLM-ből történő információlekérést. További információ: LangChain-integrációk az Azure DocumentDB-hez.

Szemantikai gyorsítótárként való használat a LangChainnel

A LangChain és az Azure DocumentDB segítségével úgy szervezheti a szemantikai gyorsítótárazást, hogy a korábban rögzített LLM-válaszokat használja, amivel csökkentheti az LLM API költségeit és a válaszok késését. További információ: LangChain-integráció az Azure DocumentDB-vel.

Szolgáltatások és korlátozások

  • Támogatott távolságmetrikák: L2 (Euklideszi), belső termék és koszinusz.
  • Támogatott indexelési módszerek: IVFFLAT, HNSW és DiskANN.
  • A DiskANN és a termékkvantálás segítségével akár 16 000 dimenziót is indexelhet a vektorok között.
  • A HNSW vagy IVF fél pontosságú használata lehetővé teszi a vektorok indexelését akár 4000 dimenzióban.
  • Tömörítés nélkül az indexelés alapértelmezett vektordimenziója 2000.
  • Az indexelés útvonalonként csak egy vektorra vonatkozik.
  • Vektorútvonalonként csak egy indexet hozhat létre.

Összefoglalás

Ez az útmutató bemutatja, hogyan hozhat létre vektorindexet, adhat hozzá vektoradatokat tartalmazó dokumentumokat, végezhet hasonlósági keresést, és hogyan kérdezheti le az indexdefiníciót. Az integrált vektoradatbázis használatával hatékonyan tárolhatja, indexelheti és lekérdezheti a nagy dimenziójú vektoradatokat közvetlenül az Azure DocumentDB-ben. Lehetővé teszi az adatok teljes potenciáljának kihasználását vektoros beágyazásokon keresztül, és lehetővé teszi, hogy pontosabb, hatékonyabb és hatékonyabb alkalmazásokat hozzon létre.

Következő lépés