BioPhys-Neural-Agent / src /bin /run_generative_rag_test.rs
minseok
๐ŸŒŒ Release BioPhys 6.0 Grand Master: 16GB (14.89GB) Gemma-4 100% Devour, Ecosystem Evolution, Solar MoE, SNN Autoregressive SDK, Dynamic PhaseVM
be99550
Raw
History Blame Contribute Delete
6.28 kB
// ๐Ÿš€ [๋ฌธ์ œ์  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");
}