Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions Directory.Packages.props
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
<PackageVersion Include="LLamaSharp.Backend.Cuda12" Version="0.11.2" />
<PackageVersion Include="Microsoft.ApplicationInsights.AspNetCore" Version="2.22.0" />
<PackageVersion Include="Microsoft.Bcl.AsyncInterfaces" Version="8.0.0" />
<PackageVersion Include="Microsoft.Data.SqlClient" Version="5.2.0" />
<PackageVersion Include="Microsoft.Extensions.Configuration" Version="8.0.0" />
<PackageVersion Include="Microsoft.Extensions.Configuration.Json" Version="8.0.0" />
<PackageVersion Include="Microsoft.Extensions.DependencyInjection" Version="8.0.0" />
Expand Down
9 changes: 8 additions & 1 deletion KernelMemory.sln
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@


Microsoft Visual Studio Solution File, Format Version 12.00

Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "clients", "clients", "{371BB479-AA1C-41CB-BF07-24C363601289}"
Expand Down Expand Up @@ -269,6 +269,8 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "dotnet", "dotnet", "{2165A5
infra\dotnet\nuget-package.props = infra\dotnet\nuget-package.props
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SQLServer", "extensions\SQLServer\SQLServer\SQLServer.csproj", "{B9BE1099-F78F-4A5F-A897-BF2C75E19C57}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Expand Down Expand Up @@ -348,6 +350,7 @@ Global
{8ADA17CD-B779-4817-B10A-E9D7B019088D} = {3C17F42B-CFC8-4900-8CFB-88936311E919}
{B488168B-AD86-4CC5-9D89-324B6EB743D9} = {6EF76FD8-4C35-4370-8539-5DDF45357A50}
{2165A553-E07E-4FF7-90DA-3F3643EA690D} = {B488168B-AD86-4CC5-9D89-324B6EB743D9}
{B9BE1099-F78F-4A5F-A897-BF2C75E19C57} = {155DA079-E267-49AF-973A-D1D44681970F}
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{8A9FA587-7EBA-4D43-BE47-38D798B1C74C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
Expand Down Expand Up @@ -562,5 +565,9 @@ Global
{8ADA17CD-B779-4817-B10A-E9D7B019088D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{8ADA17CD-B779-4817-B10A-E9D7B019088D}.Debug|Any CPU.Build.0 = Debug|Any CPU
{8ADA17CD-B779-4817-B10A-E9D7B019088D}.Release|Any CPU.ActiveCfg = Release|Any CPU
{B9BE1099-F78F-4A5F-A897-BF2C75E19C57}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{B9BE1099-F78F-4A5F-A897-BF2C75E19C57}.Debug|Any CPU.Build.0 = Debug|Any CPU
{B9BE1099-F78F-4A5F-A897-BF2C75E19C57}.Release|Any CPU.ActiveCfg = Release|Any CPU
{B9BE1099-F78F-4A5F-A897-BF2C75E19C57}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
EndGlobal
5 changes: 2 additions & 3 deletions extensions/SQLServer/README.md
Original file line number Diff line number Diff line change
@@ -1,10 +1,9 @@
# Kernel Memory with Microsoft SQL Server

[![Nuget package](https://img.shields.io/nuget/v/KernelMemory.MemoryStorage.SqlServer)](https://www.nuget.org/packages/KernelMemory.MemoryStorage.SqlServer/)
[![Nuget package](https://img.shields.io/nuget/v/Microsoft.KernelMemory.MemoryDb.SQLServer)](https://www.nuget.org/packages/Microsoft.KernelMemory.MemoryDb.SQLServer/)
[![Discord](https://img.shields.io/discord/1063152441819942922?label=Discord&logo=discord&logoColor=white&color=d82679)](https://aka.ms/KMdiscord)

This folder contains tests for the [MS SQL Server](https://www.microsoft.com/sql-server) extension for Kernel Memory
available [here](https://github.com/kbeaugrand/SemanticKernel.Connectors.Memory.SqlServer).
This folder contains tests for the [MS SQL Server](https://www.microsoft.com/sql-server) extension for Kernel Memory.

Please note that the connector should not be confused with a NL2SQL feature, e.g. the ability to query the content
of a pre-existing SQL server. If you are looking for a solution that allows to import content from a SQL server and make
Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,9 @@
// Copyright (c) Microsoft. All rights reserved.

#if FALSE
using KernelMemory.MemoryStorage.SqlServer;
using Microsoft.Core.FunctionalTests.DefaultTestCases;
using Microsoft.KernelMemory;
using Microsoft.TestHelpers;
using Microsoft.KernelMemory.MemoryDb.SQLServer;
using Microsoft.KM.Core.FunctionalTests.DefaultTestCases;
using Microsoft.KM.TestHelpers;

namespace Microsoft.SQLServer.FunctionalTests;

Expand Down Expand Up @@ -105,4 +104,3 @@ public async Task ItSupportsTags()
await DocumentUploadTest.ItSupportsTags(this._memory, this.Log);
}
}
#endif
74 changes: 74 additions & 0 deletions extensions/SQLServer/SQLServer/DependencyInjection.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
// Copyright (c) Microsoft. All rights reserved.

using Microsoft.Extensions.DependencyInjection;
using Microsoft.KernelMemory.MemoryDb.SQLServer;
using Microsoft.KernelMemory.MemoryStorage;

#pragma warning disable IDE0130 // reduce number of "using" statements
// ReSharper disable once CheckNamespace - reduce number of "using" statements
namespace Microsoft.KernelMemory;

/// <summary>
/// Extensions for KernelMemoryBuilder
/// </summary>
public static partial class KernelMemoryBuilderExtensions
{
/// <summary>
/// Kernel Memory Builder extension method to add SqlServer memory connector.
/// </summary>
/// <param name="builder">KM builder instance</param>
/// <param name="config">SqlServer configuration</param>
public static IKernelMemoryBuilder WithSqlServerMemoryDb(
this IKernelMemoryBuilder builder,
SqlServerConfig config)
{
builder.Services.AddSqlServerAsMemoryDb(config);
return builder;
}

/// <summary>
/// Kernel Memory Builder extension method to add SqlServer memory connector.
/// </summary>
/// <param name="builder">KM builder instance</param>
/// <param name="connString">SqlServer connection string</param>
public static IKernelMemoryBuilder WithSqlServerMemoryDb(
this IKernelMemoryBuilder builder,
string connString)
{
builder.Services.AddSqlServerAsMemoryDb(connString);
return builder;
}
}

/// <summary>
/// Extensions for KernelMemoryBuilder and generic DI
/// </summary>
public static partial class DependencyInjection
{
/// <summary>
/// Inject SqlServer as the default implementation of IMemoryDb
/// </summary>
/// <param name="services">Service collection</param>
/// <param name="config">Postgres configuration</param>
public static IServiceCollection AddSqlServerAsMemoryDb(
this IServiceCollection services,
SqlServerConfig config)
{
return services
.AddSingleton<SqlServerConfig>(config)
.AddSingleton<IMemoryDb, SqlServerMemory>();
}

/// <summary>
/// Inject SqlServer as the default implementation of IMemoryDb
/// </summary>
/// <param name="services">Service collection</param>
/// <param name="connString">Postgres connection string</param>
public static IServiceCollection AddSqlServerAsMemoryDb(
this IServiceCollection services,
string connString)
{
var config = new SqlServerConfig { ConnectionString = connString };
return services.AddSqlServerAsMemoryDb(config);
}
}
1 change: 0 additions & 1 deletion extensions/SQLServer/SQLServer/README.md

This file was deleted.

37 changes: 37 additions & 0 deletions extensions/SQLServer/SQLServer/SQLServer.csproj
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<TargetFramework>net8.0</TargetFramework>
<RollForward>LatestMajor</RollForward>
<AssemblyName>Microsoft.KernelMemory.MemoryDb.SQLServer</AssemblyName>
<RootNamespace>Microsoft.KernelMemory.MemoryDb.SQLServer</RootNamespace>
<NoWarn>$(NoWarn);KMEXP00;KMEXP03;CA1724;CS1591;CA1308;CA1859;</NoWarn>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>

<ItemGroup>
<ProjectReference Include="..\..\..\service\Abstractions\Abstractions.csproj" />
</ItemGroup>

<ItemGroup>
<PackageReference Include="Microsoft.Data.SqlClient" />
</ItemGroup>

<Import Project="../../../infra/dotnet/code-analysis.props" />

<Import Project="../../../infra/dotnet/nuget-package.props" />

<PropertyGroup>
<IsPackable>true</IsPackable>
<PackageId>Microsoft.KernelMemory.MemoryDb.SQLServer</PackageId>
<Product>MS SQLServer connector for Kernel Memory</Product>
<Description>MS SQLServer connector for Microsoft Kernel Memory, to store and search memory using MSSQL.</Description>
<PackageTags>MS SQLServer, RAG, Kernel Memory, Redis, HNSW, AI, Artificial Intelligence, Embeddings, Vector DB, Vector Search, ETL</PackageTags>
</PropertyGroup>

<ItemGroup>
<None Include="..\README.md" Link="README.md" Pack="true" PackagePath="." Visible="false" />
</ItemGroup>

</Project>
64 changes: 64 additions & 0 deletions extensions/SQLServer/SQLServer/SqlServerConfig.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
// Copyright (c) Microsoft. All rights reserved.

namespace Microsoft.KernelMemory.MemoryDb.SQLServer;

/// <summary>
/// Configuration for the SQL Server memory store.
/// </summary>
public class SqlServerConfig
{
/// <summary>
/// The default SQL Server collections table name.
/// </summary>
internal const string DefaultMemoryCollectionTableName = "KMCollections";

/// <summary>
/// The default SQL Server memories table name.
/// </summary>
internal const string DefaultMemoryTableName = "KMMemories";

/// <summary>
/// The default SQL Server embeddings table name.
/// </summary>
internal const string DefaultEmbeddingsTableName = "KMEmbeddings";

/// <summary>
/// The default SQL Server tags table name.
/// </summary>
internal const string DefaultTagsTableName = "KMMemoriesTags";

/// <summary>
/// The default schema used by the SQL Server memory store.
/// </summary>
public const string DefaultSchema = "dbo";

/// <summary>
/// The connection string to the SQL Server database.
/// </summary>
public string ConnectionString { get; set; } = null!;

/// <summary>
/// The schema used by the SQL Server memory store.
/// </summary>
public string Schema { get; set; } = DefaultSchema;

/// <summary>
/// The SQL Server collections table name.
/// </summary>
public string MemoryCollectionTableName { get; set; } = DefaultMemoryCollectionTableName;

/// <summary>
/// The SQL Server memories table name.
/// </summary>
public string MemoryTableName { get; set; } = DefaultMemoryTableName;

/// <summary>
/// The SQL Server embeddings table name.
/// </summary>
public string EmbeddingsTableName { get; set; } = DefaultEmbeddingsTableName;

/// <summary>
/// The SQL Server tags table name.
/// </summary>
public string TagsTableName { get; set; } = DefaultTagsTableName;
}
Loading