Description
The /api/v1/query endpoint uses a dummy embedding function instead of actual embeddings, making semantic search non-functional.
Location
File: backend/api-service/internal/handlers/handlers.go
Lines: 86-93, 202-219
Current Implementation
// For MVP: Placeholder for actual embedding generation
// In production, call embedding API or use local embeddings
embedding, err := qh.generateDummyEmbedding(req.Query)
The generateDummyEmbedding() function generates a deterministic but meaningless embedding based on a simple hash.
Problem
- Search results are not truly semantic
- Map iteration (
for knowledgeID := range scores) doesn't preserve similarity order
- Results returned in arbitrary order despite having similarity scores
Suggested Fix
- Call OpenAI embedding API (like ai-service does) or use local embedding model
- Add embedding config (API key, model) to
config/config.go
- Return sorted slice from
SearchSimilar() instead of map to preserve order
- Update
SearchByIDs() to maintain similarity ranking
Related Issues
Labels
enhancement, embeddings, backend, priority-high
Description
The
/api/v1/queryendpoint uses a dummy embedding function instead of actual embeddings, making semantic search non-functional.Location
File:
backend/api-service/internal/handlers/handlers.goLines: 86-93, 202-219
Current Implementation
The
generateDummyEmbedding()function generates a deterministic but meaningless embedding based on a simple hash.Problem
for knowledgeID := range scores) doesn't preserve similarity orderSuggested Fix
config/config.goSearchSimilar()instead of map to preserve orderSearchByIDs()to maintain similarity rankingRelated Issues
Labels
enhancement, embeddings, backend, priority-high