forked from hangshuo652/aurak
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
This commit is contained in:
@@ -0,0 +1,52 @@
|
||||
# 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.
|
||||
Reference in New Issue
Block a user