koan-vector-migration

Export and import cached embeddings between vector databases without regeneration.

4|3|Updated Aug 18, 2025
One-click install
npx skills add https://github.com/sylin-org/koan-framework --skill koan-vector-migration
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: koan-vector-migration
Source: https://github.com/sylin-org/koan-framework/tree/main/.claude/skills/vector-migration
Command: npx skills add https://github.com/sylin-org/koan-framework --skill koan-vector-migration

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve?

Migrating between different vector databases typically requires regenerating all embeddings, which is costly in terms of AI API calls and time. This Skill provides a strategy to export and import vectors without regeneration, enabling zero-cost migration between compatible vector stores.

Core Features & Use Cases

  • Zero-Cost Migration: Export existing embeddings from one vector database and import them into another without incurring AI API costs for re-embedding.
  • Embedding Caching: Cache embeddings after generation or export to facilitate quick transfers and reduce reliance on AI services during migration.
  • Provider Support: Supports export from ElasticSearch and Weaviate, with planned support for Qdrant and Milvus.
  • Use Case: You've built a semantic search feature using Weaviate, but now need to switch to ElasticSearch for better integration with your existing stack. Use this Skill to export all your product embeddings from Weaviate, update your configuration to ElasticSearch, and then import the cached embeddings, all without making new calls to your embedding model.

Quick Start

To export vectors from Weaviate to a cache, then import to ElasticSearch:

  1. Export from Weaviate: using (EntityContext.Adapter("weaviate")) { var vectorRepo = sp.GetRequiredService<IVectorSearchRepository<Media, string>>(); await foreach (var batch in vectorRepo.ExportAllAsync(batchSize: 100)) { await cache.SetAsync(batch.Id, "ada-002", batch.Embedding); } }
  2. Update appsettings.json to use elasticsearch adapter.
  3. Import to ElasticSearch: foreach (var mediaId in allMediaIds) { var embedding = await cache.GetAsync(mediaId, "ada-002"); if (embedding != null) { var media = new Media { Id = mediaId, Embedding = embedding }; await media.Save(); } }

Frequently Asked Questions about koan-vector-migration

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I migrate vectors between database providers without regenerating embeddings?

Vector migration enables zero-cost transfers by exporting embeddings from one database and importing them into another without AI API calls. Export vectors from your source provider (Weaviate, ElasticSearch) to cache, update your configuration, then import the cached embeddings into your target database.

Can I export embeddings from Weaviate and import them into ElasticSearch?

Yes. This Skill supports exporting vectors from Weaviate and importing into ElasticSearch through embedding caching. Export all embeddings using ExportAllAsync, store them in cache, switch your adapter configuration, then import cached embeddings without regeneration.

What vector databases does this migration support?

Export is currently supported from Weaviate and ElasticSearch. Import targets include ElasticSearch, Weaviate, Qdrant, and Milvus, with adapters available for future providers. Unsupported providers raise NotSupportedException.

How does embedding caching reduce AI costs during database migration?

Embedding caching stores exported vectors after initial generation, eliminating costly re-embedding API calls during provider migration. Cache lifecycle management enables batch processing of cached embeddings across compatible vector stores.

Do I need to regenerate embeddings when switching vector database providers?

No. This approach exports existing embeddings without regeneration, enabling zero-cost provider switches. Batch processing with minimal downtime transfers cached embeddings directly between ElasticSearch, Weaviate, Qdrant, and Milvus.

What happens if my vector database provider isn't supported?

Unsupported providers raise NotSupportedException during export or import operations. Currently supported providers are Weaviate, ElasticSearch, Qdrant, and Milvus; future adapters will expand compatibility.