Skip to content

Commit fac4a19

Browse files
committed
fix: synchronize workspace detection markers and improve Qdrant error handling
1 parent 280b4eb commit fac4a19

4 files changed

Lines changed: 19 additions & 10 deletions

File tree

cmd/rag-code-mcp/main.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1203,9 +1203,9 @@ func ensureIDERules(cfg *config.Config, filePath string) {
12031203
}
12041204

12051205
workspaceRoot := ""
1206-
markers := []string{
1207-
".git", "go.mod", "package.json", "composer.json", "requirements.txt",
1208-
"vhost.conf",
1206+
markers := []string{".git", "go.mod", "package.json", "composer.json"}
1207+
if cfg != nil && len(cfg.Workspace.DetectionMarkers) > 0 {
1208+
markers = cfg.Workspace.DetectionMarkers
12091209
}
12101210

12111211
checkDir := dir

internal/config/loader.go

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,10 @@ func Load(path string) (*Config, error) {
4242
// Apply environment variable overrides
4343
applyEnvOverrides(&cfg)
4444

45+
// Auto-migrate again after env overrides (in memory) to ensure any deprecated models
46+
// from environment variables are also updated
47+
migrateEmbeddingModel(&cfg)
48+
4549
// Validate configuration
4650
if err := validate(&cfg); err != nil {
4751
return nil, fmt.Errorf("invalid configuration: %w", err)
@@ -276,11 +280,6 @@ func migrateEmbeddingModel(cfg *Config) bool {
276280

277281
// validate checks if the configuration is valid
278282
func validate(cfg *Config) error {
279-
// Auto-migrate deprecated embedding models
280-
if migrateEmbeddingModel(cfg) {
281-
log.Printf("✓ Configuration migrated to stable embedding model")
282-
}
283-
284283
// Default to ollama if provider is not set
285284
if cfg.LLM.Provider == "" {
286285
cfg.LLM.Provider = "ollama"

internal/tools/hybrid_search.go

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -154,6 +154,15 @@ func (t *HybridSearchTool) Execute(ctx context.Context, params map[string]interf
154154
docs, err = searchMemory.Search(ctx, queryEmbedding, fetchLimit)
155155
}
156156
if err != nil {
157+
errLower := strings.ToLower(err.Error())
158+
if strings.Contains(errLower, "dimension mismatch") ||
159+
(strings.Contains(errLower, "expected:") && (strings.Contains(errLower, "vector") || strings.Contains(errLower, "dimension"))) {
160+
return "", fmt.Errorf("❌ Vector dimension mismatch in collection '%s'.\n\n"+
161+
"This usually happens when you change the embedding model (e.g., from nomic to mxbai).\n"+
162+
"To fix this, please delete and recreate the index by running the 'index_workspace' tool with 'recreate': true.\n\n"+
163+
"Error details: %v",
164+
collectionName, err)
165+
}
157166
return "", fmt.Errorf("search failed: %w", err)
158167
}
159168

internal/tools/search_local_index.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -185,8 +185,9 @@ func (t *SearchLocalIndexTool) Execute(ctx context.Context, params map[string]in
185185

186186
if searchErr != nil {
187187
// Check for vector dimension mismatch (common when changing models)
188-
if strings.Contains(strings.ToLower(searchErr.Error()), "dimension mismatch") ||
189-
strings.Contains(strings.ToLower(searchErr.Error()), "expected:") {
188+
errLower := strings.ToLower(searchErr.Error())
189+
if strings.Contains(errLower, "dimension mismatch") ||
190+
(strings.Contains(errLower, "expected:") && (strings.Contains(errLower, "vector") || strings.Contains(errLower, "dimension"))) {
190191
return fmt.Sprintf("❌ Vector dimension mismatch in collection '%s'.\n\n"+
191192
"This usually happens when you change the embedding model (e.g., from nomic to mxbai).\n"+
192193
"To fix this, please delete and recreate the index by running:\n"+

0 commit comments

Comments
 (0)