-
Notifications
You must be signed in to change notification settings - Fork 76
Feat/index migrator #534
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
Draft
nkanu17
wants to merge
23
commits into
main
Choose a base branch
from
feat/index-migrator-v0-lc
base: main
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
+14,402
−47
Draft
Feat/index migrator #534
Changes from 15 commits
Commits
Show all changes
23 commits
Select commit
Hold shift + click to select a range
3fab84b
chore: remove unused imports and variables
nkanu17 1cb752f
docs(index-migrator): add planning workspace and repo guidance
nkanu17 309eccf
feat(migrate): add index migration CLI and core engine
nkanu17 ab8bb42
feat(migrate): add interactive migration wizard
nkanu17 0cc6736
docs(migrate): add migration guides and field attributes reference
nkanu17 0c29118
test(migrate): add migration planner, wizard, and integration tests
nkanu17 8d17a0f
chore: add nitin_docs and nitin_scripts to gitignore
nkanu17 cc42b77
feat(migrate): add async migration support
nkanu17 33ebf54
refactor(migrate): remove unused imports
nkanu17 183ffc5
feat:add batch indexing
nkanu17 5ec0bd1
feat(migrate): optimize doc enumeration and simplify CLI
nkanu17 9fe44d9
docs(migrations): fix typo in downtime considerations section
nkanu17 e1add9c
feat(migrate): add rename operations to planner
nkanu17 c08c727
feat(migrate): implement rename execution in sync/async executors
nkanu17 239a46f
feat(migrate): complete wizard with all supported operations
nkanu17 1521a4c
fix(migrate): robust schema validation with FT.INFO attribute handling
nkanu17 00181b3
fix(migrate): handle prefix changes in key_sample validation
nkanu17 516cc19
feat(migrate): add automatic functional validation with wildcard search
nkanu17 ab8a017
fix(migrate): HNSW param parsing and weight normalization for validation
nkanu17 b3d88a0
test(migrate): add integration tests for migration routes
nkanu17 d452eab
docs(migrate): update migration docs for new capabilities
nkanu17 4eee541
fix(migrate): address code review feedback
nkanu17 76a8719
fix(migrate): address PR review feedback
nkanu17 File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,165 @@ | ||
| # AGENTS.md - RedisVL Project Context | ||
|
|
||
| ## Frequently Used Commands | ||
|
|
||
| ```bash | ||
| # Development workflow | ||
| make install # Install dependencies | ||
| make format # Format code (black + isort) | ||
| make check-types # Run mypy type checking | ||
| make lint # Run all linting (format + types) | ||
| make test # Run tests (no external APIs) | ||
| make test-all # Run all tests (includes API tests) | ||
| make check # Full check (lint + test) | ||
|
|
||
| # Redis setup | ||
| make redis-start # Start Redis container | ||
| make redis-stop # Stop Redis container | ||
|
|
||
| # Documentation | ||
| make docs-build # Build documentation | ||
| make docs-serve # Serve docs locally | ||
| ``` | ||
|
|
||
| Pre-commit hooks are also configured, which you should | ||
| run before you commit: | ||
| ```bash | ||
| pre-commit run --all-files | ||
| ``` | ||
|
|
||
| ## Important Architectural Patterns | ||
|
|
||
| ### Async/Sync Dual Interfaces | ||
| - Most core classes have both sync and async versions (e.g., `SearchIndex` / `AsyncSearchIndex`) | ||
| - Follow existing patterns when adding new functionality | ||
|
|
||
| ### Schema-Driven Design | ||
| ```python | ||
| # Index schemas define structure | ||
| schema = IndexSchema.from_yaml("schema.yaml") | ||
| index = SearchIndex(schema, redis_url="redis://localhost:6379") | ||
| ``` | ||
|
|
||
| ## Critical Rules | ||
|
|
||
| ### Do Not Modify | ||
| - **CRITICAL**: Do not change this line unless explicitly asked: | ||
| ```python | ||
| token.strip().strip(",").replace(""", "").replace(""", "").lower() | ||
| ``` | ||
|
|
||
| ### Git Operations | ||
| **CRITICAL**: NEVER use `git push` or attempt to push to remote repositories. The user will handle all git push operations. | ||
|
|
||
| ### Branch and Commit Policy | ||
| **IMPORTANT**: Use conventional branch names and conventional commits. | ||
|
|
||
| Branch naming: | ||
| - Human-created branches should use `<type>/<short-kebab-description>` | ||
| - Automation-created branches may use `codex/<type>/<short-kebab-description>` | ||
| - Preferred branch types: `feat`, `fix`, `docs`, `refactor`, `test`, `chore`, `perf`, `build`, `ci` | ||
| - Examples: | ||
| - `feat/index-migrator` | ||
| - `fix/async-sentinel-pool` | ||
| - `docs/index-migrator-benchmarking` | ||
| - `codex/feat/index-migrator` | ||
|
|
||
| Commit messages: | ||
| - Use Conventional Commits: `<type>(optional-scope): <summary>` | ||
| - Preferred commit types: `feat`, `fix`, `docs`, `refactor`, `test`, `chore`, `perf`, `build`, `ci` | ||
| - Examples: | ||
| - `feat(migrate): add drop recreate planning docs` | ||
| - `docs(index-migrator): add benchmarking guidance` | ||
| - `fix(cli): validate migrate plan inputs` | ||
|
|
||
| ### Code Quality | ||
| **IMPORTANT**: Always run `make format` before committing code to ensure proper formatting and linting compliance. | ||
|
|
||
| ### README.md Maintenance | ||
| **IMPORTANT**: DO NOT modify README.md unless explicitly requested. | ||
|
|
||
| **If you need to document something, use these alternatives:** | ||
| - Development info → CONTRIBUTING.md | ||
| - API details → docs/ directory | ||
| - Examples → docs/examples/ | ||
| - Project memory (explicit preferences, directives, etc.) → AGENTS.md | ||
|
|
||
| ## Code Style Preferences | ||
|
|
||
| ### Import Organization | ||
| - **Prefer module-level imports** by default for clarity and standard Python conventions | ||
| - **Use local/inline imports only when necessary** for specific reasons: | ||
| - Avoiding circular import dependencies | ||
| - Improving startup time for heavy/optional dependencies | ||
| - Lazy loading for performance-critical paths | ||
| - When using local imports, add a brief comment explaining why (e.g., `# Local import to avoid circular dependency`) | ||
|
|
||
| ### Comments and Output | ||
| - **No emojis in code comments or print statements** | ||
| - Keep comments professional and focused on technical clarity | ||
| - Use emojis sparingly only in user-facing documentation (markdown files), not in Python code | ||
|
|
||
| ### General Guidelines | ||
| - Follow existing patterns in the RedisVL codebase | ||
| - Maintain consistency with the project's established conventions | ||
| - Run `make format` before committing to ensure code quality standards | ||
|
|
||
| ## Testing Notes | ||
| RedisVL uses `pytest` with `testcontainers` for testing. | ||
|
|
||
| - `make test` - unit tests only (no external APIs) | ||
| - `make test-all` - run the full suite, including tests that call external APIs | ||
| - `pytest --run-api-tests` - explicitly run API-dependent tests (e.g., LangCache, | ||
| external vectorizer/reranker providers). These require the appropriate API | ||
| keys and environment variables to be set. | ||
|
|
||
| ## Project Structure | ||
|
|
||
| ``` | ||
| redisvl/ | ||
| ├── cli/ # Command-line interface (rvl command) | ||
| ├── extensions/ # AI extensions (cache, memory, routing) | ||
| │ ├── cache/ # Semantic caching for LLMs | ||
| │ ├── llmcache/ # LLM-specific caching | ||
| │ ├── message_history/ # Chat history management | ||
| │ ├── router/ # Semantic routing | ||
| │ └── session_manager/ # Session management | ||
| ├── index/ # SearchIndex classes (sync/async) | ||
| ├── query/ # Query builders (Vector, Range, Filter, Count) | ||
| ├── redis/ # Redis client utilities | ||
| ├── schema/ # Index schema definitions | ||
| └── utils/ # Utilities (vectorizers, rerankers, optimization) | ||
| ├── rerank/ # Result reranking | ||
| └── vectorize/ # Embedding providers integration | ||
| ``` | ||
|
|
||
| ## Core Components | ||
|
|
||
| ### 1. Index Management | ||
| - `SearchIndex` / `AsyncSearchIndex` - Main interface for Redis vector indices | ||
| - `IndexSchema` - Define index structure with fields (text, tags, vectors, etc.) | ||
| - Support for JSON and Hash storage types | ||
|
|
||
| ### 2. Query System | ||
| - `VectorQuery` - Semantic similarity search | ||
| - `RangeQuery` - Vector search within distance range | ||
| - `FilterQuery` - Metadata filtering and full-text search | ||
| - `CountQuery` - Count matching records | ||
| - Etc. | ||
|
|
||
| ### 3. AI Extensions | ||
| - `SemanticCache` - LLM response caching with semantic similarity | ||
| - `EmbeddingsCache` - Cache for vector embeddings | ||
| - `MessageHistory` - Chat history with recency/relevancy retrieval | ||
| - `SemanticRouter` - Route queries to topics/intents | ||
|
|
||
| ### 4. Vectorizers (Optional Dependencies) | ||
| - OpenAI, Azure OpenAI, Cohere, HuggingFace, Mistral, VoyageAI | ||
| - Custom vectorizer support | ||
| - Batch processing capabilities | ||
|
|
||
| ## Documentation | ||
| - Main docs: https://docs.redisvl.com | ||
| - Built with Sphinx from `docs/` directory | ||
| - Includes API reference and user guides | ||
| - Example notebooks in documentation `docs/user_guide/...` |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.