32 lines
1.3 KiB
Plaintext
32 lines
1.3 KiB
Plaintext
flowchart TD
|
|
A["HTTP: POST /internal/rag/retrieve"] --> B["RagModule.internal_router.retrieve(payload)"]
|
|
B --> C["RagService.retrieve(rag_session_id, query)"]
|
|
C --> D["RagQueryRouter.resolve_mode(query)"]
|
|
D --> E["RagQueryRouter.layers_for_mode(mode)"]
|
|
C --> F["GigaChatEmbedder.embed([query])"]
|
|
F --> G["GigaChatClient.embed(payload)"]
|
|
G --> H["POST /embeddings"]
|
|
C --> I["RagRepository.retrieve(...)"]
|
|
I --> J["RagQueryRepository.retrieve(...)"]
|
|
J --> K["PostgreSQL rag_chunks + pgvector"]
|
|
K --> L["ORDER BY lexical_rank, test_penalty, layer_rank, vector distance"]
|
|
L --> M["rows: path/content/layer/title/metadata/span/distance"]
|
|
M --> N["normalize to {source, content, layer, title, metadata, score}"]
|
|
N --> O["response: {items: [...]}"]
|
|
|
|
C --> P["embedding error?"]
|
|
P -->|yes| Q["RagRepository.fallback_chunks(...)"]
|
|
Q --> R["latest rows by id DESC"]
|
|
R --> N
|
|
|
|
C --> S["no rows and mode != docs?"]
|
|
S -->|yes| T["fallback to docs layers"]
|
|
T --> I
|
|
|
|
U["GraphAgentRuntime for project/qa"] --> V["ProjectQaRetrievalGraphFactory._retrieve_context"]
|
|
V --> C
|
|
V --> W["ProjectQaSupport.build_source_bundle(...)"]
|
|
W --> X["source_bundle"]
|
|
X --> Y["context_analysis"]
|
|
Y --> Z["answer_composition"]
|