Delen via


Vector Store in Azure Cosmos DB voor MongoDB vCore

VAN TOEPASSING OP: MongoDB vCore

Gebruik de Integrated Vector Database in Azure Cosmos DB voor MongoDB vCore om uw AI-toepassingen naadloos te verbinden met uw gegevens die zijn opgeslagen in Azure Cosmos DB. Deze integratie kan apps bevatten die u hebt gemaakt met behulp van Azure OpenAI-insluitingen. Met de systeemeigen geïntegreerde vectordatabase kunt u efficiënt high-dimensionale vectorgegevens opslaan, indexeren en er query's op uitvoeren die rechtstreeks zijn opgeslagen in Azure Cosmos DB voor MongoDB vCore, samen met de oorspronkelijke gegevens waaruit de vectorgegevens worden gemaakt. Het elimineert de noodzaak om uw gegevens over te dragen naar alternatieve vectorarchieven en extra kosten in rekening te brengen.

Wat is een vectorarchief?

Een vectorarchief of vectordatabase is een database die is ontworpen voor het opslaan en beheren van vector-insluitingen, die wiskundige representaties van gegevens in een hoogdimensionale ruimte zijn. In deze ruimte komt elke dimensie overeen met een functie van de gegevens en kunnen tienduizenden dimensies worden gebruikt om geavanceerde gegevens weer te geven. De positie van een vector in deze ruimte vertegenwoordigt de kenmerken. Woorden, woordgroepen of volledige documenten en afbeeldingen, audio en andere typen gegevens kunnen allemaal worden gevectoriseerd.

Hoe werkt een vectorarchief?

In een vectorarchief worden vectorzoekalgoritmen gebruikt om insluitingen te indexeren en op te vragen. Sommige bekende vectorzoekalgoritmen omvatten Hiërarchische Navigable Small World (HNSW), Omgekeerd bestand (IVF), DiskANN, enzovoort. Vectorzoekopdrachten is een methode waarmee u vergelijkbare items kunt vinden op basis van hun gegevenskenmerken in plaats van door exacte overeenkomsten in een eigenschapsveld. Deze techniek is handig in toepassingen zoals het zoeken naar vergelijkbare tekst, het vinden van gerelateerde afbeeldingen, het maken van aanbevelingen of zelfs het detecteren van afwijkingen. Het wordt gebruikt om een query uit te voeren op de vector-insluitingen (lijsten met getallen) van uw gegevens die u hebt gemaakt met behulp van een machine learning-model met behulp van een insluitings-API. Voorbeelden van insluitings-API's zijn Azure OpenAI Embeddings of Hugging Face in Azure. Vectorzoekopdrachten meten de afstand tussen de gegevensvectoren en uw queryvector. De gegevensvectoren die zich het dichtst bij uw queryvector bevinden, zijn de vectoren die het meest vergelijkbaar zijn met semantisch.

In de Integrated Vector Database in Azure Cosmos DB for MongoDB vCore kunnen insluitingen naast de oorspronkelijke gegevens worden opgeslagen, geïndexeerd en opgevraagd. Deze aanpak elimineert de extra kosten voor het repliceren van gegevens in een afzonderlijke pure vectordatabase. Bovendien houdt deze architectuur de vector insluitingen en oorspronkelijke gegevens bij elkaar, waardoor multimodale gegevensbewerkingen beter worden gefaciliteerd en betere gegevensconsistentie, schaal en prestaties mogelijk zijn.

Een vectorindex maken

Als u vectorsimiliariteit wilt doorzoeken op vectoreigenschappen in uw documenten, moet u eerst een vectorindex maken.

Een vectorindex maken met HNSW

U kunt indexen (Hiërarchische navigable Small World) maken op M40-clusterlagen en hoger. Als u de HSNW-index wilt maken, moet u een vectorindex maken met de "kind" parameter die is ingesteld op "vector-hnsw" de onderstaande sjabloon:

