Использование соединителя хранилища векторов JDBC
Обзор
Векторное хранилище JDBC — это функция, предназначенная для Java, доступная только для приложений Java.
Обзор
Векторное хранилище JDBC — это функция, предназначенная для Java, доступная только для приложений Java.
Обзор
Соединитель хранилища векторов JDBC можно использовать для доступа к данным в базах данных SQL и управления ими. Соединитель имеет следующие характеристики.
Область функций | Поддержка |
---|---|
Коллекция сопоставляется с | Таблицы базы данных SQL |
Поддерживаемые источники данных SQL |
|
Поддерживаемые типы свойств ключей | Строка |
Поддерживаемые типы свойств данных |
|
Поддерживаемые типы свойств вектора | Список<с плавающей запятой> |
Поддерживаемые типы индексов |
|
Поддерживаемые функции расстояния |
|
Поддержка нескольких векторов в записи | Да |
поддерживается isFilterable? | Да |
поддерживается лиFullTextSearchable? | No |
поддерживается storageName? | Нет, используйте @JsonProperty вместо этого. |
Ограничения
PostgreSQL используется pgvector
для индексирования и поиска векторов, уникально предлагая приблизительные возможности поиска. Другие поставщики не поддерживают индексирование, предоставляя только исчерпывающий векторный поиск.
Начало работы
Добавьте последнюю версию соединителя JDBC Семантического ядра в проект Maven, добавив в проект pom.xml
Maven следующую зависимость:
<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()
);