JDBC ベクター ストア コネクタの使用
概要
JDBC ベクター ストアは Java 固有の機能であり、Java アプリケーションでのみ使用できます。
概要
JDBC ベクター ストアは Java 固有の機能であり、Java アプリケーションでのみ使用できます。
概要
JDBC ベクター ストア コネクタを使用して、SQL データベース内のデータにアクセスして管理できます。 コネクタには次の特性があります。
機能領域 | サポート |
---|---|
コレクションのマップ | SQL データベース テーブル |
サポートされている SQL データ ソース |
|
サポートされているキー プロパティの種類 | String |
サポートされているデータ プロパティ型 |
|
サポートされているベクター プロパティ型 | List<Float> |
サポートされているインデックスの種類 |
|
サポートされている距離関数 |
|
レコード内の複数のベクターをサポートします | はい |
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()
);