{ 
    "createIndexes": "<collection_name>",
    "indexes": [
        {
            "name": "<index_name>",
            "key": {
                "<path_to_property>": "cosmosSearch"
            },
            "cosmosSearchOptions": { 
                "kind": "vector-hnsw", 
                "m": <integer_value>, 
                "efConstruction": <integer_value>, 
                "similarity": "<string_value>", 
                "dimensions": <integer_value> 
            } 
        } 
    ] 
}
Veld Type Omschrijving
index_name tekenreeks Unieke naam van de index.
path_to_property tekenreeks Pad naar de eigenschap die de vector bevat. Dit pad kan een eigenschap op het hoogste niveau of een punt notatiepad naar de eigenschap zijn. Als een punt notatiepad wordt gebruikt, kunnen alle niet-leaf-elementen geen matrices zijn. Vectoren moeten worden number[] geïndexeerd en geretourneerd in zoekresultaten voor vectoren.
kind tekenreeks Type vectorindex dat moet worden gemaakt. De opties zijn vector-ivf en vector-hnsw. Opmerking vector-ivf is beschikbaar op alle clusterlagen en vector-hnsw is beschikbaar op M40-clusterlagen en hoger.
m geheel getal Het maximum aantal verbindingen per laag (16 standaard minimumwaarde is 2, maximumwaarde is 100). Hogere m is geschikt voor gegevenssets met hoge dimensionaliteit en/of hoge nauwkeurigheidsvereisten.
efConstruction geheel getal de grootte van de dynamische kandidaatlijst voor het maken van de grafiek (64 standaard is de minimumwaarde , 4maximumwaarde is 1000). Hoger efConstruction resulteert in betere indexkwaliteit en hogere nauwkeurigheid, maar het verhoogt ook de tijd die nodig is om de index te bouwen. efConstruction moet ten minste 2 * m
similarity tekenreeks Metrische gegevens over overeenkomsten die moeten worden gebruikt met de index. Mogelijke opties zijn COS (cosinusafstand), L2 (Euclidische afstand) en IP (binnenste product).
dimensions geheel getal Aantal dimensies voor vector-gelijkenis. Het maximum aantal ondersteunde dimensies is 2000.

Een vectorzoekopdracht uitvoeren met HNSW

Als u een vectorzoekopdracht wilt uitvoeren, gebruikt u de $search aggregatiepijplijnfase van de query met de cosmosSearch operator.

{
    "$search": {
        "cosmosSearch": {
            "vector": <query_vector>,
            "path": "<path_to_property>",
            "k": <num_results_to_return>,
            "efSearch": <integer_value>
        },
    }
  }
}

Veld Type Description
efSearch geheel getal De grootte van de dynamische lijst met kandidaten voor zoeken (40 standaard). Een hogere waarde biedt een betere terugroepactie ten koste van snelheid.
k geheel getal Het aantal te retourneren resultaten. deze moet kleiner zijn dan of gelijk zijn aan efSearch

Notitie

Het maken van een HSNW-index met grote gegevenssets kan ertoe leiden dat uw Azure Cosmos DB voor MongoDB vCore-resource onvoldoende geheugen heeft of de prestaties van andere bewerkingen die in uw database worden uitgevoerd, kan worden beperkt. Als u dergelijke problemen ondervindt, kunnen deze worden beperkt door uw resource te schalen naar een hogere clusterlaag of door de grootte van de gegevensset te verkleinen.

Een vectorindex maken met IVF

Als u een vectorindex wilt maken met behulp van het IVF-algoritme (omgekeerd bestand), gebruikt u de volgende createIndexes sjabloon en stelt u de "kind" paramter in op "vector-ivf":

{
  "createIndexes": "<collection_name>",
  "indexes": [
    {
      "name": "<index_name>",
      "key": {
        "<path_to_property>": "cosmosSearch"
      },
      "cosmosSearchOptions": {
        "kind": "vector-ivf",
        "numLists": <integer_value>,
        "similarity": "<string_value>",
        "dimensions": <integer_value>
      }
    }
  ]
}
Veld Type Omschrijving
index_name tekenreeks Unieke naam van de index.
path_to_property tekenreeks Pad naar de eigenschap die de vector bevat. Dit pad kan een eigenschap op het hoogste niveau of een punt notatiepad naar de eigenschap zijn. Als een punt notatiepad wordt gebruikt, kunnen alle niet-leaf-elementen geen matrices zijn. Vectoren moeten worden number[] geïndexeerd en geretourneerd in zoekresultaten voor vectoren.
kind tekenreeks Type vectorindex dat moet worden gemaakt. De opties zijn vector-ivf en vector-hnsw. Opmerking vector-ivf is beschikbaar op alle clusterlagen en vector-hnsw is beschikbaar op M40-clusterlagen en hoger.
numLists geheel getal Dit gehele getal is het aantal clusters dat door de IVF-index (omgekeerd bestand) wordt gebruikt om de vectorgegevens te groeperen. We raden u aan numLists om maximaal 1 miljoen documenten en sqrt(documentCount) voor meer dan 1 miljoen documenten in te stellendocumentCount/1000. Het gebruik van een numLists waarde is vergelijkbaar met het uitvoeren van 1 brute-force zoekopdrachten, die beperkte prestaties hebben.
similarity tekenreeks Metrische gegevens over overeenkomsten die moeten worden gebruikt met de index. Mogelijke opties zijn COS (cosinusafstand), L2 (Euclidische afstand) en IP (binnenste product).
dimensions geheel getal Aantal dimensies voor vector-gelijkenis. Het maximum aantal ondersteunde dimensies is 2000.

