-
Notifications
You must be signed in to change notification settings - Fork 2.7k
feat: add Redis Open Source (Redis Query Engine) as alternative vector store for code indexing #10184
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
base: main
Are you sure you want to change the base?
Conversation
…de indexing Add Redis Stack with RediSearch as a user-selectable alternative to Qdrant for vector storage in code indexing. Users can choose between Qdrant and Redis via a dropdown in the Code Index settings. ## Changes ### New Files - `src/services/code-index/vector-store/redis-client.ts` - RedisVectorStore implementing IVectorStore interface with RediSearch HNSW-based vector search - `src/services/code-index/vector-store/__tests__/redis-client.spec.ts` - 41 unit tests for RedisVectorStore ### Modified Files - Type definitions updated for vector store provider selection and Redis config - Config manager updated to load and validate Redis settings - Service factory updated to create RedisVectorStore when provider is "redis" - UI updated with vector store provider dropdown and Redis configuration fields - Translations added for Redis-related labels and error messages ## Features - User-selectable vector store provider (Qdrant or Redis Stack) - RediSearch HNSW-based vector similarity search with COSINE distance - Path segment indexing for directory-scoped searches - Automatic index recreation on vector dimension mismatch - Backward compatible - defaults to Qdrant for existing installations ## Dependencies - Added `ioredis` for Redis connectivity 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <[email protected]>
Reviewed commit 1eb018b (CI re-run trigger). No code changes since last review. 1 previously flagged issue remains unresolved.
Mention @roomote in a comment to request specific changes to this pull request or fix all unresolved issues. |
| filePath: point.payload?.filePath || "", | ||
| codeChunk: point.payload?.codeChunk || "", | ||
| startLine: (point.payload?.startLine ?? 0).toString(), | ||
| endLine: (point.payload?.endLine ?? 0).toString(), |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Cross-platform bug: On Windows, path.sep is \, but file paths from Git and many JavaScript tools use forward slashes. If filePath is "src/components/Button.tsx" on Windows, split(path.sep) produces a single segment ["src/components/Button.tsx"] instead of three, breaking directory-scoped searches.
| endLine: (point.payload?.endLine ?? 0).toString(), | |
| const segments = point.payload?.filePath?.split(/[\/\\]/).filter(Boolean) || [] |
Fix it with Roo Code or mention @roomote and request a fix.
Add Redis vector store translation keys to all 17 non-English locale files: - embeddings.json: redisConnectionFailed, redisUrlMissing - settings.json: vectorStoreProviderLabel, qdrantProvider, redisProvider, redisUrlLabel, redisUrlPlaceholder, redisPasswordLabel, redisPasswordPlaceholder, redisDatabaseLabel, redisDatabasePlaceholder, validation.redisUrlRequired, validation.invalidRedisUrl Uses English text as placeholder - translations can be provided later. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <[email protected]>
…ack → Redis Open Source) Update naming to reflect Redis's current branding: - "RediSearch" is now "Redis Query Engine" - "Redis Stack" is now "Redis Open Source" Updated in: - redis-client.ts code comments - redis-client.spec.ts test mock - All 18 locale embeddings.json files - All 18 locale settings.json files 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <[email protected]>
Previously, entering "localhost:6379" (without redis:// prefix) would parse successfully via new URL() but produce an empty hostname, causing connection failures. Now the code checks if the parsed hostname is empty and falls back to simple host:port parsing. Added tests for simple host:port and host-only URL formats. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <[email protected]>
🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <[email protected]>
Summary
Add Redis Open Source with Redis Query Engine as a user-selectable alternative to Qdrant for vector storage in code indexing. This provides users with more flexibility in choosing their vector database backend.
RedisVectorStoreclass implementingIVectorStoreinterface with Redis Query Engine HNSW-based vector searchChanges
New Files
src/services/code-index/vector-store/redis-client.ts- Complete RedisVectorStore implementationsrc/services/code-index/vector-store/__tests__/redis-client.spec.ts- Unit testsModified Files
ioredisdependencyFeatures
Configuration
When Redis Open Source is selected:
redis://localhost:6379)Test plan
Related
🤖 Generated with Claude Code