警告
Sqlite Vector Store の機能はプレビュー段階であり、破壊的変更を必要とする機能強化は、リリース前の限られた状況で引き続き発生する可能性があります。
警告
セマンティック カーネル ベクター ストア機能はプレビュー段階であり、破壊的変更を必要とする機能強化は、リリース前の限られた状況で引き続き発生する可能性があります。
警告
セマンティック カーネル ベクター ストア機能はプレビュー段階であり、破壊的変更を必要とする機能強化は、リリース前の限られた状況で引き続き発生する可能性があります。
概要
SQLite ベクター ストア コネクタを使用すると、SQLite のデータにアクセスして管理できます。 コネクタには次の特性があります。
| 機能領域 | サポート |
|---|---|
| コレクションのマップ | SQLite テーブル |
| サポートされているキー プロパティの種類 |
|
| サポートされているデータ プロパティ型 |
|
| サポートされているベクター プロパティ型 |
|
| サポートされているインデックスの種類 | 該当なし |
| サポートされている距離関数 |
|
| サポートされているフィルター句 |
|
| レコード内の複数のベクターをサポートします | はい |
| IsIndexed はサポートされていますか? | いいえ |
| IsFullTextIndexed がサポートされていますか? | いいえ |
| StorageName がサポートされていますか? | はい |
| HybridSearch はサポートされていますか? | いいえ |
作業の開始
SQLite ベクター ストア コネクタ NuGet パッケージをプロジェクトに追加します。
dotnet add package Microsoft.SemanticKernel.Connectors.SqliteVec --prerelease
セマンティック カーネルによって提供される拡張メソッドを使用して、 IServiceCollection 依存関係挿入コンテナーにベクター ストアを追加できます。
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:")
SQLite ベクター ストア インスタンスを直接構築できます。
using Microsoft.SemanticKernel.Connectors.SqliteVec;
var vectorStore = new SqliteVectorStore("Data Source=:memory:");
名前付きコレクションへの直接参照を構築できます。
using Microsoft.SemanticKernel.Connectors.SqliteVec;
var collection = new SqliteCollection<string, Hotel>("Data Source=:memory:", "skhotels");
データ マッピング
SQLite ベクター ストア コネクタは、データ モデルからストレージにマッピングするときに、既定のマッパーを提供します。 このマッパーは、データ モデルのプロパティの一覧を SQLite の列に直接変換します。
ベクター検索拡張機能を使用すると、ベクトルは、キーとデータのプロパティとは別に、仮想テーブルに格納されます。
既定では、ベクトルを含む仮想テーブルでは、キープロパティとデータプロパティを持つテーブルと同じ名前が使用されますが、プレフィックスは vec_ されます。 たとえば、 SqliteCollection のコレクション名が skhotelsされている場合、ベクトルを含む仮想テーブルの名前が vec_skhotelsされます。
SqliteVectorStoreOptions.VectorVirtualTableNameプロパティまたはSqliteCollectionOptions<TRecord>.VectorVirtualTableNameプロパティを使用して、仮想テーブル名をオーバーライドできます。
プロパティ名のオーバーライド
データ モデルのプロパティ名とは異なるストレージで使用するオーバーライド プロパティ名を指定できます。
プロパティ名のオーバーライドは、データ モデルのプロパティ属性またはレコード定義を使用して StorageName オプションを設定することによって行われます。
属性に StorageName が設定されたデータ モデルの例と、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
);
間もなく利用できます
詳細については、近日公開予定です。
JDBC
JDBC コネクタを使用して SQLite に接続できます。