application

package
v0.2.0 Latest Latest
Warning

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

Go to latest
Published: Jun 10, 2026 License: Apache-2.0 Imports: 10 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	ErrFiltersNotSupported = errors.New("vector store does not support filters")

	ErrStreamingNotSupported = errors.New("LLM provider does not support streaming")

	ErrDeleteNotSupported = errors.New("vector store does not support DeleteByParentID")
)

Sentinel errors returned by Pipeline operations.

View Source
var ErrHybridNotSupported = errors.New("vector store does not support hybrid search")

ErrHybridNotSupported is returned when a hybrid search method is called but the underlying VectorStore does not implement HybridSearcher.

Functions

This section is empty.

Types

type Pipeline

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

Pipeline is the core RAG pipeline coordinating store, LLM, and embedder.

@sk-task hardening-2026q2#T1.1: Разделить pipeline.go на модули (AC-001, AC-003)

func NewPipeline

func NewPipeline(store domain.VectorStore, llm domain.LLMProvider, embedder domain.Embedder) (*Pipeline, error)

NewPipeline creates a Pipeline with required dependencies.

@sk-task hardening-2026q2#T1.1: Разделить pipeline.go на модули (AC-001, AC-003) @sk-task arch-quality-pass#T2.1: error return вместо panic для конфигурации (AC-002)

func NewPipelineWithChunker

func NewPipelineWithChunker(
	store domain.VectorStore,
	llm domain.LLMProvider,
	embedder domain.Embedder,
	chunker domain.Chunker,
) (*Pipeline, error)

NewPipelineWithChunker creates a Pipeline with an optional chunker.

@sk-task hardening-2026q2#T1.1: Разделить pipeline.go на модули (AC-001, AC-003) @sk-task arch-quality-pass#T2.1: error return вместо panic для конфигурации (AC-002)

func NewPipelineWithConfig

func NewPipelineWithConfig(
	store domain.VectorStore,
	llm domain.LLMProvider,
	embedder domain.Embedder,
	cfg PipelineOptions,
) (*Pipeline, error)

NewPipelineWithConfig creates a Pipeline with the given configuration.

@sk-task hardening-2026q2#T1.1: Разделить pipeline.go на модули (AC-001, AC-003) @sk-task arch-quality-pass#T2.1: error return вместо panic для конфигурации (AC-002) @sk-task arch-quality-pass#T3.2: принимает PipelineOptions вместо PipelineConfig (AC-004)

func (*Pipeline) Answer

func (p *Pipeline) Answer(ctx context.Context, question string, topK int) (string, error)

Answer выполняет полный RAG-цикл: retrieval (Embed+Search) → prompt → LLM.Generate.

@sk-task hardening-2026q2#T1.1: Разделить pipeline.go на модули (AC-001, AC-003) @sk-task api-consistency-pass#T2.1: wrapped domain.ErrEmptyQueryText/ErrInvalidQueryTopK в validation (RQ-003, AC-003)

func (*Pipeline) AnswerHyDE

func (p *Pipeline) AnswerHyDE(ctx context.Context, question string, topK int) (string, error)

AnswerHyDE генерирует ответ, используя HyDE для retrieval.

@sk-task hardening-2026q2#T1.1: Разделить pipeline.go на модули (AC-001, AC-003)

func (*Pipeline) AnswerHyDEStream

func (p *Pipeline) AnswerHyDEStream(ctx context.Context, question string, topK int) (<-chan string, error)

AnswerHyDEStream выполняет HyDE retrieval и streaming генерацию.

@sk-task hardening-2026q2#T1.1: Разделить pipeline.go на модули (AC-001, AC-003)

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-цитатами.

@sk-task hardening-2026q2#T1.1: Разделить pipeline.go на модули (AC-001, AC-003)

func (*Pipeline) AnswerHyDEStreamWithSources

func (p *Pipeline) AnswerHyDEStreamWithSources(ctx context.Context, question string, topK int) (<-chan string, domain.RetrievalResult, error)

AnswerHyDEStreamWithSources выполняет HyDE retrieval с streaming и возвращает источники.

@sk-task hardening-2026q2#T1.1: Разделить pipeline.go на модули (AC-001, AC-003)

func (*Pipeline) AnswerHyDEWithCitations

func (p *Pipeline) AnswerHyDEWithCitations(ctx context.Context, question string, topK int) (string, domain.RetrievalResult, error)

AnswerHyDEWithCitations выполняет HyDE retrieval и генерирует ответ с цитатами.

@sk-task hardening-2026q2#T1.1: Разделить pipeline.go на модули (AC-001, AC-003)

func (*Pipeline) AnswerHyDEWithInlineCitations

func (p *Pipeline) AnswerHyDEWithInlineCitations(ctx context.Context, question string, topK int) (string, domain.RetrievalResult, []domain.InlineCitation, error)

