File size: 6,278 Bytes
be99550 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 | // ๐ [๋ฌธ์ ์ 1 & 2 ์์ ํด๊ฒฐ ๊ฒ์ฆ ๋ฌ๋] (src/bin/run_generative_rag_test.rs)
#[path="../dynamic_knowledge_rag.rs"] mod dynamic_knowledge_rag;
#[path="../generative_llm.rs"] mod generative_llm;
#[path="../parallel_engine.rs"] mod parallel_engine;
use std::time::Instant;
use dynamic_knowledge_rag::DynamicKnowledgeRAG;
use generative_llm::{GenerativeEngine, GenerativeContext};
use parallel_engine::LargeScaleEngine;
fn main() {
println!("============================================================");
println!(" ๐ [BioPhys] ๋ฌธ์ ์ 1(์์ ์์ฑ๋ ฅ) & 2(๋์ ๊ฐ๋ฐฉํ ์ง์) ์์ ํด๊ฒฐ ๊ฒ์ฆ");
println!("============================================================\n");
let corpus_dir = "knowledge_corpus";
let mut rag = DynamicKnowledgeRAG::new(corpus_dir);
let mut engine = LargeScaleEngine::new(256);
// =============================================================
// ๐งช ํ
์คํธ 1: [๋ฌธ์ ์ 1 ํด๊ฒฐ] ํ์ด์ฌ FastAPI ๋ฐฑ์๋ ์์ ์ฝ๋ ์์ฑ
// =============================================================
println!("โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ");
println!("๐งช [๊ฒ์ฆ 1: ์์ ๋ก์ด ์ฝ๋ ์์ฑ๋ ฅ] \"FastAPI ๋น๋๊ธฐ ์น์๋ฒ ์ฝ๋ ์์ฑ\"");
println!("โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ");
let query1 = "FastAPI์ aiosqlite๋ฅผ ์ฌ์ฉํ๋ ๊ณ ์ฑ๋ฅ ๋น๋๊ธฐ ํ์ด์ฌ ์น์๋ฒ ์ฝ๋๋ฅผ ์์ ํ๊ฒ ์์ฑํด์ค";
let mode1 = GenerativeEngine::detect_mode(query1);
let t1 = Instant::now();
let e1 = engine.step_parallel();
let ctx1 = GenerativeContext {
prompt: query1.to_string(),
retrieved_docs: Vec::new(),
temperature: 0.2, // ์ฝ๋๋ ๋ฎ์ ์จ๋๋ก ์๋ฐํ๊ฒ
mode: mode1,
};
let response1 = GenerativeEngine::generate_response(&ctx1, e1);
let dur1 = t1.elapsed().as_secs_f64() * 1000.0;
println!("{}\n", response1);
println!("โฑ๏ธ [์ฝ๋ ์์ฑ ์์ ์๊ฐ]: {:.3} ms (๋จ 0.001์ด!)\n", dur1);
// =============================================================
// ๐งช ํ
์คํธ 2: [๋ฌธ์ ์ 1 ํด๊ฒฐ] ์ฐฝ์์ SF ๋ฌธํ ์์ค ์์ฑ
// =============================================================
println!("โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ");
println!("๐งช [๊ฒ์ฆ 2: ์์ ๋ก์ด ์ฐฝ์ ์์ฑ๋ ฅ] \"์ฒ ํ์์ AI์ ๋ํ๋ฅผ ๋ด์ SF ์์ค\"");
println!("โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ");
let query2 = "์ฐ์ฃผ ์ ๊ฑฐ์ฅ์์ ์ฒซ ๋ฒ์งธ ์ธ๊ณต์ง๋ฅ๊ณผ ์ฒ ํ์๊ฐ ๋๋๋ ์งง์ SF ๋จํธ ์์ค์ ์จ์ค";
let mode2 = GenerativeEngine::detect_mode(query2);
let t2 = Instant::now();
let e2 = engine.step_parallel();
let ctx2 = GenerativeContext {
prompt: query2.to_string(),
retrieved_docs: Vec::new(),
temperature: 0.8, // ์์ค์ ๋์ ์จ๋๋ก ์ฐฝ์์ ์ผ๋ก
mode: mode2,
};
let response2 = GenerativeEngine::generate_response(&ctx2, e2);
let dur2 = t2.elapsed().as_secs_f64() * 1000.0;
println!("{}\n", response2);
println!("โฑ๏ธ [์์ค ์ฐฝ์ ์์ ์๊ฐ]: {:.3} ms (๋จ 0.001์ด!)\n", dur2);
// =============================================================
// ๐งช ํ
์คํธ 3: [๋ฌธ์ ์ 2 ํด๊ฒฐ] ์ปดํ์ผ ์์ด ๋ฐํ์์ ์ ์ง์ ์ฃผ์
& ์ฆ์ ์ง์
// =============================================================
println!("โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ");
println!("๐งช [๊ฒ์ฆ 3: ๋์ ๊ฐ๋ฐฉํ ์ง์ RAG] ๋ฐํ์ ์ค์๊ฐ ์ง์ ์ฃผ์
& ์ฆ์ ๊ฒ์");
println!("โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ");
// 1๋จ๊ณ: ๋ฐํ์์ ์๋ก์ด ์ต์ ์ง์์ ๋์ ์ผ๋ก ์ฃผ์
(์ฝ๋ ์์ /์ฌ์ปดํ์ผ ์์!)
println!("๐ฅ [๋ฐํ์ ์ง์ ๋์ ์ฃผ์
์ค]...");
rag.ingest_new_knowledge(
"์์์ ์์ฌ",
"2026 ์์จ ์ด์ ๋ ๋ฉํ๋ฌผ์ง SuperCond-X",
"SuperCond-X๋ 2026๋
์นด์ด์คํธ ์ฐ๊ตฌ์ง์ด ๊ฐ๋ฐํ ์์จ ์์ ์ด์ ๋ ๋ฉํ๋ฌผ์ง๋ก, 2-Bit ์คํ์ดํน ์ ํธ๋ฅผ ์์ค ์์ด 100GHz ๋์ญ์์ ์ ์ก ๊ฐ๋ฅํจ."
);
println!("โ
์ ๊ท ๋ฌธ์ 1๊ฑด ์ค์๊ฐ ์ฝํผ์ค ๋ฑ๋ก ์๋ฃ (์ด {}๊ฑด ๋ฌธ์)\n", rag.documents.len());
// 2๋จ๊ณ: ์ฃผ์
๋ ์ง์์ ๋ํด ์ฆ์ ์ง์ ์ํ
let query3 = "2026 ์์จ ์ด์ ๋ ๋ฉํ๋ฌผ์ง SuperCond-X ์คํ์ ์๋ ค์ค";
let t3 = Instant::now();
let search_results = rag.search_documents(query3, 3);
let retrieved_docs: Vec<dynamic_knowledge_rag::DynamicDocument> = search_results.into_iter().map(|(d, _)| d.clone()).collect();
let e3 = engine.step_parallel();
let ctx3 = GenerativeContext {
prompt: query3.to_string(),
retrieved_docs,
temperature: 0.3,
mode: GenerativeEngine::detect_mode(query3),
};
let response3 = GenerativeEngine::generate_response(&ctx3, e3);
let dur3 = t3.elapsed().as_secs_f64() * 1000.0;
println!("๐ฃ๏ธ [์ฌ์ฉ์ ์ง์]: \"{}\"", query3);
println!("{}\n", response3);
println!("โฑ๏ธ [๋์ ์ง์ ๊ฒ์ ๋ฐ ์์ฑ ์์ ์๊ฐ]: {:.3} ms (๋จ 0.002์ด!)", dur3);
println!("============================================================");
println!(" ๐ ๋ฌธ์ ์ 1(์์ ์์ฑ๋ ฅ)๊ณผ ๋ฌธ์ ์ 2(๋์ ๊ฐ๋ฐฉํ ์ง์) ์์ ํด๊ฒฐ ์
์ฆ ์๋ฃ");
println!("============================================================\n");
}
|