警告
Sqlite Vector Store 功能处于预览状态,需要重大更改的改进可能仍发生在发布前的有限情况下。
警告
语义内核向量存储功能处于预览状态,需要中断性变更的改进可能仍发生在发布前的有限情况下。
警告
语义内核向量存储功能处于预览状态,需要中断性变更的改进可能仍发生在发布前的有限情况下。
概述
SQLite Vector Store 连接器可用于访问和管理 SQLite 中的数据。 连接器具有以下特征。
功能区域 | 支持 |
---|---|
集合映射至 | SQLite 表 |
支持的键属性类型 |
|
支持的数据属性类型 |
|
支持的向量属性类型 |
|
支持的索引类型 | 空值 |
支持的距离函数 |
|
支持的过滤器子句 |
|
支持记录中的多个向量 | 是 |
是否支持 IsIndexed? | 否 |
是否支持FullTextIndexed? | 否 |
StorageName支持吗? | 是 |
支持 HybridSearch? | 否 |
入门
将 SQLite Vector Store 连接器 NuGet 包添加到项目。
dotnet add package Microsoft.SemanticKernel.Connectors.SqliteVec --prerelease
可以使用语义内核提供的扩展方法将向量存储 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:")
可以直接构造 SQLite 矢量存储实例。
using Microsoft.SemanticKernel.Connectors.SqliteVec;
var vectorStore = new SqliteVectorStore("Data Source=:memory:");
可以构造对命名集合的直接引用。
using Microsoft.SemanticKernel.Connectors.SqliteVec;
var collection = new SqliteCollection<string, Hotel>("Data Source=:memory:", "skhotels");
数据映射
从数据模型映射到存储时,SQLite Vector Store 连接器提供默认映射器。 此映射器将数据模型中的属性列表直接转换为 SQLite 中的列。
借助矢量搜索扩展,矢量存储在虚拟表中,独立于键和数据属性。
默认情况下,具有矢量的虚拟表将使用与具有键和数据属性的表相同的名称,但具有 vec_
前缀。 例如,如果SqliteCollection
中的集合名称是skhotels
,那么包含矢量的虚拟表的名称将是vec_skhotels
。 可以通过使用SqliteVectorStoreOptions.VectorVirtualTableName
或SqliteCollectionOptions<TRecord>.VectorVirtualTableName
属性来覆盖虚拟表名称。
属性名称重写
可以提供替代属性名称,用于存储中与数据模型的属性名称不同的属性名称。
属性名称重写是通过数据模型属性属性或记录定义设置 StorageName
选项来完成的。
下面是一个数据模型示例,其中在其属性上应用了StorageName
,以及这些数据模型将如何在 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
);
即将推出
更多信息即将推出。
JDBC
JDBC 连接器可用于连接到 SQLite。