Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Figyelmeztetés
Az SQL Server Vector Store funkciója előzetes verzióban érhető el, és a kompatibilitástörő módosításokat igénylő fejlesztések még korlátozott körülmények között előfordulhatnak a kiadás előtt.
Figyelmeztetés
A Szemantic Kernel Vector Store funkció előzetes verzióban érhető el, és a kompatibilitástörő módosításokat igénylő fejlesztések még korlátozott körülmények között előfordulhatnak a kiadás előtt.
Figyelmeztetés
A Szemantic Kernel Vector Store funkció előzetes verzióban érhető el, és a kompatibilitástörő módosításokat igénylő fejlesztések még korlátozott körülmények között előfordulhatnak a kiadás előtt.
Áttekintés
Az SQL Server Vector Store-összekötő az SQL Serveren lévő adatok elérésére és kezelésére használható. Az összekötő a következő jellemzőkkel rendelkezik.
Funkcióterület | Támogatás |
---|---|
A gyűjtemény a következőkre vonatkozik: | SQL Server-tábla |
Támogatott kulcstulajdonság-típusok |
|
Támogatott adattulajdonság-típusok |
|
Támogatott vektortulajdonság-típusok |
|
Támogatott indextípusok |
|
Támogatott távolsági függvények |
|
Több vektort támogat egy rekordban | Igen |
Támogatott az indexeltség? | Igen |
Támogatott aFullTextIndexed? | Nem |
A StorageName támogatva van? | Igen |
"Támogatott a HybridSearch?" | Nem |
Kezdő lépések
Adja hozzá az SQL Sever Vector Store-összekötő NuGet-csomagját a projekthez.
dotnet add package Microsoft.SemanticKernel.Connectors.SqlServer --prerelease
A vektortárat hozzáadhatja a függőséginjektálási tárolóhoz a IServiceCollection
Semantic Kernel által biztosított kiterjesztési módszerekkel.
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>")
Közvetlenül létrehozhat egy Sql Server Vector Store-példányt.
using Microsoft.SemanticKernel.Connectors.SqlServer;
var vectorStore = new SqlServerVectorStore("<connectionstring>");
Egy nevesített gyűjteményre mutató közvetlen hivatkozás is létrehozható.
using Microsoft.SemanticKernel.Connectors.SqlServer;
var collection = new SqlServerCollection<string, Hotel>("<connectionstring>", "skhotels");
Adatleképezés
Az SQL Server Vector Store-összekötő alapértelmezett leképezőt biztosít az adatmodellből a tárolóba való leképezéskor. Ez a leképező az adatmodell tulajdonságainak listáját közvetlenül az SQL Server oszlopaira konvertálja.
Tulajdonságnév módosítása
Megadhat felülbírálási tulajdonságneveket a tárban, amelyek eltérnek az adatmodell tulajdonságnevétől.
A tulajdonságnév felülírása az StorageName
beállítással történik az adatmodell tulajdonságainak attribútumai vagy a rekorddefiníció által.
Íme egy példa egy olyan adatmodellre, amelynek attribútumaira a StorageName
van megadva, és amely így jelenik meg egy SQL Server-parancsban.
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])
);
Áttekintés
Az SQL Server Vector Store-összekötő a Szemantic Kernel által biztosított Vector Store-implementáció, amely az Azure SQL-t használja vektortárolóként. Ha a helyszíni SQL Server támogatja a vektorokat, azzal is használható.
Az összekötő a következő jellemzőkkel rendelkezik.
Funkcióterület | Támogatás |
---|---|
A gyűjtemény a következőkre vonatkozik: | Táblázatos szótár |
Támogatott kulcstulajdonság-típusok |
|
Támogatott adattulajdonság-típusok | Bármilyen típus |
Támogatott vektortulajdonság-típusok |
|
Támogatott indextípusok |
|
Támogatott távolsági függvények |
|
Több vektort támogat egy rekordban | Igen |
Támogatott a szűrhetőség? | Igen |
Támogatva van a teljes szöveges kereshetőség? | Nem |
Kezdő lépések
Adja hozzá a szemantikus kernelcsomagot a projekthez.
pip install semantic-kernel[sql]
Az SQL Server-összekötő a pyodbc-csomagot használja az SQL Serverhez való csatlakozáshoz. Az extra telepíti a csomagot, de az SQL Server ODBC-illesztőjét külön kell telepítenie, ez platformonként eltér, a részletekért tekintse meg az Azure SQL dokumentációját .
Ahhoz, hogy a tároló és a gyűjtemény működjön, kapcsolati sztringre van szüksége, ezt átadhatja a konstruktornak, vagy beállíthatja a környezeti változóban SQL_SERVER_CONNECTION_STRING
. A vektorok megfelelő kezelése érdekében a LongAsMax=yes
beállítás hozzáadódik, ha nem található. Használhatja a felhasználónevet/jelszót vagy az integrált biztonságot; az utóbbi esetben pedig a DefaultAzureCredential
kerül használatra.
Az alábbi kódrészletekben feltételezzük, hogy rendelkezik "DataModel" nevű adatmodell-osztálysal.
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)
Egy nevesített gyűjteményre mutató közvetlen hivatkozás is létrehozható.
from semantic_kernel.connectors.sql_server import SqlServerCollection
vector_collection = SqlServerCollection("dbo.table_name", DataModel)
Megjegyzés: A gyűjtemény neve megadható egyszerű sztringként (például
table_name
) vagy teljes névként (pl.dbo.table_name
). Az utóbbi használata javasolt a kétértelműség elkerülése érdekében, ha nincs megadva séma, az alapértelmezett séma (dbo
) lesz használva.
Ha a kapcsolatra vonatkozó konkrét követelményekkel rendelkezik, egy objektumot pyodbc.Connection
is átadhat a SqlServerStore
konstruktornak. Ez lehetővé teszi egyéni kapcsolati sztring vagy más kapcsolati beállítások használatát:
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)
Győződjön meg arról, hogy saját maga zárja be a kapcsolatot, mivel az áruház vagy a gyűjtemény ezt nem teszi meg Önnek.
Egyéni lekérdezések létrehozása
Az SQL Server-összekötő a lapos index típusára korlátozódik.
A ensure_collection_exists
metódus SqlServerCollection
lehetővé teszi, hogy egyet vagy több egyéni lekérdezést adjon meg a gyűjtemény létrehozásához. A lekérdezések végrehajtása az átadásuk sorrendjében történik, eredmény nem lesz visszaadva.
Ha ez megtörtént, nincs garancia arra, hogy a többi módszer továbbra is a várt módon működik. Az összekötő nem ismeri az egyéni lekérdezéseket, és nem érvényesíti őket.
Ha vannak DataModel
id
, content
és vector
mezők, akkor például létrehozhatja a táblázatot így, hogy a tartalommezőn is létrehozhasson egy indexet:
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);"]
)
Hamarosan
Hamarosan további információk is érkeznek.