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ı
Sql Server Vektör Deposu işlevselliği önizleme aşamasındadır ve uyumluluğu bozabilecek değişiklikler gerektiren iyileştirmeler, sürümden önce sınırlı durumlarda yine de gerçekleşebilir.
Uyarı
Semantik Çekirdek Vektör Deposu işlevselliği önizleme aşamasındadır ve köklü değişiklikler gerektiren iyileştirmeler, sürümden önce sınırlı durumlarda yine de gerçekleşebilir.
Uyarı
Semantik Çekirdek Vektör Deposu işlevselliği önizleme aşamasındadır ve köklü değişiklikler gerektiren iyileştirmeler, sürümden önce sınırlı durumlarda yine de gerçekleşebilir.
Genel Bakış
SQL Server Vektör Deposu bağlayıcısı, SQL Server'daki verilere erişmek ve verileri yönetmek için kullanılabilir. Bağlayıcı aşağıdaki özelliklere sahiptir.
Özellik Alanı | Destek |
---|---|
Koleksiyon şu öğeleri haritalıyor | SQL Server tablosu |
Desteklenen anahtar özellik türleri |
|
Desteklenen veri özelliği türleri |
|
Desteklenen vektör özelliği türleri |
|
Desteklenen dizin türleri |
|
Desteklenen uzaklık işlevleri |
|
Bir kayıtta birden çok vektör destekler | Evet |
Indexed destekleniyor mu? | Evet |
IsFullTextIndexed destekleniyor mu? | Hayı |
StorageName destekleniyor mu? | Evet |
HybridSearch destekleniyor mu? | Hayı |
Başlangıç Yapmak
PROJEnize SQL Sever Vektör Deposu bağlayıcısı NuGet paketini ekleyin.
dotnet add package Microsoft.SemanticKernel.Connectors.SqlServer --prerelease
Anlam Çekirdeği tarafından sağlanan uzantı yöntemlerini kullanarak vektör depoyu IServiceCollection
bağımlılık ekleme kapsayıcısına ekleyebilirsiniz.
using Microsoft.Extensions.DependencyInjection;
// Using IServiceCollection with ASP.NET Core.
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddSqlServerVectorStore(_ => "<connectionstring>");
using Microsoft.Extensions.DependencyInjection;
using Microsoft.SemanticKernel;
// Using IServiceCollection with ASP.NET Core.
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddSqlServerVectorStore(_ => "<connectionstring>")
Doğrudan bir Sql Server Vektör Deposu örneği oluşturabilirsiniz.
using Microsoft.SemanticKernel.Connectors.SqlServer;
var vectorStore = new SqlServerVectorStore("<connectionstring>");
Adlandırılmış bir koleksiyona doğrudan başvuru oluşturmak mümkündür.
using Microsoft.SemanticKernel.Connectors.SqlServer;
var collection = new SqlServerCollection<string, Hotel>("<connectionstring>", "skhotels");
Veri eşleme
SQL Server Vektör Deposu bağlayıcısı, veri modelinden depolamaya eşlerken varsayılan bir eşleyici sağlar. Bu eşleyici, veri modelindeki özellik listesini SQL Server'daki sütunlara doğrudan dönüştürme işlemi yapar.
Özellik adı geçersiz kılma
Farklı bir depolama alanında kullanmak için, veri modelindeki özellik adlarından farklı geçersiz kılma özellik adları sağlayabilirsiniz.
Özellik adının geçersiz kılınması, StorageName
seçeneğinin veri modeli özellik öznitelikleri veya kayıt tanımını kullanarak ayarlanması ile yapılır.
Öznitelikleri üzerinde ayarlanmış bir veri modeli StorageName
örneği ve bunun SQL Server komutunda nasıl gösterileceği aşağıda verilmiştir.
using Microsoft.Extensions.VectorData;
public class Hotel
{
[VectorStoreKey]
public ulong HotelId { get; set; }
[VectorStoreData(StorageName = "hotel_name")]
public string? HotelName { get; set; }
[VectorStoreData(StorageName = "hotel_description")]
public string? Description { get; set; }
[VectorStoreVector(Dimensions: 4, DistanceFunction = DistanceFunction.CosineDistance)]
public ReadOnlyMemory<float>? DescriptionEmbedding { get; set; }
}
CREATE TABLE Hotel (
[HotelId] BIGINT NOT NULL,
[hotel_name] NVARCHAR(MAX),
[hotel_description] NVARCHAR(MAX),
[DescriptionEmbedding] VECTOR(4),
PRIMARY KEY ([HotelId])
);
Genel Bakış
SQL Server Vektör Deposu bağlayıcısı, Vektör Deposu olarak Azure SQL kullanan Anlam Çekirdeği tarafından sağlanan bir Vektör Deposu uygulamasıdır. SQL Server yerel sunucularda vektörleri desteklediğinde bununla da kullanılabilir.
Bağlayıcı aşağıdaki özelliklere sahiptir.
Özellik Alanı | Destek |
---|---|
Koleksiyon şu öğeleri haritalıyor | Tablo biçiminde sözlük |
Desteklenen anahtar özellik türleri |
|
Desteklenen veri özelliği türleri | Herhangi bir tür |
Desteklenen vektör özelliği türleri |
|
Desteklenen dizin türleri |
|
Desteklenen uzaklık işlevleri |
|
Bir kayıtta birden çok vektör destekler | Evet |
is_filterable özelliği destekleniyor mu? | Evet |
Tam metin araması yapılabiliyor mu? | Hayı |
Başlangıç Yapmak
Semantik Çekirdek paketini projenize ekleyin.
pip install semantic-kernel[sql]
SQL Server bağlayıcısı, SQL Server'a bağlanmak için pyodbc paketini kullanır. Ek paket yüklenir, ancak SQL Server için ODBC sürücüsünü ayrı olarak yüklemeniz gerekir, bu platforma göre farklılık gösterir, ayrıntılar için Azure SQL Belgeleri'ne bakın .
Deponun ve koleksiyonun çalışması için bir bağlantı dizesi gerekir; bu oluşturucuya geçirilebilir veya ortam değişkeninde SQL_SERVER_CONNECTION_STRING
ayarlanabilir. Vektörlerle düzgün şekilde başa çıkmak için, LongAsMax=yes
bulunamazsa seçenek eklenir. Ayrıca hem kullanıcı adı/parola hem de tümleşik güvenlik kullanabilir, ikincisi DefaultAzureCredential
için kullanılır.
Aşağıdaki kod parçacıklarında, 'DataModel' adlı bir veri modeli sınıfı tanımladığınız varsayılır.
from semantic_kernel.connectors.sql_server import SqlServerStore
vector_store = SqlServerStore()
# OR
vector_store = SqlServerStore(connection_string="Driver={ODBC Driver 18 for SQL Server};Server=server_name;Database=database_name;UID=user;PWD=password;LongAsMax=yes;")
vector_collection = vector_store.get_collection("dbo.table_name", DataModel)
Adlandırılmış bir koleksiyona doğrudan başvuru oluşturmak mümkündür.
from semantic_kernel.connectors.sql_server import SqlServerCollection
vector_collection = SqlServerCollection("dbo.table_name", DataModel)
Not: Koleksiyon adı basit bir dize (örn.
table_name
) veya tam ad (örneğindbo.table_name
) olarak belirtilebilir. İkincinin belirsizlikten kaçınması önerilir, şema belirtilmezse varsayılan şema (dbo
) kullanılır.
Bağlantı için belirli gereksinimleriniz olduğunda, bir pyodbc.Connection
nesneyi SqlServerStore
oluşturucuya geçirebilirsiniz. Bu, özel bir bağlantı dizesi veya diğer bağlantı seçeneklerini kullanmanıza olanak tanır:
from semantic_kernel.connectors.sql_server import SqlServerStore
import pyodbc
# Create a connection to the SQL Server database
connection = pyodbc.connect("Driver={ODBC Driver 18 for SQL Server};Server=server_name;Database=database_name;UID=user;PWD=password;LongAsMax=yes;")
# Create a SqlServerStore with the connection
vector_store = SqlServerStore(connection=connection)
Mağaza veya koleksiyon sizin için bunu yapmayacağı için bağlantıyı kendiniz kapatmanız gerekir.
Özel sorgular oluşturma
SQL Server bağlayıcısı Düz dizin türüyle sınırlıdır.
ensure_collection_exists
üzerindeki SqlServerCollection
yöntemi, koleksiyonu oluşturmak için tek veya birden çok özel sorgu geçirmenizi sağlar. Sorgular verildikleri sırayla yürütülür, sonuç döndürülmez.
Bu yapılırsa, diğer yöntemlerin beklendiği gibi çalışmaya devam ettiğinin garantisi yoktur. Bağlayıcı özel sorguların farkında değildir ve bunları doğrulamaz.
DataModel
, id
, content
ve vector
alanları varsa, örneğin içerik alanında da bir dizin oluşturmak için tabloyu aşağıdaki gibi oluşturabilirsiniz:
from semantic_kernel.connectors.sql_server import SqlServerCollection
# Create a collection with a custom query
async with SqlServerCollection("dbo.table_name", DataModel) as collection:
collection.ensure_collection_exists(
queries=["CREATE TABLE dbo.table_name (id INT PRIMARY KEY, content NVARCHAR(3000) NULL, vector VECTOR(1536) NULL ) PRIMARY KEY (id);",
"CREATE INDEX idx_content ON dbo.table_name (content);"]
)
Çok yakında
Daha fazla bilgi yakında sunulacaktır.