Usando o conector JDBC Vetor Store
Descrição geral
O armazenamento vetorial JDBC é um recurso específico do Java, disponível apenas para aplicativos Java.
Descrição geral
O armazenamento vetorial JDBC é um recurso específico do Java, disponível apenas para aplicativos Java.
Descrição geral
O conector JDBC Vetor Store pode ser usado para acessar e gerenciar dados em bancos de dados SQL. O conector tem as seguintes características.
Área de funcionalidades | Suporte |
---|---|
Mapas da coleção para | Tabela do banco de dados SQL |
Fontes de dados SQL suportadas |
|
Tipos de propriedade de chave suportados | String |
Tipos de propriedade de dados suportados |
|
Tipos de propriedade vetorial suportados | Lista<Float> |
Tipos de índice suportados |
|
Funções de distância suportadas |
|
Cláusulas de filtro suportadas |
|
Suporta vários vetores em um registro | Sim |
isFilterable suportado? | Sim |
isFullTextSearchable suportado? | Não |
storageName suportado? | Não, use @JsonProperty em vez disso. |
Limitações
O PostgreSQL aproveita pgvector
a indexação vetorial e a pesquisa, oferecendo exclusivamente recursos de pesquisa aproximados. Outros provedores não têm suporte para indexação, fornecendo apenas pesquisa vetorial exaustiva.
Introdução
Inclua a versão mais recente do conector JDBC do kernel semântico em seu projeto Maven adicionando a seguinte dependência ao seu pom.xml
:
<dependency>
<groupId>com.microsoft.semantic-kernel</groupId>
<artifactId>semantickernel-data-jdbc</artifactId>
<version>[LATEST]</version>
</dependency>
Em seguida, você pode criar uma instância de armazenamento de vetores usando a JDBCVectorStore
classe, tendo a fonte de dados como parâmetro.
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();
}
}
Você também pode criar uma coleção diretamente.
var collection = new JDBCVectorStoreRecordCollection<>(
dataSource,
"skhotels",
JDBCVectorStoreRecordCollectionOptions.<Hotel>builder()
.withRecordClass(Hotel.class)
.build()
);