次の方法で共有


SQLite ベクター ストア コネクタの使用 (プレビュー)

警告

Sqlite Vector Store の機能はプレビュー段階であり、破壊的変更を必要とする機能強化は、リリース前の限られた状況で引き続き発生する可能性があります。

警告

セマンティック カーネル ベクター ストア機能はプレビュー段階であり、破壊的変更を必要とする機能強化は、リリース前の限られた状況で引き続き発生する可能性があります。

警告

セマンティック カーネル ベクター ストア機能はプレビュー段階であり、破壊的変更を必要とする機能強化は、リリース前の限られた状況で引き続き発生する可能性があります。

概要

SQLite ベクター ストア コネクタを使用すると、SQLite のデータにアクセスして管理できます。 コネクタには次の特性があります。

機能領域 サポート
コレクションのマップ SQLite テーブル
サポートされているキー プロパティの種類
  • 整数 (int)
  • 長い
  • 文字列
サポートされているデータ プロパティ型
  • 整数 (int)
  • 長い
  • 短い
  • 文字列
  • ブール
  • フロート
  • ダブル
  • byte[]
サポートされているベクター プロパティ型
  • 読み取り専用メモリ<float>
  • 埋め込み<float>
  • float[]
サポートされているインデックスの種類 該当なし
サポートされている距離関数
  • CosineDistance
  • ManhattanDistance
  • EuclideanDistance
サポートされているフィルター句
  • EqualTo
レコード内の複数のベクターをサポートします はい
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 に接続できます。