decomposer

package
v1.0.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 14, 2026 License: Apache-2.0 Imports: 7 Imported by: 0

Documentation

Overview

Package decomposer implements query decomposition strategies.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type CompositeDecomposer

type CompositeDecomposer struct {
	// contains filtered or unexported fields
}

@sk-task sub-query-decomposition#T3.1: CompositeDecomposer (AC-005) CompositeDecomposer объединяет несколько QueryDecomposer'ов в цепочку fallback.

Порядок:

  1. Primary decomposer (LLM).
  2. Если primary вернул ошибку или nil/пустой — Secondary decomposer (Rule).
  3. Если secondary вернул ошибку или nil/пустой — возвращается nil (single-query fallback).

func NewCompositeDecomposer

func NewCompositeDecomposer(primary, secondary domain.QueryDecomposer) (*CompositeDecomposer, error)

NewCompositeDecomposer создаёт CompositeDecomposer с primary (LLM) и secondary (Rule) decomposer'ами. Оба decomposer'а должны быть не nil.

func (*CompositeDecomposer) Decompose

func (d *CompositeDecomposer) Decompose(ctx context.Context, query string) ([]string, error)

@sk-task sub-query-decomposition#T3.1: Decompose — composite chain (AC-005) Decompose выполняет primary → secondary → nil fallback chain.

type LLMQueryDecomposer

type LLMQueryDecomposer struct {
	// contains filtered or unexported fields
}

@sk-task sub-query-decomposition#T2.1: LLMQueryDecomposer (AC-002) LLMQueryDecomposer разбивает запрос на под-вопросы через LLM.

func NewLLMQueryDecomposer

func NewLLMQueryDecomposer(llm domain.LLMProvider, promptTemplate string) (*LLMQueryDecomposer, error)

NewLLMQueryDecomposer создаёт LLMQueryDecomposer. llm — обязательный LLMProvider. promptTemplate — опциональный system prompt (пустая строка = дефолтный).

func (*LLMQueryDecomposer) Decompose

func (d *LLMQueryDecomposer) Decompose(ctx context.Context, query string) ([]string, error)

@sk-task sub-query-decomposition#T2.1: Decompose — LLM-based (AC-002) Decompose разбивает запрос на под-вопросы через LLM. Парсит JSON-массив строк из ответа; при ошибке парсинга — fallback на regex extraction.

type RuleQueryDecomposer

type RuleQueryDecomposer struct{}

@sk-task sub-query-decomposition#T3.1: RuleQueryDecomposer (AC-003) RuleQueryDecomposer разбивает запрос на под-вопросы по союзам/разделителям.

Правила: - Разбивка по " и ", " или ", ", " (регистронезависимо). - Каждая часть возвращается как отдельный под-вопрос. - Если разделители не найдены — возвращается nil (single-query fallback). - Пустые части отбрасываются.

func NewRuleQueryDecomposer

func NewRuleQueryDecomposer() *RuleQueryDecomposer

NewRuleQueryDecomposer создаёт RuleQueryDecomposer.

func (*RuleQueryDecomposer) Decompose

func (d *RuleQueryDecomposer) Decompose(_ context.Context, query string) ([]string, error)

@sk-task sub-query-decomposition#T3.1: Decompose — rule-based (AC-003) Decompose разбивает запрос на под-вопросы по разделителям. Выбирает разделитель, который даёт максимальное количество частей.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL