Anlam Çekirdeğinde Metin Ekleme oluşturma

Metin ekleme oluşturma ile, vektörler (yani eklemeler) oluşturmak için bir yapay zeka modeli kullanabilirsiniz. Bu vektörler, metnin anlamsal anlamını, matematiksel denklemlerin özgün metnin benzerliğini karşılaştırmak için iki vektörde kullanılabilecek şekilde kodlar. Bu, kullanıcı sorgusuyla ilgili metinler için bilgi veritabanında arama yapmak istediğimiz Alma Artırılmış Oluşturma (RAG) gibi senaryolar için kullanışlıdır. Ardından, kullanıcı sorgusunu yanıtlarken yapay zeka modelinin daha fazla bağlama sahip olması için eşleşen bilgiler Sohbet Tamamlama'ya giriş olarak sağlanabilir.

Ekleme modelini seçerken aşağıdakileri göz önünde bulundurmanız gerekir:

  • Model tarafından oluşturulan vektörlerin boyutu nedir ve bu, vektör depolama maliyetinizi etkileyeceğinden yapılandırılabilir mi?
  • Oluşturulan vektörler hangi tür öğeleri içerir, örneğin float32, float16, vb. vektör depolama maliyetinizi etkiler.
  • Vektörleri ne kadar hızlı oluşturur?
  • Neslin maliyeti ne kadardır?

Bahşiş

Vektörleri depolama ve arama hakkında daha fazla bilgi için bkz. AnlamSal Çekirdek Vektör Deposu bağlayıcıları nedir?

Bahşiş

Semantik Çekirdek'te vektör depolarıyla RAG kullanma hakkında daha fazla bilgi için bkz. Semantik Çekirdek ile Vektör Depolarını Kullanma ve Semantik Çekirdek Metin Arama Eklentileri Nedir?

Yerel ortamınızı ayarlama

Yapay zeka hizmetlerinden bazıları yerel olarak barındırılabilir ve biraz kurulum gerektirebilir. Aşağıda bunu destekleyenler için yönergeler yer almaktadır.

Yerel kurulum yok.

Gerekli paketleri yükleme

Çekirdeğinize gömme oluşturma işlemi eklemeden önce gerekli paketleri yüklemeniz gerekir. Her bir yapay zeka hizmet sağlayıcısı için yüklemeniz gereken paketler aşağıda belirtilmiştir.

dotnet add package Microsoft.SemanticKernel.Connectors.AzureOpenAI

Metin gömme oluşturma hizmetleri geliştirme

Artık gerekli paketleri yüklediğinize göre, bir metin ekleme oluşturma hizmeti oluşturabilirsiniz. Anlam Çekirdeği'ni kullanarak metin oluşturan gömme oluşturma hizmetlerini gerçekleştirmek için kullanabileceğiniz çeşitli yollar aşağıda verilmiştir.

Doğrudan çekirdeğe ekleme

Metin ekleme oluşturma hizmeti eklemek için aşağıdaki kodu kullanarak çekirdeğin iç hizmet sağlayıcısına ekleyebilirsiniz.

Önemli

Azure OpenAI gömme oluşturma bağlayıcısı şu anda deneyseldir. Bunu kullanmak için #pragma warning disable SKEXP0010eklemeniz gerekir.

using Microsoft.SemanticKernel;

#pragma warning disable SKEXP0010
IKernelBuilder kernelBuilder = Kernel.CreateBuilder();
kernelBuilder.AddAzureOpenAITextEmbeddingGeneration(
    deploymentName: "NAME_OF_YOUR_DEPLOYMENT", // Name of deployment, e.g. "text-embedding-ada-002".
    endpoint: "YOUR_AZURE_ENDPOINT",           // Name of Azure OpenAI service endpoint, e.g. https://myaiservice.openai.azure.com.
    apiKey: "YOUR_API_KEY",
    modelId: "MODEL_ID",          // Optional name of the underlying model if the deployment name doesn't match the model name, e.g. text-embedding-ada-002.
    serviceId: "YOUR_SERVICE_ID", // Optional; for targeting specific services within Semantic Kernel.
    httpClient: new HttpClient(), // Optional; if not provided, the HttpClient from the kernel will be used.
    dimensions: 1536              // Optional number of dimensions to generate embeddings with.
);
Kernel kernel = kernelBuilder.Build();

