使用 JDBC 向量存放區連接器
概觀
JDBC 向量存放區是 Java 特定的功能,僅適用於 Java 應用程式。
概觀
JDBC 向量存放區是 Java 特定的功能,僅適用於 Java 應用程式。
概觀
JDBC 向量存放區連接器可用來存取和管理 SQL 資料庫中的數據。 連接器具有下列特性。
功能區域 | 支援 |
---|---|
集合對應至 | SQL 資料庫數據表 |
支援的 SQL 數據源 |
|
支援的索引鍵屬性類型 | String |
支援的數據類型 |
|
支援的向量屬性類型 | 清單<浮點數> |
支援的索引類型 |
|
支援的距離函式 |
|
支援的篩選子句 |
|
支援記錄中的多個向量 | 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()
);