Belangrijk

Het correct instellen van de parameter numLists is belangrijk voor het bereiken van een goede nauwkeurigheid en prestaties. We raden u aan numLists om maximaal 1 miljoen documenten en sqrt(documentCount) voor meer dan 1 miljoen documenten in te stellendocumentCount/1000.

Naarmate het aantal items in uw database groeit, moet u numLists afstemmen op groter om goede latentieprestaties voor vectorzoekopdrachten te bereiken.

Als u experimenteert met een nieuw scenario of een kleine demo maakt, kunt u beginnen met het numLists1 uitvoeren van een brute-force zoekopdracht op alle vectoren. Dit moet u de meest nauwkeurige resultaten van de vectorzoekopdracht bieden, maar houd er rekening mee dat de zoeksnelheid en latentie traag zijn. Na de eerste installatie moet u de numLists parameter afstemmen met behulp van de bovenstaande richtlijnen.

Een vectorzoekopdracht uitvoeren met IVF

Als u een vectorzoekopdracht wilt uitvoeren, gebruikt u de fase van de $search aggregatiepijplijn in een MongoDB-query. Als u de cosmosSearch index wilt gebruiken, gebruikt u de nieuwe cosmosSearch operator.

{
  {
  "$search": {
    "cosmosSearch": {
        "vector": <query_vector>,
        "path": "<path_to_property>",
        "k": <num_results_to_return>,
      },
      "returnStoredSource": True }},
  {
    "$project": { "<custom_name_for_similarity_score>": {
           "$meta": "searchScore" },
            "document" : "$$ROOT"
        }
  }
}

Als u de overeenkomstenscore (searchScore) samen met de documenten die door de vectorzoekopdracht zijn gevonden, wilt ophalen, gebruikt u de operator om deze $project op te nemen searchScore en de naam ervan te wijzigen zoals <custom_name_for_similarity_score> in de resultaten. Vervolgens wordt het document ook als geneste object geprojecteerd. Houd er rekening mee dat de overeenkomstscore wordt berekend met behulp van de metrische waarde die is gedefinieerd in de vectorindex.

Belangrijk

Vectoren moeten worden number[] geïndexeerd. Als u een ander type gebruikt, zoals double[], voorkomt u dat het document wordt geïndexeerd. Niet-geïndexeerde documenten worden niet geretourneerd in het resultaat van een vectorzoekactie.

Voorbeeld van een HNSW-index.

In de volgende voorbeelden ziet u hoe u vectoren indexeert, documenten toevoegt die vectoreigenschappen hebben, een vectorzoekopdracht uitvoert en de indexconfiguratie ophaalt.

use test;

db.createCollection("exampleCollection");

db.runCommand({ 
    "createIndexes": "exampleCollection",
    "indexes": [
        {
            "name": "VectorSearchIndex",
            "key": {
                "contentVector": "cosmosSearch"
            },
            "cosmosSearchOptions": { 
                "kind": "vector-hnsw", 
                "m": 16, 
                "efConstruction": 64, 
                "similarity": "COS", 
                "dimensions": 3
            } 
        } 
    ] 
});

Met deze opdracht maakt u een HNSW-index op basis van de contentVector eigenschap in de documenten die zijn opgeslagen in de opgegeven verzameling, exampleCollection. Met cosmosSearchOptions de eigenschap worden de parameters voor de HNSW-vectorindex opgegeven. Als in uw document de vector is opgeslagen in een geneste eigenschap, kunt u deze eigenschap instellen met behulp van een punt notatiepad. U kunt bijvoorbeeld gebruiken text.contentVector als contentVector een subeigenschap van text.

Vectoren toevoegen aan uw database

Als u vectoren wilt toevoegen aan de verzameling van uw database, moet u eerst de insluitingen maken met behulp van uw eigen model, Azure OpenAI Embeddings of een andere API (zoals Hugging Face in Azure). In dit voorbeeld worden nieuwe documenten toegevoegd via voorbeeld-insluitingen:

db.exampleCollection.insertMany([
  {name: "Eugenia Lopez", bio: "Eugenia is the CEO of AdvenureWorks.", vectorContent: [0.51, 0.12, 0.23]},
  {name: "Cameron Baker", bio: "Cameron Baker CFO of AdvenureWorks.", vectorContent: [0.55, 0.89, 0.44]},
  {name: "Jessie Irwin", bio: "Jessie Irwin is the former CEO of AdventureWorks and now the director of the Our Planet initiative.", vectorContent: [0.13, 0.92, 0.85]},
  {name: "Rory Nguyen", bio: "Rory Nguyen is the founder of AdventureWorks and the president of the Our Planet initiative.", vectorContent: [0.91, 0.76, 0.83]},
]);

Als u doorgaat met het laatste voorbeeld, maakt u een andere vector. queryVector Vectorzoekopdrachten meten de afstand tussen queryVector en de vectoren in het contentVector pad van uw documenten. U kunt het aantal resultaten instellen dat de zoekopdracht retourneert door de parameter kin te stellen, die hier is ingesteld 2 . U kunt ook instellen efSearch, wat een geheel getal is dat de grootte van de kandidaatvectorlijst bepaalt. Een hogere waarde kan de nauwkeurigheid verbeteren, maar de zoekopdracht zal hierdoor langzamer zijn. Dit is een optionele parameter met een standaardwaarde van 40.

const queryVector = [0.52, 0.28, 0.12];
db.exampleCollection.aggregate([
  {
    "$search": {
        "cosmosSearch": {
            "vector": "queryVector",
            "path": "contentVector",
            "k": 2,
            "efSearch": 40
        },
    }
  }
}
]);

In dit voorbeeld wordt een vectorzoekopdracht uitgevoerd met behulp van queryVector als invoer via de Mongo-shell. Het zoekresultaat is een lijst met twee items die het meest lijken op de queryvector, gesorteerd op hun overeenkomstenscores.

[
  {
    similarityScore: 0.9465376,
    document: {
      _id: ObjectId("645acb54413be5502badff94"),
      name: 'Eugenia Lopez',
      bio: 'Eugenia is the CEO of AdvenureWorks.',
      vectorContent: [ 0.51, 0.12, 0.23 ]
    }
  },
  {
    similarityScore: 0.9006955,
    document: {
      _id: ObjectId("645acb54413be5502badff97"),
      name: 'Rory Nguyen',
      bio: 'Rory Nguyen is the founder of AdventureWorks and the president of the Our Planet initiative.',
      vectorContent: [ 0.91, 0.76, 0.83 ]
    }
  }
]

Vectorindexdefinities ophalen

Gebruik de listIndexes opdracht om uw vectorindexdefinitie op te halen uit de verzameling:

db.exampleCollection.getIndexes();

In dit voorbeeld vectorIndex wordt geretourneerd met alle cosmosSearch parameters die zijn gebruikt om de index te maken:

[
  { v: 2, key: { _id: 1 }, name: '_id_', ns: 'test.exampleCollection' },
  {
    v: 2,
    key: { contentVector: 'cosmosSearch' },
    name: 'vectorSearchIndex',
    cosmosSearch: {
      kind: 'vector-hnsw',
      m: 40,
      efConstruction: 64
      similarity: 'COS',
      dimensions: 3
    },
    ns: 'test.exampleCollection'
  }
]

Voorbeeld van een IVF-index

In de volgende voorbeelden ziet u hoe u vectoren indexeert, documenten toevoegt die vectoreigenschappen hebben, een vectorzoekopdracht uitvoert en de indexconfiguratie ophaalt.

Een vectorindex maken

use test;

db.createCollection("exampleCollection");

db.runCommand({
  createIndexes: 'exampleCollection',
  indexes: [
    {
      name: 'vectorSearchIndex',
      key: {
        "vectorContent": "cosmosSearch"
      },
      cosmosSearchOptions: {
        kind: 'vector-ivf',
        numLists: 3,
        similarity: 'COS',
        dimensions: 3
      }
    }
  ]
});