AnswerHyDEWithInlineCitations выполняет HyDE retrieval и генерирует ответ с inline-цитатами.

@sk-task hardening-2026q2#T1.1: Разделить pipeline.go на модули (AC-001, AC-003)

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.

@sk-task hardening-2026q2#T1.1: Разделить pipeline.go на модули (AC-001, AC-003) @sk-task api-consistency-pass#T2.1: wrapped domain.ErrEmptyQueryText/ErrInvalidQueryTopK в validation (RQ-003, AC-003)

func (*Pipeline) AnswerHybridStream

func (p *Pipeline) AnswerHybridStream(ctx context.Context, question string, topK int, cfg domain.HybridConfig) (<-chan string, error)

AnswerHybridStream выполняет Hybrid retrieval и streaming генерацию.

@sk-task hardening-2026q2#T1.1: Разделить pipeline.go на модули (AC-001, AC-003)

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-цитатами.

@sk-task hardening-2026q2#T1.1: Разделить pipeline.go на модули (AC-001, AC-003)

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 и возвращает источники.

@sk-task hardening-2026q2#T1.1: Разделить pipeline.go на модули (AC-001, AC-003)

func (*Pipeline) AnswerHybridWithCitations

func (p *Pipeline) AnswerHybridWithCitations(ctx context.Context, question string, topK int, cfg domain.HybridConfig) (string, domain.RetrievalResult, error)

AnswerHybridWithCitations выполняет Hybrid retrieval и генерирует ответ с цитатами.

@sk-task hardening-2026q2#T1.1: Разделить pipeline.go на модули (AC-001, AC-003)

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-цитатами.

@sk-task hardening-2026q2#T1.1: Разделить pipeline.go на модули (AC-001, AC-003)

func (*Pipeline) AnswerMulti

func (p *Pipeline) AnswerMulti(ctx context.Context, question string, n, topK int) (string, error)

AnswerMulti генерирует ответ используя multi-query retrieval.

@sk-task hardening-2026q2#T1.1: Разделить pipeline.go на модули (AC-001, AC-003)

func (*Pipeline) AnswerMultiStream

func (p *Pipeline) AnswerMultiStream(ctx context.Context, question string, n, topK int) (<-chan string, error)

AnswerMultiStream выполняет MultiQuery retrieval и streaming генерацию.

@sk-task hardening-2026q2#T1.1: Разделить pipeline.go на модули (AC-001, AC-003)

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-цитатами.

@sk-task hardening-2026q2#T1.1: Разделить pipeline.go на модули (AC-001, AC-003)

func (*Pipeline) AnswerMultiStreamWithSources

func (p *Pipeline) AnswerMultiStreamWithSources(ctx context.Context, question string, n, topK int) (<-chan string, domain.RetrievalResult, error)

AnswerMultiStreamWithSources выполняет MultiQuery retrieval с streaming и возвращает источники.

@sk-task hardening-2026q2#T1.1: Разделить pipeline.go на модули (AC-001, AC-003)

func (*Pipeline) AnswerMultiWithCitations

func (p *Pipeline) AnswerMultiWithCitations(ctx context.Context, question string, n, topK int) (string, domain.RetrievalResult, error)

AnswerMultiWithCitations выполняет MultiQuery retrieval и генерирует ответ с цитатами.

@sk-task hardening-2026q2#T1.1: Разделить pipeline.go на модули (AC-001, AC-003)

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-цитатами.

@sk-task hardening-2026q2#T1.1: Разделить pipeline.go на модули (AC-001, AC-003)

func (*Pipeline) AnswerStream

func (p *Pipeline) AnswerStream(
	ctx context.Context,
	question string,
	topK int,
) (<-chan string, error)

AnswerStream выполняет RAG-цикл с streaming генерацией ответа. Возвращает канал для чтения текстовых чанков; канал закрывается при завершении или ошибке. Retrieval выполняется синхронно перед началом streaming'а.

@sk-task hardening-2026q2#T1.1: Разделить pipeline.go на модули (AC-001, AC-003) @sk-task api-consistency-pass#T2.1: wrapped domain.ErrEmptyQueryText/ErrInvalidQueryTopK в validation (RQ-003, AC-003) @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'ом).

@sk-task hardening-2026q2#T1.1: Разделить pipeline.go на модули (AC-001, AC-003) @sk-task api-consistency-pass#T2.1: wrapped domain.ErrEmptyQueryText/ErrInvalidQueryTopK в validation (RQ-003, AC-003) @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 генерацию.

@sk-task hardening-2026q2#T1.1: Разделить pipeline.go на модули (AC-001, AC-003)

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-цитатами.

@sk-task hardening-2026q2#T1.1: Разделить pipeline.go на модули (AC-001, AC-003)

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 и возвращает источники.

