Files
aurak/docs/design/feat-query-expansion-hyde.md
T
Developer 0a9588abb7 feat: implement QuestionBank CRUD with pagination and template query
- Add pagination support to findAll (page, limit query params)
- Add findByTemplateId method to service
- Add GET /by-template/:templateId endpoint to controller
- Service already includes CRUD for QuestionBank and QuestionBankItem
2026-04-23 17:19:11 +08:00

53 lines
2.3 KiB
Markdown

# Feature Design: Query Expansion & HyDE Integration
This document outlines the design for improving search relevance in Lumina using Query Expansion (Multi-Query) and Hypothetical Document Embeddings (HyDE).
## Problem Statement
The current search implementation relies on the user's original query. Simple vector search can sometimes fail to match relevant documents due to:
1. **Keyword Mismatch**: The user might use different terminology than the document.
2. **Semantic Gap**: The query might be too brief to capture the full semantic context required for a good vector match.
## Proposed Solution
### 1. Query Expansion (Multi-Query)
We will use an LLM to generate 3 unique variations of the user's query. This helps to:
- Capture different facets of the user's intent.
- Increase the probability of hitting relevant segments in the knowledge base.
### 2. HyDE (Hypothetical Document Embeddings)
We will use an LLM to generate a brief "hypothetical" answer to the user's query.
- Instead of embedding the question, we embed the hypothetical answer.
- This often results in better vector matches because we are comparing "answer-like" vectors with "document-like" segments.
## Technical Implementation
### Backend Changes
#### `RagService` (server/src/rag/rag.service.ts)
- **New Methods**:
- `expandQuery(query: string, userId: string): Promise<string[]>`: Generates 3 variations of the query.
- `generateHyDE(query: string, userId: string): Promise<string>`: Generates a hypothetical document.
- **Update `searchKnowledge`**:
- Add `enableQueryExpansion` and `enableHyDE` parameters.
- Implement logic to handle multiple search requests (concurrently) and deduplicate results.
#### `ChatService` (server/src/chat/chat.service.ts)
- Pass the new search options from user settings or request parameters.
### Frontend Changes
#### `types.ts` (web/types.ts)
- Update `AppSettings` to include `enableQueryExpansion` and `enableHyDE`.
#### `SettingsDrawer.tsx`
- Add UI toggles for these new search enhancement features.
## Verification Plan
### Backend Logs
- Verify that LLM calls for expansion and HyDE are being made.
- Log the generated queries and hypothetical documents for debugging.
### Manual Verification
- Compare search results with and without these features enabled for complex queries.