Met deze opdracht maakt u een vector-ivf index op basis van de vectorContent eigenschap in de documenten die zijn opgeslagen in de opgegeven verzameling. exampleCollection De cosmosSearchOptions eigenschap geeft de parameters voor de IVF-vectorindex op. Als in uw document de vector is opgeslagen in een geneste eigenschap, kunt u deze eigenschap instellen met behulp van een punt notatiepad. U kunt bijvoorbeeld gebruiken text.vectorContent als vectorContent een subeigenschap van text.

Vectoren toevoegen aan uw database

Als u vectoren wilt toevoegen aan de verzameling van uw database, moet u eerst de insluitingen maken met behulp van uw eigen model, Azure OpenAI Embeddings of een andere API (zoals Hugging Face in Azure). In dit voorbeeld worden nieuwe documenten toegevoegd via voorbeeld-insluitingen:

db.exampleCollection.insertMany([
  {name: "Eugenia Lopez", bio: "Eugenia is the CEO of AdvenureWorks.", vectorContent: [0.51, 0.12, 0.23]},
  {name: "Cameron Baker", bio: "Cameron Baker CFO of AdvenureWorks.", vectorContent: [0.55, 0.89, 0.44]},
  {name: "Jessie Irwin", bio: "Jessie Irwin is the former CEO of AdventureWorks and now the director of the Our Planet initiative.", vectorContent: [0.13, 0.92, 0.85]},
  {name: "Rory Nguyen", bio: "Rory Nguyen is the founder of AdventureWorks and the president of the Our Planet initiative.", vectorContent: [0.91, 0.76, 0.83]},
]);

Een vectorzoekopdracht uitvoeren

Als u een vectorzoekopdracht wilt uitvoeren, gebruikt u de fase van de $search aggregatiepijplijn in een MongoDB-query. Als u de cosmosSearch index wilt gebruiken, gebruikt u de nieuwe cosmosSearch operator.

{
  {
  "$search": {
    "cosmosSearch": {
        "vector": <vector_to_search>,
        "path": "<path_to_property>",
        "k": <num_results_to_return>,
      },
      "returnStoredSource": True }},
  {
    "$project": { "<custom_name_for_similarity_score>": {
           "$meta": "searchScore" },
            "document" : "$$ROOT"
        }
  }
}

Als u de overeenkomstenscore (searchScore) samen met de documenten die door de vectorzoekopdracht zijn gevonden, wilt ophalen, gebruikt u de operator om deze $project op te nemen searchScore en de naam ervan te wijzigen zoals <custom_name_for_similarity_score> in de resultaten. Vervolgens wordt het document ook als geneste object geprojecteerd. Houd er rekening mee dat de overeenkomstscore wordt berekend met behulp van de metrische waarde die is gedefinieerd in de vectorindex.

Als u doorgaat met het laatste voorbeeld, maakt u een andere vector. queryVector Vectorzoekopdrachten meten de afstand tussen queryVector en de vectoren in het vectorContent pad van uw documenten. U kunt het aantal resultaten instellen dat de zoekopdracht retourneert door de parameter kin te stellen, die hier is ingesteld 2 . U kunt ook een geheel getal instellen nProbeswaarmee het aantal clusters in de buurt wordt bepaald dat in elke zoekopdracht wordt geïnspecteerd. Een hogere waarde kan de nauwkeurigheid verbeteren, maar de zoekopdracht zal hierdoor langzamer zijn. Dit is een optionele parameter met een standaardwaarde van 1 en kan niet groter zijn dan de numLists waarde die is opgegeven in de vectorindex.

const queryVector = [0.52, 0.28, 0.12];
db.exampleCollection.aggregate([
  {
    $search: {
      "cosmosSearch": {
        "vector": queryVector,
        "path": "vectorContent",
        "k": 2
      },
    "returnStoredSource": true }},
  {
    "$project": { "similarityScore": {
           "$meta": "searchScore" },
            "document" : "$$ROOT"
        }
  }
]);

In dit voorbeeld wordt een vectorzoekopdracht uitgevoerd met behulp van queryVector als invoer via de Mongo-shell. Het zoekresultaat is een lijst met twee items die het meest lijken op de queryvector, gesorteerd op hun overeenkomstenscores.