@sk-task hardening-2026q2#T1.1: Разделить pipeline.go на модули (AC-001, AC-003)

func (*Pipeline) AnswerStreamWithParentIDs

func (p *Pipeline) AnswerStreamWithParentIDs(ctx context.Context, question string, topK int, parentIDs []string) (<-chan string, error)

AnswerStreamWithParentIDs выполняет retrieval с фильтром по ParentIDs и streaming генерацию.

@sk-task hardening-2026q2#T1.1: Разделить pipeline.go на модули (AC-001, AC-003)

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-цитатами.

@sk-task hardening-2026q2#T1.1: Разделить pipeline.go на модули (AC-001, AC-003)

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 и возвращает источники.

@sk-task hardening-2026q2#T1.1: Разделить pipeline.go на модули (AC-001, AC-003)

func (*Pipeline) AnswerStreamWithSources

func (p *Pipeline) AnswerStreamWithSources(ctx context.Context, question string, topK int) (<-chan string, domain.RetrievalResult, error)

AnswerStreamWithSources выполняет RAG-цикл с streaming и возвращает источники.

@sk-task hardening-2026q2#T1.1: Разделить pipeline.go на модули (AC-001, AC-003)

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) и ошибку, чтобы упростить диагностику и отображение источников.

@sk-task hardening-2026q2#T1.1: Разделить pipeline.go на модули (AC-001, AC-003) @sk-task api-consistency-pass#T2.1: wrapped domain.ErrEmptyQueryText/ErrInvalidQueryTopK в validation (RQ-003, AC-003)

func (*Pipeline) AnswerWithCitationsWithMetadataFilter

func (p *Pipeline) AnswerWithCitationsWithMetadataFilter(ctx context.Context, question string, topK int, filter domain.MetadataFilter) (string, domain.RetrievalResult, error)

AnswerWithCitationsWithMetadataFilter выполняет retrieval с фильтром по метаданным и генерирует ответ с цитатами.

@sk-task hardening-2026q2#T1.1: Разделить pipeline.go на модули (AC-001, AC-003)

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.

@sk-task hardening-2026q2#T1.1: Разделить pipeline.go на модули (AC-001, AC-003) @sk-task api-consistency-pass#T2.1: wrapped domain.ErrEmptyQueryText/ErrInvalidQueryTopK в validation (RQ-003, AC-003)

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 и ошибку.

@sk-task hardening-2026q2#T1.1: Разделить pipeline.go на модули (AC-001, AC-003) @sk-task api-consistency-pass#T2.1: wrapped domain.ErrEmptyQueryText/ErrInvalidQueryTopK в validation (RQ-003, AC-003)

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-цитатами.

@sk-task hardening-2026q2#T1.1: Разделить pipeline.go на модули (AC-001, AC-003)

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-цитатами.

@sk-task hardening-2026q2#T1.1: Разделить pipeline.go на модули (AC-001, AC-003)

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) @sk-task hardening-2026q2#T1.1: Разделить pipeline.go на модули (AC-001, AC-003) @sk-task api-consistency-pass#T2.1: wrapped domain.ErrEmptyQueryText/ErrInvalidQueryTopK в validation (RQ-003, AC-003)

func (*Pipeline) AnswerWithParentIDs

func (p *Pipeline) AnswerWithParentIDs(ctx context.Context, question string, topK int, parentIDs []string) (string, error)

AnswerWithParentIDs выполняет retrieval с фильтром по ParentIDs и генерирует ответ.

Если parentIDs пустой — эквивалентно Answer.

@sk-task hardening-2026q2#T1.1: Разделить pipeline.go на модули (AC-001, AC-003)

func (*Pipeline) DeleteDocument

func (p *Pipeline) DeleteDocument(ctx context.Context, docID string) error

DeleteDocument deletes all chunks belonging to a document by its ID.

@sk-task hardening-2026q2#T1.1: Разделить pipeline.go на модули (AC-001, AC-003)

func (*Pipeline) Index

func (p *Pipeline) Index(ctx context.Context, docs []domain.Document) error

Index индексирует набор документов параллельно с ограничением

@sk-task hardening-2026q2#T1.1: Разделить pipeline.go на модули (AC-001, AC-003) @sk-task api-consistency-pass#T3.1: параллельная обработка Index через processDocsConcurrently (DEC-004, RQ-004, AC-006)

Index индексирует набор документов параллельно с ограничением p.indexConcurrency и rateLimit p.indexBatchRateLimit.

Семантика fail-fast: при первой ошибке обработки cancel-ит in-flight siblings и возвращает оригинальную ошибку (не context.Canceled). Документы, не прошедшие Validate, также прерывают выполнение и возвращают первую такую ошибку.

Параллелизм: реализовано через processDocsConcurrently (T1.2). На каждую документную goroutine — отдельный семафор слот и общий rate-limiter.

