次の方法で共有


JDBC ベクター ストア コネクタの使用

概要

JDBC ベクター ストアは Java 固有の機能であり、Java アプリケーションでのみ使用できます。

概要

JDBC ベクター ストアは Java 固有の機能であり、Java アプリケーションでのみ使用できます。

概要

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

機能領域 サポート
コレクションのマップ SQL データベース テーブル
サポートされている SQL データ ソース
  • PostgreSQL
  • MySQL
  • SQLite
  • HSQLDB
サポートされているキー プロパティの種類 String
サポートされているデータ プロパティ型
  • String
  • int、Integer
  • long、Long
  • double、Double
  • float、Float
  • boolean、Boolean
  • OffsetDateTime
サポートされているベクター プロパティ型 List<Float>
サポートされているインデックスの種類
  • PostgreSQL: Hnsw、IVFFlat、Flat
  • MySQL: フラット
  • SQLite: フラット
  • HSQLDB: フラット
サポートされている距離関数
  • CosineDistance
  • DotProductSimilarity
  • EuclideanDistance
レコード内の複数のベクターをサポートします はい
isFilterable はサポートされていますか? はい
isFullTextSearchable はサポートされていますか? いいえ
storageName はサポートされていますか? いいえ。代わりに @JsonProperty を使用してください。

制限事項

PostgreSQL では、ベクター インデックス作成と検索に pgvector を活用し、近似検索機能を一意に提供します。 他のプロバイダーはインデックス作成のサポートを欠いており、完全なベクター検索のみを提供します。

作業の開始

次の依存関係を pom.xmlに追加して、Maven プロジェクトにセマンティック カーネル JDBC コネクタの最新バージョンを含めます。

<dependency>
    <groupId>com.microsoft.semantic-kernel</groupId>
    <artifactId>semantickernel-data-jdbc</artifactId>
    <version>[LATEST]</version>
</dependency>

その後、 JDBCVectorStore クラスを使用して、データ ソースをパラメーターとして持つベクター ストア インスタンスを作成できます。

import com.microsoft.semantickernel.data.jdbc.JDBCVectorStore;
import com.microsoft.semantickernel.data.jdbc.JDBCVectorStoreOptions;
import com.microsoft.semantickernel.data.jdbc.JDBCVectorStoreRecordCollection;
import com.microsoft.semantickernel.data.jdbc.JDBCVectorStoreRecordCollectionOptions;
import com.microsoft.semantickernel.data.jdbc.mysql.MySQLVectorStoreQueryProvider;
import org.postgresql.ds.PGSimpleDataSource;

public class Main {
    public static void main(String[] args) {
        // Configure the data source
        PGSimpleDataSource dataSource = new PGSimpleDataSource();
        dataSource.setUrl("jdbc:postgresql://localhost:5432/sk");
        dataSource.setUser("postgres");
        dataSource.setPassword("root");

        // Build a query provider
        // Other available query providers are PostgreSQLVectorStoreQueryProvider, SQLiteVectorStoreQueryProvider
        // and HSQDBVectorStoreQueryProvider
        var queryProvider = MySQLVectorStoreQueryProvider.builder()
                .withDataSource(dataSource)
                .build();

        // Build a vector store
        var vectorStore = JDBCVectorStore.builder()
                .withDataSource(dataSource)
                .withOptions(JDBCVectorStoreOptions.builder()
                        .withQueryProvider(queryProvider)
                        .build())
                .build();
    }
}

コレクションを直接作成することもできます。

var collection = new JDBCVectorStoreRecordCollection<>(
    dataSource,
    "skhotels",
    JDBCVectorStoreRecordCollectionOptions.<Hotel>builder()
        .withRecordClass(Hotel.class)
        .build()
);