[
  {
    similarityScore: 0.9465376,
    document: {
      _id: ObjectId("645acb54413be5502badff94"),
      name: 'Eugenia Lopez',
      bio: 'Eugenia is the CEO of AdvenureWorks.',
      vectorContent: [ 0.51, 0.12, 0.23 ]
    }
  },
  {
    similarityScore: 0.9006955,
    document: {
      _id: ObjectId("645acb54413be5502badff97"),
      name: 'Rory Nguyen',
      bio: 'Rory Nguyen is the founder of AdventureWorks and the president of the Our Planet initiative.',
      vectorContent: [ 0.91, 0.76, 0.83 ]
    }
  }
]

Vectorindexdefinities ophalen

Gebruik de listIndexes opdracht om uw vectorindexdefinitie op te halen uit de verzameling:

db.exampleCollection.getIndexes();

In dit voorbeeld vectorIndex wordt geretourneerd met alle cosmosSearch parameters die zijn gebruikt om de index te maken:

[
  { v: 2, key: { _id: 1 }, name: '_id_', ns: 'test.exampleCollection' },
  {
    v: 2,
    key: { vectorContent: 'cosmosSearch' },
    name: 'vectorSearchIndex',
    cosmosSearch: {
      kind: 'vector-ivf',
      numLists: 3,
      similarity: 'COS',
      dimensions: 3
    },
    ns: 'test.exampleCollection'
  }
]

Gefilterde vectorzoekopdrachten (preview)

U kunt nu vectorzoekopdrachten uitvoeren met elk ondersteund queryfilter zoals $lt, , $eq$lte, $neq, $gte, $gt, , $inen $nin$regex. Schakel de functie 'filtervectorzoekfunctie' in op het tabblad Preview-functies van uw Azure-abonnement. Meer informatie over preview-functies vindt u hier.

Eerst moet u een index voor uw filter definiëren, naast een vectorindex. U kunt bijvoorbeeld de filterindex voor een eigenschap definiëren

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

Vervolgens kunt u de "filter" term toevoegen aan uw vectorzoekopdracht, zoals hieronder wordt weergegeven. In dit voorbeeld zoekt het filter naar documenten waarin de "title" eigenschap zich niet in de lijst van ["not in this text", "or this text"]bevindt.


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' }
}
]);

Belangrijk

In de preview-fase moet u mogelijk de parameters voor de vectorindex aanpassen om een hogere nauwkeurigheid te bereiken. Als u bijvoorbeeld mefConstructionefSearch HNSW of IVF gebruikt, numListsnProbes kan dit leiden tot betere resultaten. U moet uw configuratie testen voordat u deze gebruikt om ervoor te zorgen dat de resultaten bevredigend zijn.

LLM Orchestration-hulpprogramma's gebruiken

Gebruiken als een vectordatabase met Semantische kernel

Gebruik Semantic Kernel om uw gegevens op te halen uit Azure Cosmos DB voor MongoDB vCore en uw LLM. U vindt hier meer informatie.

https://github.com/microsoft/semantic-kernel/tree/main/python/semantic_kernel/connectors/memory/azure_cosmosdb

Gebruiken als vectordatabase met LangChain

Gebruik LangChain om uw gegevens op te halen uit Azure Cosmos DB voor MongoDB vCore en uw LLM. U vindt hier meer informatie.

Gebruiken als een semantische cache met LangChain

Gebruik LangChain en Azure Cosmos DB voor MongoDB (vCore) om Semantische caching in te delen met behulp van eerder toegewezen LLM-respones waarmee u llm-API-kosten kunt besparen en latentie voor antwoorden kunt verminderen. U vindt hier meer informatie

Kenmerken en beperkingen

  • Ondersteunde metrische gegevens over afstand: L2 (Euclidean), binnenproduct en cosinus.
  • Ondersteunde indexeringsmethoden: IVFFLAT (GA) en HSNW (preview)
  • Indexeringsvectoren tot 2000 dimensies in grootte.
  • Indexering is van toepassing op slechts één vector per pad.
  • Er kan slechts één index per vectorpad worden gemaakt.

Samenvatting

In deze handleiding ziet u hoe u een vectorindex maakt, documenten toevoegt die vectorgegevens bevatten, een overeenkomstenzoekopdracht uitvoert en de indexdefinitie ophaalt. Met behulp van onze geïntegreerde vectordatabase kunt u efficiënt high-dimensionale vectorgegevens opslaan, indexeren en er query's op uitvoeren in Azure Cosmos DB voor MongoDB vCore. Hiermee kunt u het volledige potentieel van uw gegevens ontgrendelen via vector-insluitingen en kunt u hiermee nauwkeurigere, efficiënte en krachtige toepassingen bouwen.

Volgende stap