func (*Pipeline) IndexBatch

func (p *Pipeline) IndexBatch(ctx context.Context, docs []domain.Document, batchSize int) (*domain.IndexBatchResult, error)

IndexBatch индексирует набор документов параллельно и возвращает aggregate результат (успешные + ошибки по документам). batchSize интерпретируется как желаемая concurrency: при batchSize <= 0 используется p.indexConcurrency.

Семантика: best-effort — не отменяет siblings при ошибке отдельного документа. Это отличие от Index, который fail-fast.

@sk-task hardening-2026q2#T1.1: Разделить pipeline.go на модули (AC-001, AC-003) @sk-task api-consistency-pass#T1.2: рефактор — IndexBatch как тонкая обёртка над processDocsConcurrently (DEC-004, RQ-004) @sk-task api-consistency-pass#T3.1: shared processDocumentOp между Index и IndexBatch (DEC-004, RQ-004, AC-006)

func (*Pipeline) Query

func (p *Pipeline) Query(ctx context.Context, question string, topK int) (domain.RetrievalResult, error)

Query выполняет поиск по вопросу и возвращает RetrievalResult.

@sk-task hardening-2026q2#T1.1: Разделить pipeline.go на модули (AC-001, AC-003) @sk-task api-consistency-pass#T2.1: wrapped domain.ErrEmptyQueryText/ErrInvalidQueryTopK в validation (RQ-003, AC-003)

func (*Pipeline) QueryHyDE

func (p *Pipeline) QueryHyDE(ctx context.Context, question string, topK int) (domain.RetrievalResult, error)

QueryHyDE выполняет поиск с использованием Hypothetical Document Embeddings.

@sk-task hardening-2026q2#T1.1: Разделить pipeline.go на модули (AC-001, AC-003) Сначала 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.

@sk-task hardening-2026q2#T1.1: Разделить pipeline.go на модули (AC-001, AC-003) @sk-task api-consistency-pass#T2.1: wrapped domain.ErrEmptyQueryText/ErrInvalidQueryTopK в validation (RQ-003, AC-003)

func (*Pipeline) QueryMulti

func (p *Pipeline) QueryMulti(ctx context.Context, question string, n, topK int) (domain.RetrievalResult, error)

QueryMulti выполняет multi-query retrieval: генерирует n перефразировок вопроса,

@sk-task hardening-2026q2#T1.1: Разделить pipeline.go на модули (AC-001, AC-003) выполняет поиск по каждой, объединяет результаты через 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) @sk-task hardening-2026q2#T1.1: Разделить pipeline.go на модули (AC-001, AC-003) @sk-task api-consistency-pass#T2.1: wrapped domain.ErrEmptyQueryText/ErrInvalidQueryTopK в validation (RQ-003, AC-003)

func (*Pipeline) QueryWithParentIDs

func (p *Pipeline) QueryWithParentIDs(ctx context.Context, question string, topK int, parentIDs []string) (domain.RetrievalResult, error)

QueryWithParentIDs выполняет поиск по вопросу с фильтром по ParentIDs.

Если parentIDs пустой — эквивалентно Query.

@sk-task hardening-2026q2#T1.1: Разделить pipeline.go на модули (AC-001, AC-003) @sk-task api-consistency-pass#T2.1: wrapped domain.ErrEmptyQueryText/ErrInvalidQueryTopK в validation (RQ-003, AC-003)

func (*Pipeline) UpdateDocument

func (p *Pipeline) UpdateDocument(ctx context.Context, doc domain.Document) error

UpdateDocument выполняет атомарное обновление документа через

@sk-task hardening-2026q2#T1.1: Разделить pipeline.go на модули (AC-001, AC-003) @sk-task api-consistency-pass#T3.2: делегирует в updateDocumentAtomic (DEC-005, RQ-005, AC-008, AC-009)

UpdateDocument выполняет атомарное обновление документа через updateDocumentAtomic, который выбирает transactional или best-effort путь в зависимости от capability underlying store.

type PipelineOptions added in v0.2.0

type PipelineOptions struct {
	SystemPrompt                 string
	Chunker                      domain.Chunker
	MaxContextChars              int
	MaxContextChunks             int
	DedupByParentID              bool
	MMREnabled                   bool
	MMRLambda                    float64
	MMRCandidatePool             int
	Hooks                        domain.Hooks
	IndexConcurrency             int
	IndexBatchRateLimit          int
	IndexBatchRateLimitPerWorker bool
	StreamBufferSize             int
	Reranker                     domain.Reranker
}

PipelineOptions configures a Pipeline behaviour.

@sk-task hardening-2026q2#T1.1: Разделить pipeline.go на модули (AC-001, AC-003) @sk-task arch-quality-pass#T3.2: единый struct конфигурации (AC-004)

Jump to

Keyboard shortcuts

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