Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Ostrzeżenie
Funkcja sklepu Sqlite Vector Store jest dostępna w wersji zapoznawczej, a ulepszenia wymagające zmian powodujących niezgodność mogą nadal występować w ograniczonych okolicznościach przed wydaniem.
Ostrzeżenie
Funkcja semantycznego magazynu wektorów jądra jest dostępna w wersji zapoznawczej, a ulepszenia wymagające zmian powodujących niezgodność mogą nadal występować w ograniczonych okolicznościach przed wydaniem.
Ostrzeżenie
Funkcja semantycznego magazynu wektorów jądra jest dostępna w wersji zapoznawczej, a ulepszenia wymagające zmian powodujących niezgodność mogą nadal występować w ograniczonych okolicznościach przed wydaniem.
Omówienie
Łącznik SQLite Vector Store może służyć do uzyskiwania dostępu do danych w programie SQLite i zarządzania nimi. Łącznik ma następujące cechy.
Obszar funkcji | Wsparcie |
---|---|
Mapowania kolekcji na | Tabela SQLite |
Obsługiwane typy właściwości kluczy |
|
Obsługiwane typy właściwości danych |
|
Obsługiwane typy właściwości wektorów |
|
Obsługiwane typy indeksów | Nie dotyczy |
Obsługiwane funkcje odległości |
|
Obsługiwane klauzule filtru |
|
Obsługuje wiele wektorów w rekordzie | Tak |
Czy funkcja IsIndexed jest obsługiwana? | Nie. |
Czy funkcja FullTextIndexed jest obsługiwana? | Nie. |
Czy StorageName jest obsługiwany? | Tak |
Obsługiwane jest wyszukiwanie hybrydowe? | Nie. |
Wprowadzenie
Dodaj pakiet NuGet SQLite Vector Store Connector do projektu.
dotnet add package Microsoft.SemanticKernel.Connectors.SqliteVec --prerelease
Magazyn wektorów można dodać do kontenera IServiceCollection
wstrzykiwania zależności przy użyciu metod rozszerzających udostępnianych przez Semantic Kernel.
using Microsoft.Extensions.DependencyInjection;
// Using IServiceCollection with ASP.NET Core.
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddSqliteVectorStore(_ => "Data Source=:memory:");
using Microsoft.Extensions.DependencyInjection;
using Microsoft.SemanticKernel;
// Using IServiceCollection with ASP.NET Core.
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddSqliteVectorStore(_ => "Data Source=:memory:")
Instancję magazynu wektorów SQLite można stworzyć bezpośrednio.
using Microsoft.SemanticKernel.Connectors.SqliteVec;
var vectorStore = new SqliteVectorStore("Data Source=:memory:");
Istnieje możliwość utworzenia bezpośredniego odwołania do nazwanej kolekcji.
using Microsoft.SemanticKernel.Connectors.SqliteVec;
var collection = new SqliteCollection<string, Hotel>("Data Source=:memory:", "skhotels");
Mapowanie danych
Łącznik SQLite Vector Store udostępnia domyślny maper podczas mapowania z modelu danych na magazyn. Ten maper wykonuje bezpośrednią konwersję listy właściwości modelu danych na kolumny w sqlite.
W przypadku rozszerzenia wyszukiwania wektorów wektory są przechowywane w tabelach wirtualnych, niezależnie od właściwości klucza i danych.
Domyślnie tabela wirtualna z wektorami będzie używać takiej samej nazwy jak tabela z właściwościami klucza i danych, ale z prefiksem vec_
. Jeśli na przykład nazwa kolekcji w SqliteCollection
pliku to skhotels
, nazwa tabeli wirtualnej z wektorami będzie .vec_skhotels
Można zastąpić nazwę tabeli wirtualnej, korzystając z właściwości SqliteVectorStoreOptions.VectorVirtualTableName
lub SqliteCollectionOptions<TRecord>.VectorVirtualTableName
.
Nadpisanie nazwy właściwości
Możesz podać własne nazwy właściwości do użycia w magazynie innym niż nazwy właściwości w modelu danych.
Nadpisanie nazwy właściwości odbywa się przez ustawienie opcji StorageName
za pomocą atrybutów właściwości modelu danych lub definicji rekordu.
Oto przykład modelu danych z StorageName
ustawionym na jego atrybuty i sposób, w jaki będzie on reprezentowany w poleceniu SQLite.
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 Hotels (
HotelId INTEGER PRIMARY KEY,
hotel_name TEXT,
hotel_description TEXT
);
CREATE VIRTUAL TABLE vec_Hotels (
HotelId INTEGER PRIMARY KEY,
DescriptionEmbedding FLOAT[4] distance_metric=cosine
);
Wkrótce
Więcej informacji wkrótce.
JDBC
Łącznik JDBC może służyć do nawiązywania połączenia z bazą danych SQLite.