Что из чего собирается. Удобно распечатать.
| Семейство | Роль | Типичные представители |
|---|---|---|
| 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
Вопрос → 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}})
| Ситуация | Выбор |
|---|---|
| Прототип, обучение, тесты | InMemoryDocumentStore |
| Уже есть PostgreSQL на сервере | pgvector — векторный поиск без новой инфраструктуры |
| Большие объёмы, скорость векторного поиска | Qdrant (open source, ставится в Docker) |
| Сильный полнотекстовый поиск + гибрид | Elasticsearch / OpenSearch |
| Не хочется держать свой сервер | Pinecone и другие облачные |