Справочник

Шпаргалка: компоненты и типовые схемы

Что из чего собирается. Удобно распечатать.

Семейства компонентов

СемействоРольТипичные представители
GeneratorsОбщение с языковой модельюOpenAIChatGenerator, AnthropicChatGenerator, OllamaChatGenerator
EmbeddersТекст → вектор смыслаSentenceTransformersTextEmbedder, OpenAITextEmbedder
RetrieversПоиск в хранилищеInMemoryBM25Retriever, PgvectorEmbeddingRetriever, QdrantEmbeddingRetriever
ConvertersФайлы → текстPyPDFToDocument, DOCXToDocument, HTMLToDocument
PreProcessorsЧистка и нарезкаDocumentCleaner, DocumentSplitter
BuildersСборка промптаChatPromptBuilder, PromptBuilder
RankersПересортировка результатовTransformersSimilarityRanker
RoutersВетвление по условиюConditionalRouter, FileTypeRouter
WritersЗапись в хранилищеDocumentWriter
EvaluatorsОценка качестваFaithfulnessEvaluator, ContextRelevanceEvaluator
AgentsЦикл с выбором инструментовAgent, обёртки PipelineTool, ComponentTool

Типовые схемы пайплайнов

Индексация (наполнение базы)

Файлы → Converter → Cleaner → Splitter → DocumentEmbedder → DocumentWriter → Store

RAG-запрос (ответ по базе)

Вопрос → TextEmbedder → Retriever → PromptBuilder → ChatGenerator → Ответ

Гибридный поиск

Вопрос → ┬ BM25Retriever ─┐
         └ EmbeddingRetriever ─┴→ DocumentJoiner → Ranker → PromptBuilder → LLM

Агент с базой знаний

Agent(chat_generator=модель, tools=[PipelineTool(RAG-пайплайн), функции, API], system_prompt=правила)

Минимальный скелет кода

pipe = Pipeline()
pipe.add_component("retriever", retriever)
pipe.add_component("prompt_builder", builder)
pipe.add_component("llm", generator)
pipe.connect("retriever", "prompt_builder.documents")
pipe.connect("prompt_builder", "llm")
result = pipe.run({"retriever": {"query": q}, "prompt_builder": {"question": q}})

Карта выбора Document Store

СитуацияВыбор
Прототип, обучение, тестыInMemoryDocumentStore
Уже есть PostgreSQL на сервереpgvector — векторный поиск без новой инфраструктуры
Большие объёмы, скорость векторного поискаQdrant (open source, ставится в Docker)
Сильный полнотекстовый поиск + гибридElasticsearch / OpenSearch
Не хочется держать свой серверPinecone и другие облачные
💬 Нужен рабочий пример под конкретную задачу? Попросите Клода собрать его на основе этих схем.