Sdílet prostřednictvím


Použití konektoru Azure CosmosDB MongoDB Vector Store (Preview)

Upozorňující

Funkce sémantického úložiště vektorů jádra je ve verzi Preview a vylepšení, která vyžadují zásadní změny, se můžou vyskytovat za omezených okolností před vydáním.

Přehled

Konektor Azure CosmosDB MongoDB Vector Store je možné použít k přístupu k datům v MongoDB a správě dat. Konektor má následující charakteristiky.

Oblast funkcí Technická podpora
Kolekce map na Kolekce MongoDB a index služby Azure Cosmos DB
Podporované typy vlastností klíče string
Podporované typy datových vlastností
  • string
  • int
  • long
  • double
  • float (číslo s plovoucí řádovou čárkou)
  • decimal
  • bool
  • DateTime
  • a výčty každého z těchto typů
Podporované typy vektorových vlastností
  • ReadOnlyMemory<float>
  • ReadOnlyMemory<double>
Podporované typy indexů
  • Hnsw
  • IvfFlat
Podporované funkce vzdálenosti
  • KosineDistance
  • DotProductSimilarity
  • EuclideanDistance
Podporuje více vektorů v záznamu. Ano
Je podporováno Filtrování? Ano
Podporuje se IsFullTextSearchable? No
StoragePropertyName se podporuje? Ne, místo toho použijte BsonElementAttribute. Další informace najdete tady.

Začínáme

Do projektu přidejte balíček NuGet konektoru MongoDB MongoDB Vector Store.

dotnet add package Microsoft.SemanticKernel.Connectors.AzureCosmosDBMongoDB --prerelease

Vektorové úložiště můžete přidat do kontejneru injektáže závislostí dostupného IServiceCollection v KernelBuilder kontejneru injektáže závislostí nebo do kontejneru injektáže závislostí pomocí rozšiřujících metod poskytovaných sémantickým jádrem.

using Microsoft.SemanticKernel;

// Using Kernel Builder.
var kernelBuilder = Kernel
    .CreateBuilder()
    .AddAzureCosmosDBMongoDBVectorStore(connectionString, databaseName);
using Microsoft.SemanticKernel;

// Using IServiceCollection with ASP.NET Core.
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddAzureCosmosDBMongoDBVectorStore(connectionString, databaseName);

K dispozici jsou také metody rozšíření, které nepoužívají žádné parametry. Vyžadují samostatnou registraci instance MongoDB.Driver.IMongoDatabase kontejneru injektáže závislostí.

using Microsoft.Extensions.DependencyInjection;
using Microsoft.SemanticKernel;
using MongoDB.Driver;

// Using Kernel Builder.
var kernelBuilder = Kernel.CreateBuilder();
kernelBuilder.Services.AddSingleton<IMongoDatabase>(
    sp =>
    {
        var mongoClient = new MongoClient(connectionString);
        return mongoClient.GetDatabase(databaseName);
    });
kernelBuilder.AddAzureCosmosDBMongoDBVectorStore();
using Microsoft.Extensions.DependencyInjection;
using Microsoft.SemanticKernel;
using MongoDB.Driver;

// Using IServiceCollection with ASP.NET Core.
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddSingleton<IMongoDatabase>(
    sp =>
    {
        var mongoClient = new MongoClient(connectionString);
        return mongoClient.GetDatabase(databaseName);
    });
builder.Services.AddAzureCosmosDBMongoDBVectorStore();

Instanci Azure CosmosDB MongoDB Vector Store můžete vytvořit přímo.

using Microsoft.SemanticKernel.Connectors.AzureCosmosDBMongoDB;
using MongoDB.Driver;

var mongoClient = new MongoClient(connectionString);
var database = mongoClient.GetDatabase(databaseName);
var vectorStore = new AzureCosmosDBMongoDBVectorStore(database);

Je možné vytvořit přímý odkaz na pojmenovanou kolekci.

using Microsoft.SemanticKernel.Connectors.AzureCosmosDBMongoDB;
using MongoDB.Driver;

var mongoClient = new MongoClient(connectionString);
var database = mongoClient.GetDatabase(databaseName);
var collection = new AzureCosmosDBMongoDBVectorStoreRecordCollection<Hotel>(
    database,
    "skhotels");

Mapování dat

Konektor Azure CosmosDB MongoDB Vector Store poskytuje výchozí mapovač při mapování dat z datového modelu do úložiště.

Tento mapovač provede přímý převod seznamu vlastností datového modelu na pole v MongoDB služby Azure CosmosDB a používá MongoDB.Bson.Serialization k převodu na schéma úložiště. To znamená, že použití tohoto objektu MongoDB.Bson.Serialization.Attributes.BsonElement se podporuje, pokud se vyžaduje jiný název úložiště s názvem vlastnosti datového modelu. Jedinou výjimkou je klíč záznamu, který je namapován na pole databáze s názvem _id, protože všechny záznamy MongoDB cosmos DB musí pro ID používat tento název.

Přepsání názvu vlastnosti

U vlastností dat a vektorových vlastností můžete zadat názvy polí přepsání, které se mají použít v úložišti, které se liší od názvů vlastností datového modelu. U klíčů to není podporované, protože klíč má pevný název v MongoDB.

Přepsání názvu vlastnosti se provádí nastavením atributu BsonElement u vlastností datového modelu.

Tady je příklad datového modelu se BsonElement sadou.

using Microsoft.Extensions.VectorData;

public class Hotel
{
    [VectorStoreRecordKey]
    public ulong HotelId { get; set; }

    [BsonElement("hotel_name")]
    [VectorStoreRecordData(IsFilterable = true)]
    public string HotelName { get; set; }

    [BsonElement("hotel_description")]
    [VectorStoreRecordData(IsFullTextSearchable = true)]
    public string Description { get; set; }

    [BsonElement("hotel_description_embedding")]
    [VectorStoreRecordVector(4, DistanceFunction.CosineDistance, IndexKind.Hnsw)]
    public ReadOnlyMemory<float>? DescriptionEmbedding { get; set; }
}

Již brzy

Další informace budou brzy k dispozici.

Již brzy

Další informace budou brzy k dispozici.