Alkampfer.KernelMemory.ElasticSearch
0.10.0-alpha0009
dotnet add package Alkampfer.KernelMemory.ElasticSearch --version 0.10.0-alpha0009
NuGet\Install-Package Alkampfer.KernelMemory.ElasticSearch -Version 0.10.0-alpha0009
<PackageReference Include="Alkampfer.KernelMemory.ElasticSearch" Version="0.10.0-alpha0009" />
paket add Alkampfer.KernelMemory.ElasticSearch --version 0.10.0-alpha0009
#r "nuget: Alkampfer.KernelMemory.ElasticSearch, 0.10.0-alpha0009"
// Install Alkampfer.KernelMemory.ElasticSearch as a Cake Addin #addin nuget:?package=Alkampfer.KernelMemory.ElasticSearch&version=0.10.0-alpha0009&prerelease // Install Alkampfer.KernelMemory.ElasticSearch as a Cake Tool #tool nuget:?package=Alkampfer.KernelMemory.ElasticSearch&version=0.10.0-alpha0009&prerelease
Use ElasticSeach with Kernel Memory
In this project there is an opinionated implementation of IMemoryDb for Microsoft Kernel Memory based on the latest version of ElasticSearch >=8.13. This implementation was tested only on the latest version of ES 8, and it is not meant to work with older version.
This library implements only the Memory DB part, so you still need to configure a different database for Binary Storage in Kernel Memory.
Nuget
Package is published in Nuget Alkampfer.KernelMemory.ElasticSearch
Details of implementation
This implementation uses dynamic template mapping so we do not need to do nested object mapping, this was done to have a better schema of the object and a real simple way to query the data.
Search in payload
Kernel memory uses only tags to filter results, and the MemoryRecord has payload dictionary that contains non searchable fields. Actually this implementation was created to allow mixing vector search and BM25 search, so you have a special property called IndexablePayloadProperties in the configuration that allows you to specify which payload you want to be indexed and searchable.
You can use that kind of functionality with custom code like that one in Kernel Memory Extensions
Developing with ElasticSearch
You can run on local machine, run with docker or use an instance on the cloud. Check documentation at https://www.elastic.co/
Elasticsearch Version used to develop this driver
At the date of today the latest version that you can download is used, no work has been done to check compatibility with previous versions.
A ui to elastic
If you need an UI to manage your elastic search, you can use elasticsearch ui running in docker
docker run -d -p 5000:5000 elastichq/elasticsearch-hq
Then connect to the local instance of elastic at http://host.docker.internal:9200
You can also use kibana or other UI of your choice.
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. |
-
net8.0
- Alkampfer.KernelMemory.Extensions.Interfaces (>= 0.8.0)
- Elastic.Clients.Elasticsearch (>= 8.14.6)
- Microsoft.KernelMemory.Abstractions (>= 0.68.240716.1)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
Version | Downloads | Last updated |
---|---|---|
0.10.0-alpha0009 | 99 | 7/22/2024 |
0.10.0-alpha0005 | 89 | 7/22/2024 |
0.9.1 | 266 | 7/22/2024 |
0.9.0 | 118 | 7/22/2024 |
0.9.0-not-filter0006 | 107 | 7/8/2024 |
0.9.0-alpha0006 | 91 | 7/16/2024 |
0.9.0-alpha0005 | 109 | 7/5/2024 |
0.9.0-alpha0004 | 72 | 6/4/2024 |
0.8.0 | 119 | 6/4/2024 |
0.8.0-alpha0013 | 72 | 6/3/2024 |
0.8.0-alpha0012 | 75 | 6/1/2024 |
0.7.0 | 93 | 6/1/2024 |
0.7.0-bulkoperations0025 | 111 | 5/16/2024 |
0.7.0-beta0010 | 74 | 6/1/2024 |
0.7.0-beta0001 | 126 | 5/27/2024 |
0.7.0-beta0000 | 92 | 5/18/2024 |
0.7.0-alpha0025 | 84 | 5/17/2024 |
0.7.0-alpha0024 | 77 | 5/11/2024 |
0.7.0-alpha0020 | 105 | 5/8/2024 |
0.7.0-alpha0017 | 108 | 5/8/2024 |
0.7.0-alpha0014 | 88 | 4/26/2024 |
0.7.0-alpha0010 | 104 | 4/25/2024 |
0.7.0-alpha0009 | 100 | 4/25/2024 |
0.7.0-alpha0008 | 111 | 4/23/2024 |
0.6.4 | 94 | 5/11/2024 |
0.6.4-beta0001 | 77 | 5/11/2024 |
0.6.3 | 121 | 5/8/2024 |
0.6.3-beta0002 | 111 | 5/8/2024 |
0.6.3-beta0001 | 91 | 5/8/2024 |
0.6.2 | 100 | 5/8/2024 |
0.6.2-beta0001 | 90 | 5/8/2024 |
0.6.1 | 221 | 4/26/2024 |
0.6.1-beta0009 | 97 | 4/26/2024 |
0.6.1-beta0008 | 108 | 4/26/2024 |
0.6.0 | 151 | 4/23/2024 |
0.6.0-alpha0015 | 102 | 4/23/2024 |
0.6.0-alpha0014 | 107 | 4/20/2024 |
0.6.0-alpha0013 | 135 | 4/19/2024 |
0.6.0-alpha0012 | 91 | 4/17/2024 |
0.6.0-alpha0011 | 98 | 4/17/2024 |
0.6.0-alpha0010 | 103 | 4/17/2024 |
0.5.0 | 133 | 4/17/2024 |
0.5.0-nuget0017 | 157 | 4/17/2024 |
0.5.0-nuget0016 | 117 | 4/17/2024 |
0.5.0-nuget0015 | 146 | 4/17/2024 |
0.5.0-nuget0014 | 108 | 4/17/2024 |
0.5.0-nuget0013 | 113 | 4/17/2024 |
0.5.0-nuget0009 | 107 | 4/17/2024 |
0.5.0-beta0002 | 118 | 4/17/2024 |
0.5.0-beta0001 | 99 | 4/17/2024 |
0.5.0-beta0000 | 108 | 4/17/2024 |
0.5.0-alpha0006 | 111 | 4/17/2024 |