Delen via


De JDBC Vector Store-connector gebruiken

Overzicht

JDBC Vector Store is een Java-specifieke functie die alleen beschikbaar is voor Java-toepassingen.

Overzicht

JDBC Vector Store is een Java-specifieke functie die alleen beschikbaar is voor Java-toepassingen.

Overzicht

De JDBC Vector Store-connector kan worden gebruikt voor toegang tot en beheer van gegevens in SQL-databases. De verbindingslijn heeft de volgende kenmerken.

Functiegebied Ondersteuning
Verzamelingstoewijzingen aan SQL-databasetabel
Ondersteunde SQL-gegevensbronnen
  • PostgreSQL
  • MySQL
  • SQLite
  • HSQLDB
Ondersteunde sleuteleigenschapstypen String
Ondersteunde gegevenseigenschapstypen
  • String
  • int, geheel getal
  • long, Long
  • dubbel, dubbel
  • float, Float
  • Booleaanse waarde, Booleaanse waarde
  • OffsetDateTime
Ondersteunde vectoreigenschappentypen Lijst<float>
Ondersteunde indextypen
  • PostgreSQL: Hnsw, IVFFlat, Flat
  • MySQL: Plat
  • SQLite: Vlak
  • HSQLDB: Plat
Ondersteunde afstandsfuncties
  • CosineDistance
  • DotProductsimilarity
  • EuclideanDistance
Ondersteunde filterclausules
  • AnyTagEqualTo
  • EqualTo
Ondersteunt meerdere vectoren in een record Ja
wordt Filterable ondersteund? Ja
wordtFullTextSearchable ondersteund? Nee
storageName ondersteund? Nee, gebruik @JsonProperty in plaats daarvan.

Beperkingen

PostgreSQL maakt gebruik pgvector van vectorindexering en zoekopdrachten en biedt unieke zoekmogelijkheden. Andere providers hebben geen ondersteuning voor indexering, waardoor alleen uitgebreide vectorzoekopdrachten mogelijk zijn.

Aan de slag

Neem de nieuwste versie van de Semantic Kernel JDBC-connector op in uw Maven-project door de volgende afhankelijkheid toe te voegen aan uw pom.xml:

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

Vervolgens kunt u een vectorarchiefexemplaren maken met behulp van de JDBCVectorStore klasse, waarbij de gegevensbron als parameter wordt gebruikt.

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

U kunt ook rechtstreeks een verzameling maken.

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