Обзор Knowledge RAG
Retrieval-augmented Q&A по вашим документам — загруженным файлам, URL, внутренним базам знаний. Как связаны spaces, sources, ingestion jobs и эндпоинт ask.
Модуль Knowledge — вторая поверхность AACSearch: вместо поиска по структурированному каталогу он отвечает на вопросы на естественном языке по вашему собственному неструктурированному контенту — PDF, DOCX, скрапнутым URL, внутренним статьям. Это намеренно отдельный продукт от storefront search: индексы и данные у них не пересекаются.
| Поверхность | Сценарий | На чём построен |
|---|---|---|
| Storefront search | Поиск товаров в каталоге | SearchIndex + Typesense alias |
| Knowledge RAG | Ответ на вопрос со ссылками по внутренним документам | KnowledgeSpace + KnowledgeChunk (Postgres + vectors) |
| GraphRAG (надстройка) | Ответ на многодокументный / межсущностный вопрос | GraphNode / GraphEdge поверх тех же чанков |
Эта страница — ориентир по модулю Knowledge. Детали ingest-а — Sources; измерение качества ответов — Evaluation.
Статус
| Возможность | Статус |
|---|---|
| Upload файла (PDF / DOCX / TXT / Markdown) | ✅ Available |
| URL ingest (одиночная страница) | ✅ Available |
| Трекинг ingestion job + retry | ✅ Available |
| Чанкинг (fixed / semantic / markdown / code) | ✅ Available |
| Эмбеддинг (модель по умолчанию) | ✅ Available |
| Выбор модели эмбеддингов per space | 🟡 Beta — KnowledgeSpace.ragConfig.embeddingModel |
ask (RAG retrieval + LLM-ответ со ссылками) | ✅ Available |
askStream (server-sent events) | ✅ Available |
graphragExplain (граф-ответ с путями) | ✅ Available — см. GraphRAG |
| Sources через коннекторы (Confluence, Notion, GDrive) | ⏳ Roadmap |
| Мультимодальные источники (изображения, аудио) | ⏳ Roadmap |
| Per-tenant fine-tuned модель ответа | ⏳ Roadmap (Enterprise) |
Spaces
Knowledge space — единица изоляции. У каждого space:
- Ровно один владелец — организация (
organizationId) или пользователь (userId). Owner type зафиксирован XOR CHECK на уровне БД (паттерн как уPurchase). - Свои data sources, документы, чанки, эмбеддинги, графовые ноды.
- Свой
slug, уникальный в(ownerType, userId|organizationId). - Свой RAG config — модель, стратегия чанкинга, top-k — в
KnowledgeSpace.ragConfig(Beta).
Маршруты:
| Scope | Path |
|---|---|
| Организация | /[orgSlug]/knowledge/[spaceSlug] |
| Пользователь | /knowledge/[spaceSlug] |
Дашборд рендерит одинаковый UI для обоих scope; ownerType определяется по URL.
Модель данных
| Модель | Назначение |
|---|---|
KnowledgeSpace | Контейнер верхнего уровня; XOR owner. |
DataSource | Описание источника (файл, URL, будущий коннектор). Конфиг синка, ссылка на credentials. |
IngestionJob | Один прогон ingest. Статусы QUEUED → RUNNING → SUCCEEDED / FAILED, счётчики, error message. |
KnowledgeDocument | Распарсенный source (PDF, URL, DOCX). Текст + checksum. |
KnowledgeChunk | Кусок текста для retrieval — chunkIndex, text, tokenCount, embedding (Json вектор). |
GraphNode | Сущность/концепт из чанков для GraphRAG. canonicalName + nodeType. |
GraphEdge | Связь между нодами с relationType, weight, evidenceChunkId. |
Все семь — namespaced по knowledgeSpaceId. Любой retrieval — в одном space; cross-space недопустим (Инвариант 5 расширен на Knowledge).
End-to-end flow
DataSource (file or URL)
│
▼
IngestionJob ──► parsers ──► KnowledgeDocument ──► chunker ──► KnowledgeChunk (text + embedding)
│
┌───────────────────┴─────────┐
▼ ▼
ask / askStream buildGraphFromChunks
(retrieval → LLM) (GraphNode + GraphEdge)- Создаётся
DataSource(createSourceдля коннекторов,ingestFile/ingestUrlдля ad-hoc). - Запускается
IngestionJob. Воркер парсит источник (packages/api/modules/knowledge/lib/parsers.ts), режет на чанки (chunking.ts), эмбеддит каждый, пишет строки. - Retrieval при запросе: эмбеддит вопрос, тянет top-k чанков по cosine similarity в
retrieval.tsи подаёт их как нумерованный контекст в LLM вrag-pipeline.ts. - Ответ содержит
sources— документы, чьи цитированные чанки были использованы.
Для GraphRAG шаг 2 ещё прогоняет buildGraphFromChunks (LLM entity resolution + relation typing). На шаге 3 retrieval может пройти по графу вместо (или в дополнение к) вектора.
Эндпоинт ask
const result = await orpc.knowledge.ask.call({
spaceId: "ks_…",
question: "Как сбросить пароль?",
topK: 5, // default 5
includeGraph: false // true — добавить graph-hits
});Возвращает { answer, sources: KnowledgeDocument[], chunks: KnowledgeChunk[] }. В UI цитируйте sources; покажите chunks[].text сниппеты, если хотите «show passages» аффорданс.
Для streaming используйте askStream — тот же payload, но SSE, чтобы рендерить ответ посимвольно.
Privacy и tenant isolation
- Каждый
askскоупится однимKnowledgeSpace. - Проверка прав org/user —
requireKnowledgeSpaceAccess(packages/api/modules/knowledge/lib/access.ts). - Retrieval никогда не пересекает spaces, даже внутри одной организации.
- Чанки уходят в выбранный LLM-провайдер (OpenAI по умолчанию). Per-space выбор модели — Beta.
- Файлы хранятся в object storage; чанки + эмбеддинги — в Postgres рядом с остальной схемой.
DPA / SOC 2 scope — Security & Compliance.
Когда использовать Knowledge RAG
- Внутренние Q&A — онбординг, runbook-и, политики.
- База знаний продукта — FAQ, support, гайды по интеграциям.
- Compliance / аудит — вопросы, где ответ должен ссылаться на конкретный документ.
Когда не надо
- Q&A по каталогу товаров — используйте AI answers поверх storefront search. Knowledge RAG не видит ваши
SearchIndex-документы. - Live-данные — Knowledge-источники это снапшоты на момент ingest. Для свежести — расписание ingestion job-ов или коннекторы (roadmap).
- Цифровые вычисления — RAG это retrieval, не калькулятор. Не спрашивайте про live-остатки.
- Adversarial или PII-heavy контент — сначала Security docs; per-tenant model isolation в roadmap.
Форма стоимости
Каждый ask, askStream, ingest job метерится через AI Wallet (Инвариант 8). Reserve→commit на каждый вызов; ошибка освобождает резерв. Тарифы — packages/api/modules/entitlements/credit-rates.ts.
При больших bulk-ingest-ах следите в Activity за ai_overage_reached — embedding-стоимость доминирует в ingest-спенде.
Связанные страницы
- Sources — upload файлов, URL ingest, поддерживаемые типы, sync
- Evaluation — измерение качества после ingest-а
- GraphRAG — многодокументный reasoning по тем же чанкам
- AI Search — ответы поверх storefront search
- Plans and limits — тарифы AI-кошелька и квоты
- Security & Compliance