Sdílet prostřednictvím


Použití konektoru JDBC Vector Store

Přehled

Úložiště vektorů JDBC je funkce specifická pro Javu, která je dostupná jenom pro aplikace v Javě.

Přehled

Úložiště vektorů JDBC je funkce specifická pro Javu, která je dostupná jenom pro aplikace v Javě.

Přehled

Konektor JDBC Vector Store je možné použít k přístupu k datům v databázích SQL a jejich správě. Konektor má následující charakteristiky.

Oblast funkcí Technická podpora
Kolekce map na Tabulka databáze SQL
Podporované zdroje dat SQL
  • PostgreSQL
  • MySQL
  • SQLite
  • HSQLDB
Podporované typy vlastností klíče String
Podporované typy datových vlastností
  • String
  • int, Integer
  • long, Long
  • double, Double
  • float, Float
  • boolean, Boolean
  • OffsetDateTime
Podporované typy vektorových vlastností Plovoucí seznam<>
Podporované typy indexů
  • PostgreSQL: Hnsw, IVFFlat, Flat
  • MySQL: Byt
  • SQLite: Plochá
  • HSQLDB: Plochá
Podporované funkce vzdálenosti
  • KosineDistance
  • DotProductSimilarity
  • EuclideanDistance
Podporuje více vektorů v záznamu. Ano
Je podporováno filtrování? Ano
isFullTextSearchable podporováno? No
storageName se podporuje? Ne, použijte @JsonProperty místo toho.

Omezení

PostgreSQL využívá pgvector k indexování vektorů a vyhledávání jedinečně nabízející přibližné možnosti vyhledávání. Jiní poskytovatelé nemají podporu indexování, což poskytuje pouze vyčerpávající vektorové vyhledávání.

Začínáme

Přidejte do projektu Maven nejnovější verzi konektoru JDBC sémantického jádra přidáním následující závislosti:pom.xml

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

Pak můžete vytvořit instanci vektorového úložiště pomocí JDBCVectorStore třídy, která má zdroj dat jako parametr.

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

Kolekci můžete vytvořit také přímo.

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