共用方式為


使用 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
支援的向量屬性類型 清單<浮點數>
支援的索引類型
  • PostgreSQL: Hnsw, IVFFlat, Flat
  • MySQL:一般
  • SQLite:一般
  • HSQLDB:一般
支援的距離函式
  • CosineDistance
  • DotProductSimilarity
  • EuclideanDistance
支援的篩選子句
  • AnyTagEqualTo
  • EqualTo
支援記錄中的多個向量 Yes
支援IsFilterable? Yes
是否支援FullTextSearchable? No
支援 storageName? 否,請改用 @JsonProperty

限制

PostgreSQL 利用 pgvector 向量編製索引和搜尋,以唯一方式提供近似的搜尋功能。 其他提供者缺少索引編製的支援,只提供詳盡的向量搜尋。

開始使用

將下列相依性新增至 , pom.xml在您的 Maven 專案中加入最新版本的 Semantic Kernel 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()
);