digraph G {
concentrate=true;
splines="ortho";
rankdir="LR";
subgraph legend{
    rank = min;
    label = "legend";
    Legend [shape=none, margin=0, label = <
        <table cellspacing="0" cellpadding="0" border="1"><tr><td>Code2flow Legend</td></tr><tr><td>
        <table cellspacing="0">
        <tr><td>Regular function</td><td width="50px" bgcolor='#cccccc'></td></tr>
        <tr><td>Trunk function (nothing calls this)</td><td bgcolor='#966F33'></td></tr>
        <tr><td>Leaf function (this calls nothing else)</td><td bgcolor='#6db33f'></td></tr>
        <tr><td>Function call</td><td><font color='black'>&#8594;</font></td></tr>
        </table></td></tr></table>
        >];
}node_7d4b4651 [label="47: lifespan()" name="RAG_app::lifespan" shape="rect" style="rounded,filled" fillcolor="#966F33" ];
node_4fbd994f [label="116: multi_query_answer()" name="RAG_app::multi_query_answer" shape="rect" style="rounded,filled" fillcolor="#966F33" ];
node_4c386252 [label="87: multi_query_answer()" name="RAG_app::multi_query_answer" shape="rect" style="rounded,filled" fillcolor="#966F33" ];
node_9bfa629c [label="134: multi_query_answer()" name="RAG_app::multi_query_answer" shape="rect" style="rounded,filled" fillcolor="#966F33" ];
node_71a3aeb0 [label="153: save_history()" name="RAG_app::save_history" shape="rect" style="rounded,filled" fillcolor="#6db33f" ];
node_649e182e [label="147: get_search_query()" name="RAG_strategy::get_search_query" shape="rect" style="rounded,filled" fillcolor="#6db33f" ];
node_7c28ff05 [label="58: multi_query()" name="RAG_strategy::multi_query" shape="rect" style="rounded,filled" fillcolor="#cccccc" ];
node_fdd77cdf [label="110: multi_query_rag_prompt()" name="RAG_strategy::multi_query_rag_prompt" shape="rect" style="rounded,filled" fillcolor="#6db33f" ];
node_4413d1fa [label="0: (global)()" name="add_vectordb::(global)" shape="rect" style="rounded,filled" fillcolor="#966F33" ];
node_d7743d95 [label="132: __init__()" name="add_vectordb::GetVectorStore.__init__" shape="rect" style="rounded,filled" fillcolor="#cccccc" ];
node_65de84e4 [label="141: delete()" name="add_vectordb::GetVectorStore.delete" shape="rect" style="rounded,filled" fillcolor="#cccccc" ];
node_5b1175ed [label="135: insert()" name="add_vectordb::GetVectorStore.insert" shape="rect" style="rounded,filled" fillcolor="#6db33f" ];
node_e96a8b7c [label="145: update()" name="add_vectordb::GetVectorStore.update" shape="rect" style="rounded,filled" fillcolor="#cccccc" ];
node_6dc6ba18 [label="125: check_existed_data()" name="add_vectordb::check_existed_data" shape="rect" style="rounded,filled" fillcolor="#6db33f" ];
node_03dc279e [label="71: create_ids()" name="add_vectordb::create_ids" shape="rect" style="rounded,filled" fillcolor="#6db33f" ];
node_ba1cc301 [label="20: get_data_list()" name="add_vectordb::get_data_list" shape="rect" style="rounded,filled" fillcolor="#cccccc" ];
node_76ea7487 [label="104: get_document()" name="add_vectordb::get_document" shape="rect" style="rounded,filled" fillcolor="#cccccc" ];
node_b5a8f76f [label="35: read_and_split_files()" name="add_vectordb::read_and_split_files" shape="rect" style="rounded,filled" fillcolor="#cccccc" ];
node_53c93e6f [label="0: (global)()" name="indexing_Split::(global)" shape="rect" style="rounded,filled" fillcolor="#966F33" ];
node_40bbb064 [label="50: create_retriever()" name="indexing_Split::create_retriever" shape="rect" style="rounded,filled" fillcolor="#cccccc" ];
node_fa144567 [label="117: gen_doc_from_history()" name="indexing_Split::gen_doc_from_history" shape="rect" style="rounded,filled" fillcolor="#6db33f" ];
node_7d4b4651 -> node_d7743d95 [color="#E69F00" penwidth="2"];
node_4c386252 -> node_71a3aeb0 [color="#56B4E9" penwidth="2"];
node_4c386252 -> node_7c28ff05 [color="#56B4E9" penwidth="2"];
node_4fbd994f -> node_71a3aeb0 [color="#CC79A7" penwidth="2"];
node_4fbd994f -> node_7c28ff05 [color="#CC79A7" penwidth="2"];
node_9bfa629c -> node_71a3aeb0 [color="#F0E442" penwidth="2"];
node_9bfa629c -> node_7c28ff05 [color="#F0E442" penwidth="2"];
node_7c28ff05 -> node_649e182e [color="#0072B2" penwidth="2"];
node_7c28ff05 -> node_fdd77cdf [color="#0072B2" penwidth="2"];
node_4413d1fa -> node_d7743d95 [color="#56B4E9" penwidth="2"];
node_4413d1fa -> node_e96a8b7c [color="#56B4E9" penwidth="2"];
node_4413d1fa -> node_76ea7487 [color="#56B4E9" penwidth="2"];
node_d7743d95 -> node_d7743d95 [color="#0072B2" penwidth="2"];
node_65de84e4 -> node_65de84e4 [color="#F0E442" penwidth="2"];
node_e96a8b7c -> node_65de84e4 [color="#F0E442" penwidth="2"];
node_e96a8b7c -> node_5b1175ed [color="#F0E442" penwidth="2"];
node_ba1cc301 -> node_6dc6ba18 [color="#E69F00" penwidth="2"];
node_76ea7487 -> node_03dc279e [color="#CC79A7" penwidth="2"];
node_76ea7487 -> node_b5a8f76f [color="#CC79A7" penwidth="2"];
node_b5a8f76f -> node_ba1cc301 [color="#CC79A7" penwidth="2"];
node_53c93e6f -> node_7c28ff05 [color="#CC79A7" penwidth="2"];
node_53c93e6f -> node_7c28ff05 [color="#CC79A7" penwidth="2"];
node_53c93e6f -> node_40bbb064 [color="#CC79A7" penwidth="2"];
node_40bbb064 -> node_fa144567 [color="#F0E442" penwidth="2"];
subgraph cluster_a5d3d6e2 {
    node_7d4b4651 node_4c386252 node_4fbd994f node_9bfa629c node_71a3aeb0;
    label="File: RAG_app";
    name="RAG_app";
    style="filled";
    graph[style=dotted];
};
subgraph cluster_d5bd3b3c {
    node_7c28ff05 node_fdd77cdf node_649e182e;
    label="File: RAG_strategy";
    name="RAG_strategy";
    style="filled";
    graph[style=dotted];
};
subgraph cluster_3a83d666 {
    node_ba1cc301 node_b5a8f76f node_03dc279e node_76ea7487 node_6dc6ba18 node_4413d1fa;
    label="File: add_vectordb";
    name="add_vectordb";
    style="filled";
    graph[style=dotted];
    subgraph cluster_622c6110 {
        node_d7743d95 node_5b1175ed node_65de84e4 node_e96a8b7c;
        label="Class: GetVectorStore";
        name="GetVectorStore";
        style="filled";
        graph[style=dotted];
    };
};
subgraph cluster_87c7db5c {
    node_40bbb064 node_fa144567 node_53c93e6f;
    label="File: indexing_Split";
    name="indexing_Split";
    style="filled";
    graph[style=dotted];
};
}
