-
Notifications
You must be signed in to change notification settings - Fork 3.3k
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
.Net: New Feature: Qdrant snapshot download support #9645
Comments
Hi @lilhoser, thanks for the feature request. Or do you mean in the Qdrant Client Library: https://github.com/qdrant/qdrant-dotnet/blob/main/src/Qdrant.Client/QdrantClient.cs#L3958 |
Yeah, the qdrant client ( I noticed SK interacts with the qdrant endpoint via http requests already for collection tasks, so it might be something to consider to extend to snapshots. This is useful to save/restore large qdrant collections if you want to migrate the data without regenerating it manually. I wasn't sure if this is what you folks had in mind on this TBD page: https://learn.microsoft.com/en-us/semantic-kernel/concepts/vector-store-connectors/serialization?pivots=programming-language-csharp Here is the code I'm using right now: Generate a snapshot:
Download the snapshot:
Upload the snapshot:
|
Thanks for the additional information. The value that we are trying to target with the VectorStore abstractions is
Snapshots is a really cool feature, but I don't believe it's very common. I haven't seen other DBs support this. If it's not supported across different DBs, adding it to the abstraction is not great because it will just throw NotSupportedException for all dbs except Qdrant. In this case we typically just recommend using the Qdrant SDK directly (assuming they can add the download feature to the client), since it seems like the right place for this to live. |
Yep, that makes sense! Just curious, what is the expected deliverable for the page I linked above regarding vector store serialization? My use case for the qdrant snapshot is so that users of my application can easily export and share large collections for analysis. |
About the vector store serialization page. Our Python connectors has some unique capabilities when it comes to converting to and from storage, and this is really about that conversion. On the .net side, we still need to add general details about how data model to storage conversion happens. This is typically already documented on each connector's page as well, but an overview here would be useful. Exporting and importing data to/from disk is an interesting use case. E.g. let's say we had some code that can query the DB for all records, download them, and then produce a json file or many json files in the format of the serialized data model objects. Also supporting an import with that could be really useful, since it allows easy data migration and backup/restore. There are some challenges here though. Such a process could be very long running depending on the data set size, so supporting recovery and restart from a failure point, if the process fails for some reason, would be very important. E.g. sort the results by field x asc, continuously save the last value of x downloaded, and restart by querying where x > the last downloaded value of x. While some vector dbs can be a bit restrictive when it comes to querying, this should be doable for most DBs. I'd say the starting point would be supporting more complex filtering capabilities for search, without vectors and with sorting. |
Thanks @westey-m - we can close this ticket if there is no new issue to file from this discussion (not sure if any of this is already on SK roadmap). |
We discussed this earlier and adding better search capabilities to support this kind of behavior makes sense, we just need to prioritize it, so will keep this issue to track. Thanks again @lilhoser for brining this up. |
name: Add an API to download a qdrant snapshot
about: SK already supports creating, enumerating and deleting snapshots, but there is no method to download it.
The text was updated successfully, but these errors were encountered: