SLURP: Add comprehensive LightRAG query parameter support #14

Open
opened 2025-10-04 02:06:48 +00:00 by tony · 0 comments
Owner

Feature Request: Enhanced RAG Query Parameter Support

Current State

SLURP currently only configures basic RAG integration parameters:

  • RAGEndpoint: URL to RAG service
  • RAGTimeout: Request timeout duration

See IntelligenceConfig in pkg/slurp/slurp.go:209-231

Problem

SLURP cannot leverage the full capabilities of LightRAG's query API. It uses only default parameters, which limits:

  • Query result quality control
  • Performance optimization
  • Context generation flexibility
  • Resource usage tuning

Requested Enhancement

Add comprehensive support for LightRAG query parameters:

1. Response Format Control

  • response_type: Control output format (e.g., "Multiple Paragraphs", "Single Paragraph", "Bullet Points")
  • Allows SLURP to request structured vs. narrative responses based on context needs

2. Knowledge Graph Retrieval

  • top_k: Number of KG entities/relationships to retrieve (default: 60)
  • Fine-tune graph traversal depth for different query types

3. Chunk Retrieval

  • chunk_top_k: Number of text chunks to retrieve (default: 10)
  • Balance between context breadth and token efficiency

4. Token Budget Management

  • max_entity_tokens: Maximum tokens for entity context
  • max_relation_tokens: Maximum tokens for relationship context
  • max_token_for_text_unit: Maximum tokens per text fragment
  • max_token_for_local_context: Local context token limit
  • max_token_for_global_context: Global context token limit
  • Critical for managing LLM context windows and costs

5. Reranking Control

  • enable_rerank: Toggle reranking for result quality
  • min_rerank_score: Minimum score threshold for inclusion

6. Query Modes

  • mode: Search strategy ("mix", "local", "global", "hybrid", "naive", "semantic", "keyword")
  • Different contexts may benefit from different retrieval strategies

7. Output Control

  • only_need_context: Return raw context without LLM generation
  • only_need_prompt: Return generated prompt without execution
  • Useful for debugging and optimization

8. Conversation History

  • history_turns: Number of conversation turns to include
  • Support for multi-turn context resolution

Proposed Implementation

Option 1: Extend IntelligenceConfig

type IntelligenceConfig struct {
    // ... existing fields ...
    
    // RAG query parameters
    RAGResponseFormat      string  `yaml:"rag_response_format" json:"rag_response_format"`
    RAGTopK               int     `yaml:"rag_top_k" json:"rag_top_k"`
    RAGChunkTopK          int     `yaml:"rag_chunk_top_k" json:"rag_chunk_top_k"`
    RAGMaxEntityTokens    int     `yaml:"rag_max_entity_tokens" json:"rag_max_entity_tokens"`
    RAGMaxRelationTokens  int     `yaml:"rag_max_relation_tokens" json:"rag_max_relation_tokens"`
    RAGMaxTextUnitTokens  int     `yaml:"rag_max_text_unit_tokens" json:"rag_max_text_unit_tokens"`
    RAGMaxLocalContext    int     `yaml:"rag_max_local_context" json:"rag_max_local_context"`
    RAGMaxGlobalContext   int     `yaml:"rag_max_global_context" json:"rag_max_global_context"`
    RAGEnableRerank       bool    `yaml:"rag_enable_rerank" json:"rag_enable_rerank"`
    RAGMinRerankScore     float64 `yaml:"rag_min_rerank_score" json:"rag_min_rerank_score"`
    RAGMode               string  `yaml:"rag_mode" json:"rag_mode"`
    RAGHistoryTurns       int     `yaml:"rag_history_turns" json:"rag_history_turns"`
}

Option 2: Per-Query Override
Add optional parameters to GenerateContext:

type RAGQueryOptions struct {
    ResponseFormat     string
    TopK              int
    ChunkTopK         int
    MaxEntityTokens   int
    MaxRelationTokens int
    MaxTextUnitTokens int
    EnableRerank      bool
    MinRerankScore    float64
    Mode              string
    OnlyContext       bool
    OnlyPrompt        bool
}

func (s *SLURP) GenerateContext(ctx context.Context, path string, 
    options *GenerationOptions, ragOpts *RAGQueryOptions) (*ContextNode, error)

Benefits

  1. Performance: Tune token limits to balance quality vs. cost
  2. Quality: Use reranking for critical context generation
  3. Flexibility: Different query modes for different use cases
  4. Debugging: Access raw context and prompts for optimization
  5. Cost Control: Precise token budget management
  6. Adaptability: Match retrieval strategy to query type

Acceptance Criteria

  • SLURP config supports all LightRAG query parameters
  • Parameters can be set globally in config
  • Parameters can be overridden per-query
  • Sensible defaults match LightRAG recommendations
  • Documentation updated with parameter descriptions
  • Examples showing different query configurations
  • Tests verify parameter passing to RAG endpoint
  • pkg/slurp/slurp.go - Main configuration
  • pkg/slurp/intelligence/ - Context generation (when implemented)
  • LightRAG API integration layer

Priority

Medium-High - This enables SLURP to fully leverage RAG capabilities and provides critical control over context generation quality and cost.

Labels

  • bzzz-task - Task coordination
  • enhancement - New feature
  • slurp - SLURP subsystem
  • rag - RAG integration
## Feature Request: Enhanced RAG Query Parameter Support ### Current State SLURP currently only configures basic RAG integration parameters: - `RAGEndpoint`: URL to RAG service - `RAGTimeout`: Request timeout duration See `IntelligenceConfig` in `pkg/slurp/slurp.go:209-231` ### Problem SLURP cannot leverage the full capabilities of LightRAG's query API. It uses only default parameters, which limits: - Query result quality control - Performance optimization - Context generation flexibility - Resource usage tuning ### Requested Enhancement Add comprehensive support for LightRAG query parameters: #### 1. **Response Format Control** - `response_type`: Control output format (e.g., "Multiple Paragraphs", "Single Paragraph", "Bullet Points") - Allows SLURP to request structured vs. narrative responses based on context needs #### 2. **Knowledge Graph Retrieval** - `top_k`: Number of KG entities/relationships to retrieve (default: 60) - Fine-tune graph traversal depth for different query types #### 3. **Chunk Retrieval** - `chunk_top_k`: Number of text chunks to retrieve (default: 10) - Balance between context breadth and token efficiency #### 4. **Token Budget Management** - `max_entity_tokens`: Maximum tokens for entity context - `max_relation_tokens`: Maximum tokens for relationship context - `max_token_for_text_unit`: Maximum tokens per text fragment - `max_token_for_local_context`: Local context token limit - `max_token_for_global_context`: Global context token limit - Critical for managing LLM context windows and costs #### 5. **Reranking Control** - `enable_rerank`: Toggle reranking for result quality - `min_rerank_score`: Minimum score threshold for inclusion #### 6. **Query Modes** - `mode`: Search strategy ("mix", "local", "global", "hybrid", "naive", "semantic", "keyword") - Different contexts may benefit from different retrieval strategies #### 7. **Output Control** - `only_need_context`: Return raw context without LLM generation - `only_need_prompt`: Return generated prompt without execution - Useful for debugging and optimization #### 8. **Conversation History** - `history_turns`: Number of conversation turns to include - Support for multi-turn context resolution ### Proposed Implementation **Option 1: Extend IntelligenceConfig** ```go type IntelligenceConfig struct { // ... existing fields ... // RAG query parameters RAGResponseFormat string `yaml:"rag_response_format" json:"rag_response_format"` RAGTopK int `yaml:"rag_top_k" json:"rag_top_k"` RAGChunkTopK int `yaml:"rag_chunk_top_k" json:"rag_chunk_top_k"` RAGMaxEntityTokens int `yaml:"rag_max_entity_tokens" json:"rag_max_entity_tokens"` RAGMaxRelationTokens int `yaml:"rag_max_relation_tokens" json:"rag_max_relation_tokens"` RAGMaxTextUnitTokens int `yaml:"rag_max_text_unit_tokens" json:"rag_max_text_unit_tokens"` RAGMaxLocalContext int `yaml:"rag_max_local_context" json:"rag_max_local_context"` RAGMaxGlobalContext int `yaml:"rag_max_global_context" json:"rag_max_global_context"` RAGEnableRerank bool `yaml:"rag_enable_rerank" json:"rag_enable_rerank"` RAGMinRerankScore float64 `yaml:"rag_min_rerank_score" json:"rag_min_rerank_score"` RAGMode string `yaml:"rag_mode" json:"rag_mode"` RAGHistoryTurns int `yaml:"rag_history_turns" json:"rag_history_turns"` } ``` **Option 2: Per-Query Override** Add optional parameters to `GenerateContext`: ```go type RAGQueryOptions struct { ResponseFormat string TopK int ChunkTopK int MaxEntityTokens int MaxRelationTokens int MaxTextUnitTokens int EnableRerank bool MinRerankScore float64 Mode string OnlyContext bool OnlyPrompt bool } func (s *SLURP) GenerateContext(ctx context.Context, path string, options *GenerationOptions, ragOpts *RAGQueryOptions) (*ContextNode, error) ``` ### Benefits 1. **Performance**: Tune token limits to balance quality vs. cost 2. **Quality**: Use reranking for critical context generation 3. **Flexibility**: Different query modes for different use cases 4. **Debugging**: Access raw context and prompts for optimization 5. **Cost Control**: Precise token budget management 6. **Adaptability**: Match retrieval strategy to query type ### Acceptance Criteria - [ ] SLURP config supports all LightRAG query parameters - [ ] Parameters can be set globally in config - [ ] Parameters can be overridden per-query - [ ] Sensible defaults match LightRAG recommendations - [ ] Documentation updated with parameter descriptions - [ ] Examples showing different query configurations - [ ] Tests verify parameter passing to RAG endpoint ### Related Components - `pkg/slurp/slurp.go` - Main configuration - `pkg/slurp/intelligence/` - Context generation (when implemented) - LightRAG API integration layer ### Priority **Medium-High** - This enables SLURP to fully leverage RAG capabilities and provides critical control over context generation quality and cost. ### Labels - `bzzz-task` - Task coordination - `enhancement` - New feature - `slurp` - SLURP subsystem - `rag` - RAG integration
tony added the
bzzz-task
enhancement
labels 2025-10-04 02:07:35 +00:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: tony/CHORUS#14
No description provided.