Partager via


Utilisation du connecteur JDBC Vector Store

Vue d’ensemble

Le magasin de vecteurs JDBC est une fonctionnalité spécifique à Java, disponible uniquement pour les applications Java.

Vue d’ensemble

Le magasin de vecteurs JDBC est une fonctionnalité spécifique à Java, disponible uniquement pour les applications Java.

Vue d’ensemble

Le connecteur JDBC Vector Store peut être utilisé pour accéder aux données et les gérer dans les bases de données SQL. Le connecteur présente les caractéristiques suivantes.

Zone Fonctionnalités Support
Mappages de collection à Base de données SQL
Sources de données SQL prises en charge
  • PostgreSQL
  • MySQL
  • SQLite
  • HSQLDB
Types de propriétés de clé pris en charge Chaîne
Types de propriétés de données pris en charge
  • Chaîne
  • int, Integer
  • long, Long
  • double, Double
  • float, Float
  • booléen, booléen
  • OffsetDateTime
Types de propriétés vectorielles pris en charge Liste<flottante>
Types d’index pris en charge
  • PostgreSQL : Hnsw, IVFFlat, Flat
  • MySQL : plat
  • SQLite : plat
  • HSQLDB : plat
Fonctions de distance prises en charge
  • CosineDistance
  • DotProductSimilarity
  • EuclideanDistance
Prend en charge plusieurs vecteurs dans un enregistrement Oui
isFilterable pris en charge ? Oui
IsFullTextSearchable pris en charge ? Non
storageName pris en charge ? Non, utilisez @JsonProperty à la place.

Limites

PostgreSQL s’appuie pgvector sur l’indexation et la recherche vectorielles, offrant de manière unique des fonctionnalités de recherche approximatives. D’autres fournisseurs ne prennent pas en charge l’indexation, fournissant uniquement une recherche vectorielle exhaustive.

Mise en route

Incluez la dernière version du connecteur JDBC du noyau sémantique dans votre projet Maven en ajoutant la dépendance suivante à votre pom.xml:

<dependency>
    <groupId>com.microsoft.semantic-kernel</groupId>
    <artifactId>semantickernel-data-jdbc</artifactId>
    <version>[LATEST]</version>
</dependency>

Vous pouvez ensuite créer une instance de magasin de vecteurs à l’aide de la JDBCVectorStore classe, avec la source de données en tant que paramètre.

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();
    }
}

Vous pouvez également créer une collection directement.

var collection = new JDBCVectorStoreRecordCollection<>(
    dataSource,
    "skhotels",
    JDBCVectorStoreRecordCollectionOptions.<Hotel>builder()
        .withRecordClass(Hotel.class)
        .build()
);