Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Waarschuwing
De oracle Database Vector Store-functionaliteit is in preview en verbeteringen waarvoor wijzigingen die fouten veroorzaken, kunnen nog steeds optreden in beperkte omstandigheden vóór de release.
Waarschuwing
De Semantische Kernel Vector Store-functionaliteit is in preview en verbeteringen waarvoor wijzigingen die fouten veroorzaken, kunnen nog steeds in beperkte omstandigheden optreden voordat ze worden uitgebracht.
Waarschuwing
De Semantische Kernel Vector Store-functionaliteit is in preview en verbeteringen waarvoor wijzigingen die fouten veroorzaken, kunnen nog steeds in beperkte omstandigheden optreden voordat ze worden uitgebracht.
Overzicht
De Oracle Database Vector Store-connector kan worden gebruikt voor toegang tot en beheer van gegevens in Oracle Database. De verbindingslijn heeft de volgende kenmerken.
| Functiegebied | Support |
|---|---|
| Verzamelingstoewijzingen aan | Oracle-databasetabel |
| Ondersteunde sleuteleigenschapstypen |
|
| Ondersteunde gegevenseigenschapstypen |
|
| Ondersteunde vectoreigenschappentypen |
|
| Ondersteunde indextypen |
|
| Ondersteunde afstandsfuncties |
|
| Ondersteunde filtercomponenten |
|
| Ondersteunt nul, één of meerdere vectoren in een record | Yes |
| WordtIndexed ondersteund? | Yes |
| WordtFullTextSearchable ondersteund? | Nee. |
| Ondersteunde StorageName? | Yes |
| HybridSearch ondersteund? | Nee. |
Belangrijk
Voor vectorgegevenszoekopdrachten is Oracle Database 23ai of hoger vereist. Alle andere Oracle-connectorfuncties zijn beschikbaar met Oracle Database 19c of hoger.
| Functiegebied | Support |
|---|---|
| Verzamelingstoewijzingen aan | Een Oracle Database-tabel |
| Ondersteunde sleuteleigenschapstypen |
|
| Ondersteunde gegevenseigenschapstypen |
|
| Ondersteunde vectoreigenschappentypen |
|
| Ondersteunde indextypen |
|
| Ondersteunde afstandsfuncties |
|
| Ondersteunde filtercomponenten | Python lambdas met vergelijkingen, Booleaanse operatoren, tekenreeksmethoden (startswith, endswith), tussen en datetime, vertaald naar SQL met bindvariabelen |
| WordtIndexed ondersteund? | Yes |
| WordtFullTextSearchable ondersteund? | Nee. |
| Wordt "StoragePropertyName" ondersteund? | Yes |
| HybridSearch ondersteund? | Nee. |
Belangrijk
Voor vectorgegevenszoekopdrachten is Oracle Database 23ai of hoger vereist. Alle andere Oracle-connectorfuncties zijn beschikbaar met Oracle Database 19c of hoger. Python-oracledb 3.3 of hoger is ook vereist.
| Functiegebied | Support |
|---|---|
| Ondersteunde filtercomponenten |
|
| Verzamelingstoewijzingen aan | SQL-database-tabel |
| Ondersteunde sleuteleigenschapstypen |
|
| Ondersteunde gegevenseigenschapstypen |
|
| Ondersteunde vectoreigenschappentypen |
|
| Ondersteunde indextypen |
|
| Ondersteunde afstandsfuncties |
|
| Ondersteunt meerdere vectoren in een record | Yes |
| Ondersteunt IsIndexed? | Yes |
| WordtFullTextSearchable ondersteund? | Nee. |
| Wordt "StoragePropertyName" ondersteund? | Nee, gebruik @JsonProperty in plaats daarvan |
| HybridSearch ondersteund? | Nee. |
Aan de slag
Voeg het NuGet-pakket van de Oracle Database Vector Store-connector toe aan uw project.
dotnet add package Oracle.VectorData --prerelease
U kunt het vectorarchief toevoegen aan de IServiceCollection container voor afhankelijkheidsinjectie met behulp van extensiemethoden van Semantic Kernel. In dit geval wordt een exemplaar van de Oracle.VectorData.OracleVectorStore klasse ook geregistreerd bij de container.
using Microsoft.SemanticKernel;
using Oracle.VectorData;
using Microsoft.Extensions.DependencyInjection;
// Using Kernel Builder.
var builder = Kernel.CreateBuilder();
builder.Services.AddOracleVectorStore("<connection string>");
using Microsoft.AspNetCore.Builder;
using Oracle.VectorData;
using Microsoft.Extensions.DependencyInjection;
// Using IServiceCollection with ASP.NET Core.
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddOracleVectorStore("<connection string>");
Extensiemethoden die geen parameters gebruiken, zijn ook beschikbaar. Hiervoor moet een exemplaar van de Oracle.ManagedDataAccess.Client.OracleDataSource klasse afzonderlijk worden geregistreerd bij de container voor afhankelijkheidsinjectie.
using Microsoft.SemanticKernel;
using Oracle.VectorData;
using Microsoft.Extensions.DependencyInjection;
using Oracle.ManagedDataAccess.Client;
// Using Kernel Builder.
var kernelBuilder = Kernel.CreateBuilder();
builder.Services.AddSingleton<OracleDataSource>(sp =>
{
OracleDataSourceBuilder dataSourceBuilder = new("<connection string>");
return dataSourceBuilder.Build();
});
builder.Services.AddOracleVectorStore();
using Microsoft.AspNetCore.Builder;
using Oracle.VectorData;
using Microsoft.Extensions.DependencyInjection;
using Oracle.ManagedDataAccess.Client;
// Using IServiceCollection with ASP.NET Core.
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddSingleton<OracleDataSource>(sp =>
{
OracleDataSourceBuilder dataSourceBuilder = new("<connection string>");
return dataSourceBuilder.Build();
});
builder.Services.AddOracleVectorStore();
U kunt een Oracle Database Vector Store-exemplaar rechtstreeks maken met een aangepaste gegevensbron of met een verbindingsreeks.
using Oracle.VectorData;
using Oracle.ManagedDataAccess.Client;
OracleDataSourceBuilder dataSourceBuilder = new("<connection string>");
var dataSource = dataSourceBuilder.Build();
var connection = new OracleVectorStore(dataSource);
using Oracle.VectorData;
var connection = new OracleVectorStore("<connection string>");
Het is mogelijk om een directe verwijzing te maken naar een benoemde verzameling met een aangepaste gegevensbron of met een verbindingsreeks.
using Oracle.VectorData;
using Oracle.ManagedDataAccess.Client;
OracleDataSourceBuilder dataSourceBuilder = new("<connection string>");
var dataSource = dataSourceBuilder.Build();
var collection = new OracleCollection<string, Hotel>(dataSource, "skhotels");
using Oracle.VectorData;
var collection = new OracleCollection<string, Hotel>("<connection string>", "skhotels");
Aan de slag
Installeer de Oracle Database Vector Store connector:
pip install semantic-kernel[oracledb]
Importeer de klassen OracleSettings, OracleStore en OracleCollection.
from semantic_kernel.connectors.oracle import OracleSettings, OracleStore, OracleCollection
De OracleSettings-klasse bevat de configuratie die is vereist voor het maken van een asynchrone verbinding met Oracle Database. De OracleStore-klasse wordt gebruikt voor het opslaan en ophalen van gegevens, terwijl de OracleCollection-klasse records in een verzameling beheert en doorzoekt. Gebruik deze klassen om de Oracle Vector Store in te stellen.
# Read the environment settings
oracle_settings = OracleSettings()
# Create a connection pool
pool = await oracle_settings.create_connection_pool(
wallet_location=<wallet_location>,
wallet_password=<wallet_password>)
# Create an Oracle Vector Store
store = OracleStore(
connection_pool=pool,
)
# Get a collection
collection = await store.get_collection(
record_type=HotelSample,
collection_name=Hotel,
embedding_generator=text_embedding)
# Create a collection if it does not exist
await collection.ensure_collection_exists()
Aan de slag
De Vector Store-connector van de Oracle Database instellen.
// Copyright (c) Microsoft. All rights reserved.
package com.microsoft.semantickernel.samples.syntaxexamples.memory;
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.oracle.OracleVectorStoreQueryProvider;
import com.microsoft.semantickernel.data.vectorstorage.VectorStoreRecordCollection;
import com.microsoft.semantickernel.samples.documentationexamples.data.index.Hotel;
import java.sql.SQLException;
import java.util.Collections;
import oracle.jdbc.datasource.impl.OracleDataSource;
public class VectorStoreWithOracle {
public static void main(String[] args) throws SQLException {
System.out.println("==============================================================");
System.out.println("============== Oracle Vector Store Example ===================");
System.out.println("==============================================================");
// Configure the data source
OracleDataSource dataSource = new OracleDataSource();
dataSource.setURL("jdbc:oracle:thin:@localhost:1521/FREEPDB1");
dataSource.setUser("scott");
dataSource.setPassword("tiger");
// Build a query provider
OracleVectorStoreQueryProvider queryProvider = OracleVectorStoreQueryProvider.builder()
.withDataSource(dataSource)
.build();
// Build a vector store
JDBCVectorStore vectorStore = JDBCVectorStore.builder()
.withDataSource(dataSource)
.withOptions(JDBCVectorStoreOptions.builder()
.withQueryProvider(queryProvider)
.build())
.build();
// Get a collection from the vector store
VectorStoreRecordCollection<String, Hotel> collection = vectorStore.getCollection(
"skhotels",
JDBCVectorStoreRecordCollectionOptions.<Hotel>builder()
.withRecordClass(Hotel.class)
.build());
// Create the collection if it doesn't exist yet.
collection.createCollectionAsync().block();
collection.upsertAsync(new Hotel("1",
"HotelOne",
"Desc for HotelOne",
Collections.emptyList(), Collections.emptyList()),
null)
.block();
}
}
Gegevenstoewijzing
De Oracle Database Vector Store-connector biedt een standaardtoewijzingsfunctie bij het toewijzen van gegevens uit het gegevensmodel aan opslag. Deze mapper voert een directe conversie uit van de lijst met eigenschappen van het gegevensmodel naar de Oracle-databasekolommen om te converteren naar het opslagschema.
De Oracle Database Vector Store-connector ondersteunt aantekeningen en recorddefinities van gegevensmodellen. Met behulp van aantekeningen kan de informatie worden verstrekt aan het gegevensmodel voor het maken van indexen en databasekolomtoewijzing. Met behulp van recorddefinities kunnen de gegevens afzonderlijk van het gegevensmodel worden gedefinieerd en opgegeven.
In de volgende tabel ziet u de standaardtoewijzing van het gegevenstype primaire sleutel tussen Oracle Database en C#:
| C#-gegevenstype | Databasetype |
|---|---|
| short/int16 | GETAL(5) |
| int/int32 | GETAL(10) |
| long/int64 | GETAL(19) |
| touw | NVARCHAR2(2000) |
| Guid | RAW(16) |
In de volgende tabel ziet u de standaardtoewijzing van het gegevenseigenschapstype, inclusief null-typen:
| C#-gegevenstype | Databasetype |
|---|---|
| bool | Booleaanse waarde voor Oracle Database 23ai en hoger GETAL(1) voor eerdere versies |
| byte | GETAL(3) |
| short/int16 | GETAL(5) |
| int/int32 | GETAL(10) |
| decimal | GETAL(18;2) |
| long/int64 | GETAL(19) |
| zweven | Binair drijvend |
| dubbel | BINARY_DOUBLE |
| DateTime | TIMESTAMP(7) |
| DateTimeOffset | TIMESTAMP(7) MET TIJDZONE |
| TimeSpan | INTERVALDAG(8) TOT SECONDE(7) |
| karakter | NVARCHAR2(1) |
| char[] | NVARCHAR2(2000) |
| byte[] | RAW(2000) |
| touw | NVARCHAR2(2000) |
| Guid | RAW(16) |
Vanaf Oracle Database 23ai kunnen databasevectoren worden toegewezen aan .NET. gegevenstypen. Meerdere vectorkolommen worden ondersteund. In de volgende tabel ziet u de standaardtoewijzing van vectoreigenschappen, inclusief null-typen:
| C#-gegevenstype | Databasetype |
|---|---|
|
VECTOR(dimensies, BINAIR) |
|
VECTOR(dimensies, INT8) |
|
VECTOR(dimensies, FLOAT64) |
|
VECTOR(dimensies, FLOAT32) |
Eigenschapsnaam overschrijven
Voor gegevenseigenschappen en vectoreigenschappen kunt u namen overschrijven die moeten worden gebruikt in de opslag die afwijken van de namen van de eigenschappen van het gegevensmodel. De naam van de eigenschap wordt overschreven wanneer u de StorageName optie instelt in de eigenschappen van het gegevensmodel of de recorddefinitie.
Hier volgt een gegevensmodel met StorageName setcodevoorbeelden en hoe dit wordt weergegeven in een Oracle SQL-opdracht.
using Microsoft.Extensions.VectorData;
public class Hotel
{
[VectorStoreKey]
public long HotelId { get; set; }
[VectorStoreData(StorageName = "hotel_name")]
public string? HotelName { get; set; }
[VectorStoreData(StorageName = "hotel_description")]
public string? Description { get; set; }
[VectorStoreVector(Dimensions: 384, DistanceFunction = DistanceFunction.CosineDistance)]
public ReadOnlyMemory<float>? DescriptionEmbedding { get; set; }
}
CREATE TABLE "MYSCHEMA"."Hotels"
("HotelId" NUMBER(10),
"hotel_name" NVARCHAR2(2000),
"hotel_description" NVARCHAR2(2000),
"DescriptionEmbedding" VECTOR(384, FLOAT32),
PRIMARY KEY ( "HotelId" )
);
Meer informatie
Raadpleeg de volgende resources voor de Oracle Database Vector Store-connector voor meer informatie:
- Inleiding tot de Oracle Database Vector Store-connector voor Semantische kernel Beschrijft de belangrijkste connectorfuncties, klassen en begeleidt de lezer via een voorbeeld van een AI-vectorzoektoepassing met behulp van de connector.
- Documentatie: Oracle Database Vector Store-connectorklassen voor Semantische kernel-API's (.NET) Bevat informatie over connectorklassen van Oracle Database Vector Store voor het toevoegen van gegevens, het ophalen van gegevens en het uitvoeren van vectorzoekopdrachten in de Oracle Vector-database.
- Documentatie: Oracle Data Provider voor .NET Bevat informatie over Oracle Data Provider voor .NET (ODP.NET), de ADO.NET-gegevensprovider voor de Oracle Database Vector Store-connector.
Datamapping
De Oracle Database Vector Store-connector biedt een standaardtoewijzingsfunctie bij het toewijzen van het gegevensmodel aan opslag. Deze mapper voert een directe conversie uit van de lijst met eigenschappen in het gegevensmodel naar de Oracle Database-kolommen om te converteren naar het opslagschema.
De Oracle Database Vector Store-connector ondersteunt aantekeningen en recorddefinities van gegevensmodellen. Met behulp van aantekeningen kan de informatie worden verstrekt aan het gegevensmodel voor het maken van indexen en databasekolomtoewijzing. Met behulp van recorddefinities kunnen de gegevens afzonderlijk van het gegevensmodel worden gedefinieerd en opgegeven.
In de volgende tabel wordt de standaard gegevenssoort-toewijzing van primaire sleutels tussen Oracle Database en Python weergegeven.
| Python-type | Oracle SQL-type |
|---|---|
| Str | VARCHAR(n), Met behulp van str(n) in de typeoptie stelt u de Oracle VARCHAR-lengte in op n. Als n niet is opgegeven, is de standaardlengte 4000. |
| int | GETAL(10) |
| byte | GETAL(3) |
| lang | GETAL(19) |
| decimal | GETAL |
| zweven | Binair drijvend |
| dubbel | BINARY_DOUBLE |
| bool | BOOLEAN |
| UUID (universeel unieke identificator) | RAW(16) |
| date | DATE |
| datetime.datetime | TIMESTAMP |
| datetime.timedelta | INTERVAL VAN DAG TOT SECONDE |
| clob | CLOB, kan expliciet worden opgegeven, niet een systeemeigen Python-type |
| Druppel | BLOB, kan expliciet worden opgegeven, niet een systeemeigen Python-type |
| list[str], dict[str, Any] | JSON |
| list[dict[str, Any]] | JSON |
| bytes | RAW(2000) |
Vanaf Oracle Database 23ai kunnen databasevectoren worden toegewezen aan Python-gegevenstypen. Meerdere vectorkolommen worden ondersteund. In de volgende tabel ziet u de standaardtoewijzing van vector-eigenschapstypen:
| Python-type | Databasetype |
|---|---|
| uint8 | BINARY |
| int8 | INT8 |
| zweven | FLOAT64 |
| float32 | FLOAT32 |
| float64 | FLOAT64 |
| binair | BINARY |
Meer informatie
Raadpleeg de volgende bronnen voor meer informatie:
Gegevenstoewijzing
De Oracle Database Vector Store-connector biedt een standaardtoewijzingsfunctie bij het toewijzen van gegevens uit het gegevensmodel aan opslag. Deze mapper voert een directe conversie uit van de lijst met eigenschappen van het gegevensmodel naar de Oracle-databasekolommen om te converteren naar het opslagschema.
De Oracle Database Vector Store-connector ondersteunt aantekeningen en recorddefinities van gegevensmodellen. Met behulp van aantekeningen kan de informatie worden verstrekt aan het gegevensmodel voor het maken van indexen en databasekolomtoewijzing. Met behulp van recorddefinities kunnen de gegevens afzonderlijk van het gegevensmodel worden gedefinieerd en opgegeven.
In de volgende tabel ziet u de standaardtoewijzing van het gegevenstype primaire sleutel tussen Oracle Database en Java, samen met de bijbehorende methoden voor het ophalen van gegevens uit een ResultSet:
| Java type | Databasetype | Getter-methode voor ResultSet |
|---|---|---|
| byte/Byte | GETAL(3) | resultSet.getByte(name) |
| kort/Kort | GETAL(5) | resultSet.getShort(name) |
| int/integer | GETAL(10) | resultSet.getInt(name) |
| lang/lang | GETAL(19) | resultSet.getLong(name) |
| String | NVARCHAR2(2000) | resultSet.getString(name) |
| UUID (universeel unieke identificator) | RAW(16) | resultSet.getObject(name, java_type) |
In de volgende tabel ziet u de standaardtoewijzing van het gegevenseigenschapstype, samen met de bijbehorende methoden voor het ophalen van gegevens uit een ResultSet:
| Java type | Databasetype | Getter-methode voor ResultSet |
|---|---|---|
| booleaan | BOOLEAN | resultSet.getByte(name) |
| byte/Byte | GETAL(3) | resultSet.getByte(name) |
| byte[] | RAW(2000) | resultSet.getBytes(name) |
| kort/Kort | GETAL(5) | resultSet.getShort(name) |
| int/integer | GETAL(10) | resultSet.getInt(name) |
| lang/lang | GETAL(19) | resultSet.getLong(name) |
| float/Float | Binair drijvend | resultSet.getFloat(name) |
| dubbel/dubbel | BINARY_DOUBLE | resultSet.getDouble(name) |
| BigDecimal | GETAL(18;2) | resultSet.getBigDecimal(name) |
| OffsetDateTime | TIMESTAMP(7) MET TIJDZONE | resultSet.getTIMESTAMPTZ(name).offsetDateTimeValue() |
| String | CLOB/NVARCHAR2(%s) | resultSet.getString(name) |
| UUID (universeel unieke identificator) | RAW(16) | resultSet.getObject(name, java_type) |
Lijst<T> |
JSON |
resultSet.getObject(name, java_type) Met behulp van ojdbc-extensions-jackson-oson |
Vanaf Oracle Database 23ai kunnen databasevectoren worden toegewezen aan Java-gegevenstypen. Meerdere vectorkolommen worden ondersteund. In de volgende tabel ziet u de standaardtoewijzing van vector-eigenschapstypen:
| Java type | Databasetype |
|---|---|
| String | VECTOR(%d, FLOAT32) |
Collectie<Float> |
VECTOR(%d, FLOAT32) |
Lijst<Float> |
VECTOR(%d, FLOAT32) |
| Float[] | VECTOR(%d, FLOAT32) |
| float[] | VECTOR(%d, FLOAT32) |