Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Uyarı
Weaviate Vector Store işlevselliği önizleme aşamasındadır ve mevcut işlevselliği bozan değişiklikler gerektiren iyileştirmeler, yayınlanmadan önce sınırlı koşullarda yine de gerçekleşebilir.
Uyarı
Semantic Kernel Vektör Depolama işlevselliği önizleme sürümündedir ve büyük değişiklikler gerektiren iyileştirmeler, sürümden önce sınırlı koşullarda gerçekleştirilebilir.
Uyarı
Semantic Kernel Vektör Depolama işlevselliği önizleme sürümündedir ve büyük değişiklikler gerektiren iyileştirmeler, sürümden önce sınırlı koşullarda gerçekleştirilebilir.
Genel bakış
Weaviate Vektör Deposu bağlayıcısı, Weaviate'deki verilere erişmek ve verileri yönetmek için kullanılabilir. Bağlayıcı aşağıdaki özelliklere sahiptir.
Özellik Alanı | Destek |
---|---|
Koleksiyon şu ile eşleştirilir | Weaviate Koleksiyonu |
Desteklenen anahtar özellik türleri | GUID |
Desteklenen veri özelliği türleri |
|
Desteklenen vektör özelliği türleri |
|
Desteklenen dizin türleri |
|
Desteklenen uzaklık işlevleri |
|
Desteklenen filtre yan tümceleri |
|
Bir kayıtta birden çok vektör destekler | Evet |
Indexed destekleniyor mu? | Evet |
IsFullTextIndexed destekleniyor mu? | Evet |
StorageName destekleniyor mu? | Hayır, bunun yerine JsonSerializerOptions ve JsonPropertyNameAttribute kullanın.
Daha fazla bilgi için buraya bakın. |
HybridSearch destekleniyor mu? | Evet |
Özellik Alanı | Destek |
---|---|
Koleksiyon şu ile eşleştirilir | Weaviate Koleksiyonu |
Desteklenen anahtar özellik türleri | GUID |
Desteklenen veri özelliği türleri |
|
Desteklenen vektör özelliği türleri |
|
Desteklenen dizin türleri |
|
Desteklenen uzaklık işlevleri |
|
Desteklenen filtre yan tümceleri |
|
Bir kayıtta birden çok vektör destekler | Evet |
Filtrelenebilir destekleniyor mu? | Evet |
IsFullTextSearchable destekleniyor mu? | Evet |
Çok yakında.
Sınırlamalar
Önemli Weaviate bağlayıcısı işlevsellik sınırlamaları.
Özellik Alanı | Geçici çözüm |
---|---|
Tek vektör nesneleri için 'vector' özelliğinin kullanılması desteklenmez | Bunun yerine 'vectors' özelliğinin kullanılması desteklenir. |
Uyarı
Weaviate'de koleksiyon adlarının büyük harfle başlaması gerekir. Büyük harf içeren bir koleksiyon adı sağlamazsanız, koleksiyonunuzu oluşturmaya çalıştığınızda Weaviate bir hata döndürür. Göreceğiniz hata, Cannot query field "mycollection" on type "GetObjectsObj". Did you mean "Mycollection"?
olup, mycollection
sizin koleksiyon adınızdır. Bu örnekte, bunun yerine koleksiyon adınızı Mycollection
olarak değiştirirseniz, bu hata düzeltilir.
Başlarken
Weaviate Vector Store bağlayıcısı NuGet paketini projenize ekleyin.
dotnet add package Microsoft.SemanticKernel.Connectors.Weaviate --prerelease
KernelBuilder
veya IServiceCollection
üzerindeki bağımlılık enjeksiyon kapsayıcısına Semantic Kernel tarafından sağlanan uzantı yöntemlerini kullanarak vektör deposunu ekleyebilirsiniz.
Weaviate vektör deposu, Weaviate hizmetiyle iletişim kurmak için bir HttpClient
kullanır. Weaviate hizmeti için URL/uç nokta sağlamaya yönelik iki seçenek vardır.
Seçenekler aracılığıyla veya HttpClient
'nin temel adresini ayarlayarak sağlanabilir.
Bu ilk örnekte, seçenekler aracılığıyla hizmet URL'sinin nasıl ayarlanacağı gösterilmektedir.
Ayrıca bu yöntemlerin bağımlılık ekleme hizmet sağlayıcısından Weaviate hizmetine çağrı yapmak için bir HttpClient
örnek alacağını unutmayın.
using Microsoft.Extensions.DependencyInjection;
using Microsoft.SemanticKernel;
// Using Kernel Builder.
var kernelBuilder = Kernel
.CreateBuilder();
kernelBuilder.Services
.AddWeaviateVectorStore(new Uri("http://localhost:8080/v1/"), apiKey: null);
using Microsoft.Extensions.DependencyInjection;
// Using IServiceCollection with ASP.NET Core.
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddWeaviateVectorStore(new Uri("http://localhost:8080/v1/"), apiKey: null);
Kendi HttpClient
öğesini belirtebileceğiniz aşırı yüklemeler de sağlanır.
Bu durumda, hizmet URL'sini seçeneği aracılığıyla HttpClient
BaseAddress
ayarlamak mümkündür.
using System.Net.Http;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.SemanticKernel;
// Using Kernel Builder.
var kernelBuilder = Kernel.CreateBuilder();
using HttpClient client = new HttpClient { BaseAddress = new Uri("http://localhost:8080/v1/") };
kernelBuilder.Services.AddWeaviateVectorStore(_ => client);
using System.Net.Http;
using Microsoft.Extensions.DependencyInjection;
// Using IServiceCollection with ASP.NET Core.
var builder = WebApplication.CreateBuilder(args);
using HttpClient client = new HttpClient { BaseAddress = new Uri("http://localhost:8080/v1/") };
builder.Services.AddWeaviateVectorStore(_ => client);
Doğrudan bir Weaviate Vektör Deposu örneği de oluşturabilirsiniz.
using System.Net.Http;
using Microsoft.SemanticKernel.Connectors.Weaviate;
var vectorStore = new WeaviateVectorStore(
new HttpClient { BaseAddress = new Uri("http://localhost:8080/v1/") });
Adlandırılmış bir koleksiyona doğrudan başvuru oluşturmak mümkündür.
using System.Net.Http;
using Microsoft.SemanticKernel.Connectors.Weaviate;
var collection = new WeaviateCollection<Guid, Hotel>(
new HttpClient { BaseAddress = new Uri("http://localhost:8080/v1/") },
"Skhotels");
Gerekirse, yukarıda belirtilen mekanizmalardan herhangi birini kullanırken bir api anahtarını bir seçenek olarak geçirmek mümkündür, örneğin.
using Microsoft.SemanticKernel;
var kernelBuilder = Kernel
.CreateBuilder();
kernelBuilder.Services
.AddWeaviateVectorStore(new Uri("http://localhost:8080/v1/"), secretVar);
Veri eşleme
Weaviate Vector Store bağlayıcısı, veri modelinden depolamaya eşlenirken varsayılan bir eşleyici sağlar. Weaviate, özelliklerin kimlik, yük verileri ve vektör gruplandırmalarına eşlenmesini gerektirir. Varsayılan eşleyici, her özelliğin türünü belirlemek ve bu eşlemeyi yapmak için model ek açıklamalarını veya kayıt tanımını kullanır.
- Anahtar olarak açıklanan veri modeli özelliği Weaviate
id
özelliğiyle eşlenir. - Veri olarak etiketlenmiş veri modeli özellikleri Weaviate
properties
nesnesine eşlenir. - Vektör olarak açıklanan veri modeli özellikleri Weaviate
vectors
nesnesine eşlenir.
Varsayılan eşleyici, depolama şemasına dönüştürmek için kullanır System.Text.Json.JsonSerializer
.
Bu, veri modeli özellik adından farklı bir depolama adı gerekiyorsa JsonPropertyNameAttribute
kullanımının desteklendiği anlamına gelir.
Aşağıda, JsonPropertyNameAttribute
set edilerek bir veri modeli örneği ve bunun Weaviate'de nasıl temsil edileceği gösterilmektedir.
using System.Text.Json.Serialization;
using Microsoft.Extensions.VectorData;
public class Hotel
{
[VectorStoreKey]
public Guid HotelId { get; set; }
[VectorStoreData(IsIndexed = true)]
public string HotelName { get; set; }
[VectorStoreData(IsFullTextIndexed = true)]
public string Description { get; set; }
[JsonPropertyName("HOTEL_DESCRIPTION_EMBEDDING")]
[VectorStoreVector(4, DistanceFunction = DistanceFunction.CosineDistance, IndexKind = IndexKind.QuantizedFlat)]
public ReadOnlyMemory<float>? DescriptionEmbedding { get; set; }
}
{
"id": "11111111-1111-1111-1111-111111111111",
"properties": { "HotelName": "Hotel Happy", "Description": "A place where everyone can be happy." },
"vectors": {
"HOTEL_DESCRIPTION_EMBEDDING": [0.9, 0.1, 0.1, 0.1],
}
}
Başlangıç Yapmak
Projenize Weaviate Vector Store bağlayıcı bağımlılıklarını ekleyin.
pip install semantic-kernel[weaviate]
Daha sonra vektör depoyu oluşturabilirsiniz; bu depo, bağlanmak için ortam ayarlarını kullanır:
Weaviate Cloud'ı kullanmak için:
- url: WEAVIATE_URL
- api_key: WEAVIATE_API_KEY
Weaviate Local (Docker kapsayıcısında Weaviate) kullanmak için:
- local_host: WEAVIATE_LOCAL_HOST
- local_port: WEAVIATE_LOCAL_PORT
- local_grpc_port: WEAVIATE_LOCAL_GRPC_PORT (Yerel gRPC bağlantı noktası ayarı)
Gömülü öğeyi kullanmak istiyorsanız:
- use_embed: WEAVIATE_USE_EMBED
Bunlar yalnızca bir defada ayarlanmalıdır, böylece yukarıdakilerden yalnızca bir set bulunur; aksi takdirde bir istisna oluşur.
from semantic_kernel.connectors.weaviate import WeaviateStore
store = WeaviateStore()
Alternatif olarak, istemci yapısı üzerinde daha fazla denetim sahibi olmak istiyorsanız kendi MongoDB istemcinizi geçirebilirsiniz.
import weaviate
from semantic_kernel.connectors.weaviate import WeaviateStore
client = weaviate.WeaviateAsyncClient(...)
store = WeaviateStore(async_client=client)
Ayrıca, mağaza olmadan doğrudan bir koleksiyon da oluşturabilirsiniz.
from semantic_kernel.connectors.weaviate import WeaviateCollection
# `hotel` is a class created with the @vectorstoremodel decorator
collection = WeaviateCollection(
collection_name="my_collection",
record_type=hotel
)
Seri -leştirme
Weaviate istemcisi, standart akışta ayrıştırılıp sözlüklere dönüştürülen kendi nesnelerini döndürür. Bu kavram hakkında daha fazla bilgi için serileştirme belgelerine bakın.
Yakında
Daha fazla bilgi yakında sunulacaktır.