Модуль rag
1. Функции модуля
- Единое ядро RAG для индексации и retrieval по документации и коду проекта.
- Поддержка двух семейств индексации:
DOCSиCODE, с разными слоями и разными pipeline. - Хранение
rag_session, index-jobs, многослойных документов, cache-слоев и retrieval-запросов. - Поддержка индексации snapshot и changes с переиспользованием cache по
blob_sha. - Предоставление контекста для agent/chat, где
DOCSиспользуется по умолчанию, аCODEвключается для явных вопросов по реализации.
2. Диаграмма классов и взаимосвязей
classDiagram
class RagService
class RagRepository
class RagSchemaRepository
class RagDocumentUpserter
class DocsIndexingPipeline
class CodeIndexingPipeline
class RagQueryRouter
class GigaChatEmbedder
RagService --> RagRepository
RagService --> DocsIndexingPipeline
RagService --> CodeIndexingPipeline
RagService --> RagQueryRouter
RagService --> GigaChatEmbedder
RagRepository --> RagSchemaRepository
RagService --> RagDocumentUpserter
3. Описание классов
RagService: основной application-service модуля. Методы:index_snapshot— индексирует полный набор файлов;index_changes— применяет инкрементальные изменения;retrieve— возвращает релевантный контекст изDOCSилиCODE.RagRepository: фасад persistence-слоя RAG. Методы:ensure_tables— создает/обновляет схему;upsert_session/get_session/session_exists— операции поrag_session;create_job/update_job/get_job— операции по index jobs;replace_documents/apply_document_changes— операции по документам;get_cached_documents/cache_documents— работа с cache;retrieve/fallback_chunks— retrieval.RagSchemaRepository: управление схемой БД для RAG. Методы:ensure_tables— создает таблицы и индексы;_ensure_columns— добавляет новые поля;_ensure_indexes— поддерживает индексы для retrieval и фильтрации.RagDocumentUpserter: батчевый writer многослойныхRagDocument. Методы:replace— полностью заменяет документы сессии;apply_changes— применяет upsert/delete по измененным путям.DocsIndexingPipeline: pipeline индексации документации. Методы:supports— определяет, относится ли файл к docs;index_file— строит документы слоевD1-D4для одного файла.CodeIndexingPipeline: pipeline индексации Python-кода. Методы:supports— определяет, относится ли файл к code;index_file— строит документы слоевC0-C3для одного файла.RagQueryRouter: выбирает retrieval mode и активные слои. Методы:resolve_mode— определяетdocsилиcode;layers_for_mode— возвращает набор слоев для retrieval.GigaChatEmbedder: адаптер embeddings-модели. Методы:embed— возвращает embeddings для списка текстов.
4. Сиквенс-диаграммы API и выполнения
Индексация snapshot через текущий rag_session facade
Назначение: создать/обновить rag_session и построить многослойный индекс по переданным файлам проекта.
sequenceDiagram
participant Router as RagModule.APIRouter
participant Sessions as RagSessionStore
participant Indexing as IndexingOrchestrator
participant Rag as RagService
participant Docs as DocsIndexingPipeline
participant Code as CodeIndexingPipeline
participant Repo as RagRepository
Router->>Sessions: create(project_id)
Sessions-->>Router: rag_session_id
Router->>Indexing: enqueue_snapshot(rag_session_id, files)
Indexing->>Rag: index_snapshot(rag_session_id, files)
loop for each file
Rag->>Docs: supports/index_file
Rag->>Code: supports/index_file
Rag->>Repo: cache_documents(...)
end
Rag->>Repo: replace_documents(...)
Indexing-->>Router: index_job_id,status
Retrieval для agent/chat
Назначение: вернуть релевантный контекст из нужного семейства слоев.
sequenceDiagram
participant Agent as GraphAgentRuntime
participant Rag as RagService
participant Router as RagQueryRouter
participant Repo as RagRepository
Agent->>Rag: retrieve(rag_session_id, query)
Rag->>Router: resolve_mode(query)
Router-->>Rag: docs|code + layers
Rag->>Repo: retrieve(query_embedding, query_text, layers)
Repo-->>Rag: ranked items
Rag-->>Agent: items
5. Слои, фиксируемые в RAG
5.1. Слои DOCS
D1_MODULE_CATALOG
Назначение: каталог модулей документации и граф связей между ними.
Основные атрибуты:
module_idtypedomaintitlestatusversiontagsownerslinkscalls_apicalled_byuses_logicused_byreads_dbwrites_dbintegrates_withemits_eventsconsumes_eventssource_pathsummary_text
D2_FACT_INDEX
Назначение: атомарные факты subject-predicate-object с evidence.
Основные атрибуты:
fact_idsubject_idpredicateobjectobject_refsource_pathanchorline_startline_endconfidencetags
D3_SECTION_INDEX
Назначение: семантические секции документации, нарезанные по заголовкам.
Основные атрибуты:
chunk_idmodule_idsection_pathsection_titlecontentsource_pathordertagsdomaintypeembedding
D4_POLICY_INDEX
Назначение: глобальные правила и конвенции проекта.
Основные атрибуты:
policy_idapplies_torulesdefault_behaviorssource_path
5.2. Слои CODE
C0_SOURCE_CHUNKS
Назначение: сырой код как источник истины для цитирования и evidence.
Основные атрибуты:
langrepo_idcommit_shapathspantitletextmodule_or_unitchunk_typesymbol_idhash
C1_SYMBOL_CATALOG
Назначение: каталог символов кода и их деклараций.
Основные атрибуты:
langrepo_idcommit_shasymbol_idqnamekinddecl.pathdecl.start_linedecl.end_linetextvisibilitysignaturedecorators_or_annotationsdocstring_or_javadocparent_symbol_idpackage_or_moduleis_entry_candidatelang_payload
C2_DEPENDENCY_GRAPH
Назначение: связи между сущностями кода.
Основные атрибуты:
langrepo_idcommit_shaedge_idedge_typesrc_symbol_iddst_symbol_iddst_refevidence.pathevidence.start_lineevidence.end_linetextresolutioncallsite_kindlang_payload
C3_ENTRYPOINTS
Назначение: точки входа приложения и их обработчики.
Основные атрибуты:
langrepo_idcommit_shaentry_identry_typeframeworkroute_or_commandhandler_symbol_idevidence.pathevidence.start_lineevidence.end_linetexthttp.methodshttp.authrequest_modelresponse_modelcli.args_schematask.queuetask.crontagslang_payload
C4_PUBLIC_API
Назначение: публичная поверхность API/экспортируемых символов.
Основные атрибуты:
api_idsymbol_idstabilitysource_of_truthversioning_tagslang_payload
C5_BEHAVIOR_SUMMARIES
Назначение: поведенческие summary с обязательными evidence links.
Основные атрибуты:
target_typetarget_idtextclaimsevidence_linksconfidencegenerated_bygenerated_at
C6_RUNTIME_TRACES
Назначение: runtime/trace слой для связи кода и реального исполнения.
Основные атрибуты:
envtrace_idspan_idsymbol_identry_idtexttimingsservicehostlabels
6. Правила retrieval
- По умолчанию retrieval идет в
DOCS. CODEиспользуется только для явных вопросов по реализации, устройству кода, endpoint'ам, handler'ам и документации “из кода”.- Для
DOCSприоритет слоев:D1 -> D2 -> D3 -> D4. - Для
CODEприоритет слоев:C3 -> C1 -> C2 -> C0.
7. Текущий статус реализации
- В первой итерации реализованы
DOCS D1-D4. - В первой итерации реализованы
CODE C0-C3. C4-C6зафиксированы в контракте и зарезервированы под следующие этапы.- Текущие
rag_sessionиrag_repoработают как facade/adapter поверх нового пакетаrag.