Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Avertissement
La fonctionnalité de stockage vectoriel Sqlite est en version préliminaire, et des améliorations nécessitant des modifications disruptives peuvent toujours se produire dans des circonstances limitées avant la mise en production.
Avertissement
La fonctionnalité de stockage vectoriel du noyau sémantique est en phase de préversion et des améliorations nécessitant des modifications pouvant casser peuvent toujours intervenir dans des circonstances limitées avant la mise en production.
Avertissement
La fonctionnalité de stockage vectoriel du noyau sémantique est en phase de préversion et des améliorations nécessitant des modifications pouvant casser peuvent toujours intervenir dans des circonstances limitées avant la mise en production.
Vue d’ensemble
Le connecteur SQLite Vector Store peut être utilisé pour accéder aux données et les gérer dans SQLite. Le connecteur présente les caractéristiques suivantes.
| Zone Fonctionnalités | Soutien |
|---|---|
| Cartes de collection vers | Table de SQLite |
| Types de propriétés de clé pris en charge |
|
| Types de propriétés de données pris en charge |
|
| Types de propriétés vectorielles pris en charge |
|
| Types d’index pris en charge | Non applicable |
| Fonctions de distance prises en charge |
|
| Clauses de filtre prises en charge |
|
| Prend en charge plusieurs vecteurs dans un enregistrement | Oui |
| Est-ce queIndexed est pris en charge ? | Non |
| Est-ce queFullTextIndexed est pris en charge ? | Non |
| Le StorageName est-il pris en charge ? | Oui |
| HybridSearch est-il pris en charge ? | Non |
Mise en route
Ajoutez le package NuGet du connecteur SqLite Vector Store à votre projet.
dotnet add package Microsoft.SemanticKernel.Connectors.SqliteVec --prerelease
Vous pouvez ajouter le magasin de vecteurs au conteneur d’injection de dépendances à l’aide de méthodes d’extension fournies par le Semantic Kernel IServiceCollection.
using Microsoft.Extensions.DependencyInjection;
// Using IServiceCollection with ASP.NET Core.
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddSqliteVectorStore(_ => "Data Source=:memory:");
using Microsoft.Extensions.DependencyInjection;
using Microsoft.SemanticKernel;
// Using IServiceCollection with ASP.NET Core.
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddSqliteVectorStore(_ => "Data Source=:memory:")
Vous pouvez construire une instance SQLite Vector Store directement.
using Microsoft.SemanticKernel.Connectors.SqliteVec;
var vectorStore = new SqliteVectorStore("Data Source=:memory:");
Il est possible de construire une référence directe à une collection nommée.
using Microsoft.SemanticKernel.Connectors.SqliteVec;
var collection = new SqliteCollection<string, Hotel>("Data Source=:memory:", "skhotels");
Mappage de données
Le connecteur SQLite Vector Store fournit un mappeur par défaut lors du mappage du modèle de données au stockage. Ce mappeur effectue une conversion directe de la liste des propriétés du modèle de données vers les colonnes dans SQLite.
Avec l’extension de recherche vectorielle, les vecteurs sont stockés dans des tables virtuelles, séparément des propriétés de clé et de données.
Par défaut, la table virtuelle avec des vecteurs utilise le même nom que la table avec des propriétés de clé et de données, mais avec un vec_ préfixe. Par exemple, si le nom de la collection est SqliteCollectionskhotels, le nom de la table virtuelle avec des vecteurs est vec_skhotels. Il est possible de remplacer le nom de la table virtuelle à l’aide des propriétés SqliteVectorStoreOptions.VectorVirtualTableName ou SqliteCollectionOptions<TRecord>.VectorVirtualTableName.
Surcharge du nom de propriété
Vous pouvez fournir des noms de propriétés de remplacement à utiliser dans un système de stockage différent par rapport aux noms de propriétés sur le modèle de données.
Le remplacement du nom de propriété se fait en configurant l'option StorageName à l'aide des attributs de propriété du modèle de données ou de la définition d'enregistrement.
Voici un exemple de modèle de données avec StorageName défini sur ses attributs et comment cela sera représenté dans une commande SQLite.
using Microsoft.Extensions.VectorData;
public class Hotel
{
[VectorStoreKey]
public ulong HotelId { get; set; }
[VectorStoreData(StorageName = "hotel_name")]
public string? HotelName { get; set; }
[VectorStoreData(StorageName = "hotel_description")]
public string? Description { get; set; }
[VectorStoreVector(Dimensions: 4, DistanceFunction = DistanceFunction.CosineDistance)]
public ReadOnlyMemory<float>? DescriptionEmbedding { get; set; }
}
CREATE TABLE Hotels (
HotelId INTEGER PRIMARY KEY,
hotel_name TEXT,
hotel_description TEXT
);
CREATE VIRTUAL TABLE vec_Hotels (
HotelId INTEGER PRIMARY KEY,
DescriptionEmbedding FLOAT[4] distance_metric=cosine
);
Bientôt disponible
Plus d’informations prochainement.
JDBC
Le connecteur JDBC peut être utilisé pour se connecter à SQLite.