AACsearch
Knowledge RAG

Обзор 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).

Маршруты:

ScopePath
Организация/[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)
  1. Создаётся DataSource (createSource для коннекторов, ingestFile / ingestUrl для ad-hoc).
  2. Запускается IngestionJob. Воркер парсит источник (packages/api/modules/knowledge/lib/parsers.ts), режет на чанки (chunking.ts), эмбеддит каждый, пишет строки.
  3. Retrieval при запросе: эмбеддит вопрос, тянет top-k чанков по cosine similarity в retrieval.ts и подаёт их как нумерованный контекст в LLM в rag-pipeline.ts.
  4. Ответ содержит 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

On this page