Bağımlılık enjeksiyonunu kullanma

Bağımlılık ekleme kullanıyorsanız, büyük olasılıkla metin ekleme oluşturma hizmetlerinizi doğrudan hizmet sağlayıcısına eklemek istersiniz. Yerleştirme oluşturma hizmetlerinizin tekil örneklerini oluşturmak ve bunları geçici çekirdeklerde yeniden kullanmak istiyorsanız bu yararlı olur.

Önemli

Azure OpenAI gömme oluşturma bağlayıcısı şu anda deneyseldir. Bunu kullanmak için #pragma warning disable SKEXP0010eklemeniz gerekir.

using Microsoft.SemanticKernel;

var builder = Host.CreateApplicationBuilder(args);

#pragma warning disable SKEXP0010
builder.Services.AddAzureOpenAITextEmbeddingGeneration(
    deploymentName: "NAME_OF_YOUR_DEPLOYMENT", // Name of deployment, e.g. "text-embedding-ada-002".
    endpoint: "YOUR_AZURE_ENDPOINT",           // Name of Azure OpenAI service endpoint, e.g. https://myaiservice.openai.azure.com.
    apiKey: "YOUR_API_KEY",
    modelId: "MODEL_ID",          // Optional name of the underlying model if the deployment name doesn't match the model name, e.g. text-embedding-ada-002.
    serviceId: "YOUR_SERVICE_ID", // Optional; for targeting specific services within Semantic Kernel.
    dimensions: 1536              // Optional number of dimensions to generate embeddings with.
);

builder.Services.AddTransient((serviceProvider)=> {
    return new Kernel(serviceProvider);
});

Bağımsız örnekler oluşturma

Son olarak, hizmetin örneklerini doğrudan oluşturabilirsiniz, böylece bunları daha sonra bir çekirdeğe ekleyebilir veya hiç çekirdek ya da hizmet sağlayıcısına enjekte etmeden doğrudan kodunuzda kullanabilirsiniz.

Önemli

Azure OpenAI gömme oluşturma bağlayıcısı şu anda deneyseldir. Bunu kullanmak için #pragma warning disable SKEXP0010eklemeniz gerekir.

using Microsoft.SemanticKernel.Connectors.AzureOpenAI;

#pragma warning disable SKEXP0010
AzureOpenAITextEmbeddingGenerationService textEmbeddingGenerationService = new (
    deploymentName: "NAME_OF_YOUR_DEPLOYMENT", // Name of deployment, e.g. "text-embedding-ada-002".
    endpoint: "YOUR_AZURE_ENDPOINT",           // Name of Azure OpenAI service endpoint, e.g. https://myaiservice.openai.azure.com.
    apiKey: "YOUR_API_KEY",
    modelId: "MODEL_ID",          // Optional name of the underlying model if the deployment name doesn't match the model name, e.g. text-embedding-ada-002.
    httpClient: new HttpClient(), // Optional; if not provided, the HttpClient from the kernel will be used.
    dimensions: 1536              // Optional number of dimensions to generate embeddings with.
);

Metin ekleme oluşturma hizmetlerini kullanma

Tüm metin ekleme oluşturma hizmetleri, sağlanan ITextEmbeddingGenerationService değerlerden GenerateEmbeddingsAsync vektörler oluşturabilen tek bir yöntem ReadOnlyMemory<float> sahip string uygular. GenerateEmbeddingAsync bir uzantı yöntemi, aynı eylemin tek değerli sürümleri için de kullanılabilir.

Hizmeti birden çok değerle çağırma örneği aşağıda verilmiştir.

IList<ReadOnlyMemory<float>> embeddings =
    await textEmbeddingGenerationService.GenerateEmbeddingsAsync(
    [
        "sample text 1",
        "sample text 2"
    ]);

Burada, hizmeti tek bir değerle çağırma örneği verilmiştir.

using Microsoft.SemanticKernel.Embeddings;

ReadOnlyMemory<float> embedding =
    await textEmbeddingGenerationService.GenerateEmbeddingAsync("sample text");

Çok yakında

Daha fazla bilgi yakında sunulacaktır.

Çok yakında

Daha fazla bilgi yakında sunulacaktır.