Dela via


Använda JDBC Vector Store-anslutningsappen

Översikt

JDBC-vektorarkivet är en Java-specifik funktion som endast är tillgänglig för Java-program.

Översikt

JDBC-vektorarkivet är en Java-specifik funktion som endast är tillgänglig för Java-program.

Översikt

JDBC Vector Store-anslutningsappen kan användas för att komma åt och hantera data i SQL-databaser. Anslutningsappen har följande egenskaper.

Funktionsområde Support
Samlingskartor till SQL-databastabell
SQL-datakällor som stöds
  • PostgreSQL
  • MySQL
  • SQLite
  • HSQLDB
Nyckelegenskapstyper som stöds String
Dataegenskapstyper som stöds
  • String
  • int, Heltal
  • lång, lång
  • double, Double
  • float, Float
  • boolesk, boolesk
  • OffsetDateTime
Egenskapstyper för vektorer som stöds Listflöd<>
Indextyper som stöds
  • PostgreSQL: Hnsw, IVFFlat, Flat
  • MySQL: Flat
  • SQLite: Platt
  • HSQLDB: Platt
Avståndsfunktioner som stöds
  • CosineDistance
  • DotProductSimilarity
  • EuclideanDistance
Stöder flera vektorer i en post Ja
isFilterable stöds? Ja
isFullTextSearchable stöds? Nej
storageName stöds? Nej, använd @JsonProperty i stället.

Begränsningar

PostgreSQL utnyttjar pgvector för vektorindexering och sökning och erbjuder unikt ungefärliga sökfunktioner. Andra leverantörer saknar stöd för indexering, vilket endast ger fullständig vektorsökning.

Komma igång

Inkludera den senaste versionen av Semantic Kernel JDBC-anslutningsappen i ditt Maven-projekt genom att lägga till följande beroende i :pom.xml

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

Du kan sedan skapa en vektorlagringsinstans med hjälp av JDBCVectorStore klassen med datakällan som parameter.

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

Du kan också skapa en samling direkt.

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