Documentation
¶
Index ¶
- Variables
- type Pipeline
- func NewPipeline(store domain.VectorStore, llm domain.LLMProvider, embedder domain.Embedder) *Pipeline
- func NewPipelineWithChunker(store domain.VectorStore, llm domain.LLMProvider, embedder domain.Embedder, ...) *Pipeline
- func NewPipelineWithConfig(store domain.VectorStore, llm domain.LLMProvider, embedder domain.Embedder, ...) *Pipeline
- func (p *Pipeline) Answer(ctx context.Context, question string, topK int) (string, error)
- func (p *Pipeline) AnswerHyDE(ctx context.Context, question string, topK int) (string, error)
- func (p *Pipeline) AnswerHyDEStream(ctx context.Context, question string, topK int) (<-chan string, error)
- func (p *Pipeline) AnswerHyDEStreamWithInlineCitations(ctx context.Context, question string, topK int) (<-chan string, domain.RetrievalResult, []domain.InlineCitation, error)
- func (p *Pipeline) AnswerHyDEStreamWithSources(ctx context.Context, question string, topK int) (<-chan string, domain.RetrievalResult, error)
- func (p *Pipeline) AnswerHyDEWithCitations(ctx context.Context, question string, topK int) (string, domain.RetrievalResult, error)
- func (p *Pipeline) AnswerHyDEWithInlineCitations(ctx context.Context, question string, topK int) (string, domain.RetrievalResult, []domain.InlineCitation, error)
- func (p *Pipeline) AnswerHybrid(ctx context.Context, question string, topK int, config domain.HybridConfig) (string, error)
- func (p *Pipeline) AnswerHybridStream(ctx context.Context, question string, topK int, cfg domain.HybridConfig) (<-chan string, error)
- func (p *Pipeline) AnswerHybridStreamWithInlineCitations(ctx context.Context, question string, topK int, cfg domain.HybridConfig) (<-chan string, domain.RetrievalResult, []domain.InlineCitation, error)
- func (p *Pipeline) AnswerHybridStreamWithSources(ctx context.Context, question string, topK int, cfg domain.HybridConfig) (<-chan string, domain.RetrievalResult, error)
- func (p *Pipeline) AnswerHybridWithCitations(ctx context.Context, question string, topK int, cfg domain.HybridConfig) (string, domain.RetrievalResult, error)
- func (p *Pipeline) AnswerHybridWithInlineCitations(ctx context.Context, question string, topK int, cfg domain.HybridConfig) (string, domain.RetrievalResult, []domain.InlineCitation, error)
- func (p *Pipeline) AnswerMulti(ctx context.Context, question string, n, topK int) (string, error)
- func (p *Pipeline) AnswerMultiStream(ctx context.Context, question string, n, topK int) (<-chan string, error)
- func (p *Pipeline) AnswerMultiStreamWithInlineCitations(ctx context.Context, question string, n, topK int) (<-chan string, domain.RetrievalResult, []domain.InlineCitation, error)
- func (p *Pipeline) AnswerMultiStreamWithSources(ctx context.Context, question string, n, topK int) (<-chan string, domain.RetrievalResult, error)
- func (p *Pipeline) AnswerMultiWithCitations(ctx context.Context, question string, n, topK int) (string, domain.RetrievalResult, error)
- func (p *Pipeline) AnswerMultiWithInlineCitations(ctx context.Context, question string, n, topK int) (string, domain.RetrievalResult, []domain.InlineCitation, error)
- func (p *Pipeline) AnswerStream(ctx context.Context, question string, topK int) (<-chan string, error)
- func (p *Pipeline) AnswerStreamWithInlineCitations(ctx context.Context, question string, topK int) (<-chan string, domain.RetrievalResult, []domain.InlineCitation, error)
- func (p *Pipeline) AnswerStreamWithMetadataFilter(ctx context.Context, question string, topK int, filter domain.MetadataFilter) (<-chan string, error)
- func (p *Pipeline) AnswerStreamWithMetadataFilterWithInlineCitations(ctx context.Context, question string, topK int, filter domain.MetadataFilter) (<-chan string, domain.RetrievalResult, []domain.InlineCitation, error)
- func (p *Pipeline) AnswerStreamWithMetadataFilterWithSources(ctx context.Context, question string, topK int, filter domain.MetadataFilter) (<-chan string, domain.RetrievalResult, error)
- func (p *Pipeline) AnswerStreamWithParentIDs(ctx context.Context, question string, topK int, parentIDs []string) (<-chan string, error)
- func (p *Pipeline) AnswerStreamWithParentIDsWithInlineCitations(ctx context.Context, question string, topK int, parentIDs []string) (<-chan string, domain.RetrievalResult, []domain.InlineCitation, error)
- func (p *Pipeline) AnswerStreamWithParentIDsWithSources(ctx context.Context, question string, topK int, parentIDs []string) (<-chan string, domain.RetrievalResult, error)
- func (p *Pipeline) AnswerStreamWithSources(ctx context.Context, question string, topK int) (<-chan string, domain.RetrievalResult, error)
- func (p *Pipeline) AnswerWithCitations(ctx context.Context, question string, topK int) (string, domain.RetrievalResult, error)
- func (p *Pipeline) AnswerWithCitationsWithMetadataFilter(ctx context.Context, question string, topK int, filter domain.MetadataFilter) (string, domain.RetrievalResult, error)
- func (p *Pipeline) AnswerWithCitationsWithParentIDs(ctx context.Context, question string, topK int, parentIDs []string) (string, domain.RetrievalResult, error)
- func (p *Pipeline) AnswerWithInlineCitations(ctx context.Context, question string, topK int) (string, domain.RetrievalResult, []domain.InlineCitation, error)
- func (p *Pipeline) AnswerWithInlineCitationsWithMetadataFilter(ctx context.Context, question string, topK int, filter domain.MetadataFilter) (string, domain.RetrievalResult, []domain.InlineCitation, error)
- func (p *Pipeline) AnswerWithInlineCitationsWithParentIDs(ctx context.Context, question string, topK int, parentIDs []string) (string, domain.RetrievalResult, []domain.InlineCitation, error)
- func (p *Pipeline) AnswerWithMetadataFilter(ctx context.Context, question string, topK int, filter domain.MetadataFilter) (string, error)
- func (p *Pipeline) AnswerWithParentIDs(ctx context.Context, question string, topK int, parentIDs []string) (string, error)
- func (p *Pipeline) DeleteDocument(ctx context.Context, docID string) error
- func (p *Pipeline) Index(ctx context.Context, docs []domain.Document) error
- func (p *Pipeline) IndexBatch(ctx context.Context, docs []domain.Document, batchSize int) (*domain.IndexBatchResult, error)
- func (p *Pipeline) Query(ctx context.Context, question string, topK int) (domain.RetrievalResult, error)
- func (p *Pipeline) QueryHyDE(ctx context.Context, question string, topK int) (domain.RetrievalResult, error)
- func (p *Pipeline) QueryHybrid(ctx context.Context, question string, topK int, config domain.HybridConfig) (domain.RetrievalResult, error)
- func (p *Pipeline) QueryMulti(ctx context.Context, question string, n, topK int) (domain.RetrievalResult, error)
- func (p *Pipeline) QueryWithMetadataFilter(ctx context.Context, question string, topK int, filter domain.MetadataFilter) (domain.RetrievalResult, error)
- func (p *Pipeline) QueryWithParentIDs(ctx context.Context, question string, topK int, parentIDs []string) (domain.RetrievalResult, error)
- func (p *Pipeline) UpdateDocument(ctx context.Context, doc domain.Document) error
- type PipelineConfig
Constants ¶
This section is empty.
Variables ¶
var ( // ErrFiltersNotSupported возвращается, если pipeline-метод с фильтрами вызван, // но underlying VectorStore не поддерживает filters capability. ErrFiltersNotSupported = errors.New("vector store does not support filters") // ErrStreamingNotSupported возвращается, если streaming-метод вызван, // но underlying LLMProvider не поддерживает StreamingLLMProvider capability. ErrStreamingNotSupported = errors.New("LLM provider does not support streaming") // ErrDeleteNotSupported возвращается, если DeleteDocument вызван, // но underlying VectorStore не реализует DocumentStore capability. ErrDeleteNotSupported = errors.New("vector store does not support DeleteByParentID") )
var ErrHybridNotSupported = errors.New("vector store does not support hybrid search")
ErrHybridNotSupported возвращается, если pipeline-метод гибридного поиска вызван, но underlying VectorStore не поддерживает HybridSearcher capability.
Functions ¶
This section is empty.
Types ¶
type Pipeline ¶
type Pipeline struct {
// contains filtered or unexported fields
}
Pipeline — application use-case, который композирует зависимости (VectorStore, Embedder, LLMProvider) для построения базового RAG-пайплайна.
func NewPipeline ¶
func NewPipeline(store domain.VectorStore, llm domain.LLMProvider, embedder domain.Embedder) *Pipeline
NewPipeline создаёт новый use-case Pipeline.
func NewPipelineWithChunker ¶
func NewPipelineWithChunker( store domain.VectorStore, llm domain.LLMProvider, embedder domain.Embedder, chunker domain.Chunker, ) *Pipeline
NewPipelineWithChunker создаёт новый use-case Pipeline с Chunker для индексирования.
func NewPipelineWithConfig ¶
func NewPipelineWithConfig( store domain.VectorStore, llm domain.LLMProvider, embedder domain.Embedder, cfg PipelineConfig, ) *Pipeline
NewPipelineWithConfig создаёт новый use-case Pipeline с конфигурацией.
func (*Pipeline) Answer ¶
Answer выполняет полный RAG-цикл: retrieval (Embed+Search) → prompt → LLM.Generate.
func (*Pipeline) AnswerHyDE ¶
AnswerHyDE генерирует ответ, используя HyDE для retrieval.
func (*Pipeline) AnswerHyDEStream ¶
func (p *Pipeline) AnswerHyDEStream(ctx context.Context, question string, topK int) (<-chan string, error)
AnswerHyDEStream выполняет HyDE retrieval и streaming генерацию.
func (*Pipeline) AnswerHyDEStreamWithInlineCitations ¶
func (p *Pipeline) AnswerHyDEStreamWithInlineCitations(ctx context.Context, question string, topK int) (<-chan string, domain.RetrievalResult, []domain.InlineCitation, error)
AnswerHyDEStreamWithInlineCitations выполняет HyDE retrieval и streaming генерацию с inline-цитатами.
func (*Pipeline) AnswerHyDEStreamWithSources ¶
func (p *Pipeline) AnswerHyDEStreamWithSources(ctx context.Context, question string, topK int) (<-chan string, domain.RetrievalResult, error)
AnswerHyDEStreamWithSources выполняет HyDE retrieval и streaming генерацию. Возвращает канал токенов и RetrievalResult синхронно.
func (*Pipeline) AnswerHyDEWithCitations ¶
func (p *Pipeline) AnswerHyDEWithCitations(ctx context.Context, question string, topK int) (string, domain.RetrievalResult, error)
AnswerHyDEWithCitations выполняет HyDE retrieval и генерирует ответ с цитатами.
func (*Pipeline) AnswerHyDEWithInlineCitations ¶
func (p *Pipeline) AnswerHyDEWithInlineCitations(ctx context.Context, question string, topK int) (string, domain.RetrievalResult, []domain.InlineCitation, error)
AnswerHyDEWithInlineCitations выполняет HyDE retrieval и генерирует ответ с inline-цитатами.
func (*Pipeline) AnswerHybrid ¶
func (p *Pipeline) AnswerHybrid(ctx context.Context, question string, topK int, config domain.HybridConfig) (string, error)
AnswerHybrid выполняет гибридный поиск (BM25 + semantic) и генерирует ответ.
Если store не реализует HybridSearcher — возвращает ErrHybridNotSupported.
func (*Pipeline) AnswerHybridStream ¶
func (p *Pipeline) AnswerHybridStream(ctx context.Context, question string, topK int, cfg domain.HybridConfig) (<-chan string, error)
AnswerHybridStream выполняет Hybrid retrieval и streaming генерацию.
func (*Pipeline) AnswerHybridStreamWithInlineCitations ¶
func (p *Pipeline) AnswerHybridStreamWithInlineCitations(ctx context.Context, question string, topK int, cfg domain.HybridConfig) (<-chan string, domain.RetrievalResult, []domain.InlineCitation, error)
AnswerHybridStreamWithInlineCitations выполняет Hybrid retrieval и streaming генерацию с inline-цитатами.
func (*Pipeline) AnswerHybridStreamWithSources ¶
func (p *Pipeline) AnswerHybridStreamWithSources(ctx context.Context, question string, topK int, cfg domain.HybridConfig) (<-chan string, domain.RetrievalResult, error)
AnswerHybridStreamWithSources выполняет Hybrid retrieval и streaming генерацию. Возвращает канал токенов и RetrievalResult синхронно.
func (*Pipeline) AnswerHybridWithCitations ¶
func (p *Pipeline) AnswerHybridWithCitations(ctx context.Context, question string, topK int, cfg domain.HybridConfig) (string, domain.RetrievalResult, error)
AnswerHybridWithCitations выполняет Hybrid retrieval и генерирует ответ с цитатами.
func (*Pipeline) AnswerHybridWithInlineCitations ¶
func (p *Pipeline) AnswerHybridWithInlineCitations(ctx context.Context, question string, topK int, cfg domain.HybridConfig) (string, domain.RetrievalResult, []domain.InlineCitation, error)
AnswerHybridWithInlineCitations выполняет Hybrid retrieval и генерирует ответ с inline-цитатами.
func (*Pipeline) AnswerMulti ¶
AnswerMulti генерирует ответ используя multi-query retrieval.
func (*Pipeline) AnswerMultiStream ¶
func (p *Pipeline) AnswerMultiStream(ctx context.Context, question string, n, topK int) (<-chan string, error)
AnswerMultiStream выполняет MultiQuery retrieval и streaming генерацию.
func (*Pipeline) AnswerMultiStreamWithInlineCitations ¶
func (p *Pipeline) AnswerMultiStreamWithInlineCitations(ctx context.Context, question string, n, topK int) (<-chan string, domain.RetrievalResult, []domain.InlineCitation, error)
AnswerMultiStreamWithInlineCitations выполняет MultiQuery retrieval и streaming генерацию с inline-цитатами.
func (*Pipeline) AnswerMultiStreamWithSources ¶
func (p *Pipeline) AnswerMultiStreamWithSources(ctx context.Context, question string, n, topK int) (<-chan string, domain.RetrievalResult, error)
AnswerMultiStreamWithSources выполняет MultiQuery retrieval и streaming генерацию. Возвращает канал токенов и RetrievalResult синхронно.
func (*Pipeline) AnswerMultiWithCitations ¶
func (p *Pipeline) AnswerMultiWithCitations(ctx context.Context, question string, n, topK int) (string, domain.RetrievalResult, error)
AnswerMultiWithCitations выполняет MultiQuery retrieval и генерирует ответ с цитатами.
func (*Pipeline) AnswerMultiWithInlineCitations ¶
func (p *Pipeline) AnswerMultiWithInlineCitations(ctx context.Context, question string, n, topK int) (string, domain.RetrievalResult, []domain.InlineCitation, error)
AnswerMultiWithInlineCitations выполняет MultiQuery retrieval и генерирует ответ с inline-цитатами.
func (*Pipeline) AnswerStream ¶
func (p *Pipeline) AnswerStream( ctx context.Context, question string, topK int, ) (<-chan string, error)
AnswerStream выполняет RAG-цикл с streaming генерацией ответа. Возвращает канал для чтения текстовых чанков; канал закрывается при завершении или ошибке. Retrieval выполняется синхронно перед началом streaming'а.
@ds-task T2.3: Реализовать AnswerStream в application Pipeline (AC-001, DEC-003)
func (*Pipeline) AnswerStreamWithInlineCitations ¶
func (p *Pipeline) AnswerStreamWithInlineCitations( ctx context.Context, question string, topK int, ) (<-chan string, domain.RetrievalResult, []domain.InlineCitation, error)
AnswerStreamWithInlineCitations выполняет RAG-цикл с streaming генерацией и inline-цитатами. Возвращает канал для чтения текстовых чанков и слайс цитат (заполняется синхронно перед streaming'ом).
@ds-task T2.4: Реализовать AnswerStreamWithInlineCitations в application Pipeline (AC-002)
func (*Pipeline) AnswerStreamWithMetadataFilter ¶
func (p *Pipeline) AnswerStreamWithMetadataFilter(ctx context.Context, question string, topK int, filter domain.MetadataFilter) (<-chan string, error)
AnswerStreamWithMetadataFilter выполняет retrieval с фильтром по метаданным и streaming генерацию.
func (*Pipeline) AnswerStreamWithMetadataFilterWithInlineCitations ¶
func (p *Pipeline) AnswerStreamWithMetadataFilterWithInlineCitations(ctx context.Context, question string, topK int, filter domain.MetadataFilter) (<-chan string, domain.RetrievalResult, []domain.InlineCitation, error)
AnswerStreamWithMetadataFilterWithInlineCitations выполняет retrieval с фильтром по метаданным и streaming генерацию с inline-цитатами.
func (*Pipeline) AnswerStreamWithMetadataFilterWithSources ¶
func (p *Pipeline) AnswerStreamWithMetadataFilterWithSources(ctx context.Context, question string, topK int, filter domain.MetadataFilter) (<-chan string, domain.RetrievalResult, error)
AnswerStreamWithMetadataFilterWithSources выполняет retrieval с фильтром по метаданным и streaming генерацию. Возвращает канал токенов и RetrievalResult синхронно.
func (*Pipeline) AnswerStreamWithParentIDs ¶
func (p *Pipeline) AnswerStreamWithParentIDs(ctx context.Context, question string, topK int, parentIDs []string) (<-chan string, error)
AnswerStreamWithParentIDs выполняет retrieval с фильтром по ParentIDs и streaming генерацию.
func (*Pipeline) AnswerStreamWithParentIDsWithInlineCitations ¶
func (p *Pipeline) AnswerStreamWithParentIDsWithInlineCitations(ctx context.Context, question string, topK int, parentIDs []string) (<-chan string, domain.RetrievalResult, []domain.InlineCitation, error)
AnswerStreamWithParentIDsWithInlineCitations выполняет retrieval с фильтром по ParentIDs и streaming генерацию с inline-цитатами.
func (*Pipeline) AnswerStreamWithParentIDsWithSources ¶
func (p *Pipeline) AnswerStreamWithParentIDsWithSources(ctx context.Context, question string, topK int, parentIDs []string) (<-chan string, domain.RetrievalResult, error)
AnswerStreamWithParentIDsWithSources выполняет retrieval с фильтром по ParentIDs и streaming генерацию. Возвращает канал токенов и RetrievalResult синхронно.
func (*Pipeline) AnswerStreamWithSources ¶
func (p *Pipeline) AnswerStreamWithSources(ctx context.Context, question string, topK int) (<-chan string, domain.RetrievalResult, error)
AnswerStreamWithSources выполняет базовый retrieval и streaming генерацию. Возвращает канал токенов и RetrievalResult синхронно.
func (*Pipeline) AnswerWithCitations ¶
func (p *Pipeline) AnswerWithCitations(ctx context.Context, question string, topK int) (string, domain.RetrievalResult, error)
AnswerWithCitations выполняет полный RAG-цикл и возвращает retrieval evidence вместе с ответом.
Если retrieval уже выполнен, а Generate вернул ошибку, метод возвращает retrieval результат (partial) и ошибку, чтобы упростить диагностику и отображение источников.
func (*Pipeline) AnswerWithCitationsWithMetadataFilter ¶
func (p *Pipeline) AnswerWithCitationsWithMetadataFilter(ctx context.Context, question string, topK int, filter domain.MetadataFilter) (string, domain.RetrievalResult, error)
AnswerWithCitationsWithMetadataFilter выполняет retrieval с фильтром по метаданным и генерирует ответ с цитатами.
func (*Pipeline) AnswerWithCitationsWithParentIDs ¶
func (p *Pipeline) AnswerWithCitationsWithParentIDs( ctx context.Context, question string, topK int, parentIDs []string, ) (string, domain.RetrievalResult, error)
AnswerWithCitationsWithParentIDs выполняет RAG-цикл с фильтром по ParentIDs и возвращает retrieval evidence.
Если parentIDs пустой — эквивалентно AnswerWithCitations.
func (*Pipeline) AnswerWithInlineCitations ¶
func (p *Pipeline) AnswerWithInlineCitations( ctx context.Context, question string, topK int, ) (string, domain.RetrievalResult, []domain.InlineCitation, error)
AnswerWithInlineCitations выполняет полный RAG-цикл и возвращает ответ с inline-цитатами `[n]`, а также retrieval evidence и детерминированный маппинг `n -> chunk`.
Если retrieval уже выполнен, а Generate вернул ошибку, метод возвращает retrieval результат (partial), массив citations и ошибку.
func (*Pipeline) AnswerWithInlineCitationsWithMetadataFilter ¶
func (p *Pipeline) AnswerWithInlineCitationsWithMetadataFilter(ctx context.Context, question string, topK int, filter domain.MetadataFilter) (string, domain.RetrievalResult, []domain.InlineCitation, error)
AnswerWithInlineCitationsWithMetadataFilter выполняет retrieval с фильтром по метаданным и генерирует ответ с inline-цитатами.
func (*Pipeline) AnswerWithInlineCitationsWithParentIDs ¶
func (p *Pipeline) AnswerWithInlineCitationsWithParentIDs(ctx context.Context, question string, topK int, parentIDs []string) (string, domain.RetrievalResult, []domain.InlineCitation, error)
AnswerWithInlineCitationsWithParentIDs выполняет retrieval с фильтром по ParentIDs и генерирует ответ с inline-цитатами.
func (*Pipeline) AnswerWithMetadataFilter ¶
func (p *Pipeline) AnswerWithMetadataFilter(ctx context.Context, question string, topK int, filter domain.MetadataFilter) (string, error)
AnswerWithMetadataFilter выполняет retrieval с фильтром по метаданным и генерирует ответ.
Если filter.Fields пустой — эквивалентно Answer. Если store не реализует VectorStoreWithFilters — возвращает ErrFiltersNotSupported.
@ds-task T3.1: Добавить AnswerWithMetadataFilter в application.Pipeline (RQ-006, AC-003, DEC-003)
func (*Pipeline) AnswerWithParentIDs ¶
func (p *Pipeline) AnswerWithParentIDs(ctx context.Context, question string, topK int, parentIDs []string) (string, error)
AnswerWithParentIDs выполняет retrieval с фильтром по ParentIDs и генерирует ответ.
Если parentIDs пустой — эквивалентно Answer.
func (*Pipeline) DeleteDocument ¶
DeleteDocument удаляет документ и все его чанки по ParentID. Требует, чтобы VectorStore реализовывал domain.DocumentStore. Если store не поддерживает — возвращает ErrDeleteNotSupported.
func (*Pipeline) IndexBatch ¶
func (p *Pipeline) IndexBatch(ctx context.Context, docs []domain.Document, batchSize int) (*domain.IndexBatchResult, error)
IndexBatch индексирует документы параллельно с ограничением concurrency и rate limiting.
@ds-task T2.1: Реализовать IndexBatch с worker pool (AC-001, AC-003, AC-004, AC-005) @ds-task T2.2: Добавить rate limiter в IndexBatch (AC-002)
func (*Pipeline) Query ¶
func (p *Pipeline) Query(ctx context.Context, question string, topK int) (domain.RetrievalResult, error)
Query выполняет поиск по вопросу и возвращает RetrievalResult.
func (*Pipeline) QueryHyDE ¶
func (p *Pipeline) QueryHyDE(ctx context.Context, question string, topK int) (domain.RetrievalResult, error)
QueryHyDE выполняет поиск с использованием Hypothetical Document Embeddings. Сначала LLM генерирует гипотетический ответ на вопрос, затем ищем по его embedding.
func (*Pipeline) QueryHybrid ¶
func (p *Pipeline) QueryHybrid(ctx context.Context, question string, topK int, config domain.HybridConfig) (domain.RetrievalResult, error)
QueryHybrid выполняет гибридный поиск (BM25 + semantic) по вопросу.
Если store не реализует HybridSearcher — возвращает ErrHybridNotSupported.
func (*Pipeline) QueryMulti ¶
func (p *Pipeline) QueryMulti(ctx context.Context, question string, n, topK int) (domain.RetrievalResult, error)
QueryMulti выполняет multi-query retrieval: генерирует n перефразировок вопроса, выполняет поиск по каждой, объединяет результаты через Reciprocal Rank Fusion.
func (*Pipeline) QueryWithMetadataFilter ¶
func (p *Pipeline) QueryWithMetadataFilter(ctx context.Context, question string, topK int, filter domain.MetadataFilter) (domain.RetrievalResult, error)
QueryWithMetadataFilter выполняет поиск по вопросу с фильтром по метаданным документа.
Если filter.Fields пустой — эквивалентно Query. Если store не реализует VectorStoreWithFilters — возвращает ErrFiltersNotSupported.
@ds-task T3.1: Добавить QueryWithMetadataFilter в application.Pipeline (RQ-005, AC-003, DEC-003)
type PipelineConfig ¶
type PipelineConfig struct {
// SystemPrompt переопределяет system prompt для Answer*. Пустая строка означает дефолт v1.
SystemPrompt string
// Chunker включает чанкинг при Index, если не nil.
Chunker domain.Chunker
// MaxContextChars ограничивает размер секции “Контекст:” в prompt для Answer* (в символах).
// 0 означает “без лимита”.
MaxContextChars int
// MaxContextChunks ограничивает количество чанков в секции “Контекст:” в prompt для Answer*.
// 0 означает “без лимита”.
MaxContextChunks int
// DedupByParentID включает дедупликацию retrieval результата по ParentID.
// По умолчанию выключено.
DedupByParentID bool
// MMREnabled включает MMR selection поверх retrieval кандидатов.
// По умолчанию выключено (backward compatibility).
MMREnabled bool
// MMRLambda задаёт баланс релевантность/разнообразие в диапазоне [0..1].
// Если 0 и MMR включён — используется значение по умолчанию (0.5).
MMRLambda float64
// MMRCandidatePool задаёт сколько кандидатов запросить у VectorStore до MMR selection.
// Если 0 — используется topK запроса.
MMRCandidatePool int
// Hooks — опциональные хуки наблюдаемости для стадий pipeline.
// Если nil — no-op.
Hooks domain.Hooks
// IndexConcurrency задаёт количество workers для параллельной индексации в IndexBatch.
// 0 или отрицательное значение означает "использовать default" (4).
//
// @ds-task T1.2: Добавить поле IndexConcurrency в PipelineConfig (AC-001, DEC-001)
IndexConcurrency int
// IndexBatchRateLimit задаёт максимальное количество вызовов Embed в секунду для IndexBatch.
// 0 или отрицательное значение означает "использовать default" (10).
//
// @ds-task T1.2: Добавить поле IndexBatchRateLimit в PipelineConfig (AC-002, DEC-002)
IndexBatchRateLimit int
// Reranker — опциональный reranker, применяется после retrieval и dedup.
// nil означает "без reranking".
Reranker domain.Reranker
}
PipelineConfig задаёт опциональную конфигурацию application use-case Pipeline.