-
Notifications
You must be signed in to change notification settings - Fork 205
.NET install support #193
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Comments
I'm down to add a nuget package for sqlite-vec! Thanks for sharing the mod_spatialite sample, that helps a lot Do you mind sharing what your current code looks like? I've never tried .NET before and wanna make sure my mental model is right |
To use it in .NET you would do: var connection = new SqliteConection(<connection string here>);
connection.LoadExtension("vec0");
// open and use I'm still doing some experimentation, but from the looks of it, you just need to provide the path (absolute or relative) to where the extension is on disk. If you just do Once I have a better idea, I'm happy to submit a PR |
Came across a sample - https://github.com/dotnet/docs/blob/main/samples/snippets/standard/data/sqlite/ExtensionsSample/Program.cs It does require a bit of additional work, but that's at the consumer end, so something that wouldn't be shipped by this package |
Sweet, thanks for sharing! Another sample from the spatialite project: https://github.com/bricelam/mod_spatialite-NuGet/blob/master/test/Spatialite.Tests/Program.cs Hoping we can avoid the var connection = new SqliteConnection('...');
SqliteVec.load(connection); That matches the Python/Ruby/JavaScript APIs we have. That way we can resolve to the correct For generating the nuget package, ideally I'd like to package it with the (but dont worry about that, I can add that code, it's confusing code in Rust) |
I'd actually recommend to not include the loader logic, just the extension binaries, so then it becomes the responsibility of the consumer to load using whatever logic is going to make the most sense. For example, I want to use it in conjunction with the change I'm working on here: CommunityToolkit/Aspire#428 For this to work, I'd have code like this in the app host (defining the infra): var vectors = builder.AddSqlite("vectors").WithExtension("vec0");
builder.AddProject<Api>("api").WithReference(vectors); Then in the client (the API project) I would write: builder.AddSqlite("vectors"); And the Aspire integration takes care of loading the |
Hey @asg017 I've added you as a collaborator to my repo https://github.com/krwq/SqliteVec/invitations where there is an example code how to create such nuget package from binaries in this repository but I think this repo is better place for this nuget package as you could automatically provide updates. This is currently using powershell and .NET 8 to build the package. Please let me know if you have any questions. I can also help adding it here but I'm not super familiar with the code here. |
This will help solve asg017/sqlite-vec#193
Note that the package produced by @aaronpowell's PR needs efcore fix in order to work with In simple words, whenever the new version of https://www.nuget.org/packages/Microsoft.Data.Sqlite.Core shows up it should contain the necessary fix. Without this change it's necessary to pass in runtime identifier when running dotnet, i.e. |
Still commenting to not forget .NET Framework when doing these bindings, which may require some additional things in the nuget package etc. |
I want to use this with the .NET Sqlite library but there's no .NET/NuGet package that it's provided via which causes a bit of a workaround to use (manually copying the file).
NuGet packages support multiple architectures so it should be possible to bundle and ship a package.
Here's mod_spatialite as an example.
The text was updated successfully, but these errors were encountered: