use crate::chroma::embed::{embed, EmbedArgs};
use crate::chroma::similarity::{similarity_search, SimilarityArgs};
use crate::ollama::chat::conversation_tree::ConversationTree;
use crate::ollama::Ollama;
use anyhow::Result;
use tokio_stream::StreamExt;
#[tokio::main]
async fn main() -> Result<()> {
println!("Initializing RAG system...");
let ollama = Ollama::new(); let embed_args = EmbedArgs {
model: "nomic-embed-text:latest".to_string(),
prompt: "example query".to_string(),
chroma_server: "http://localhost:8000".to_string(),
chroma_database: "default".to_string(),
chroma_token: None,
collection: "default".to_string(),
collection_metadata: None,
entries_metadata: None,
};
embed(ollama.clone(), &embed_args).await?;
let similarity_args = SimilarityArgs {
query: "example query".to_string(),
count: 1,
similarity_count: 5,
collection: "default".to_string(),
metadata: None,
chroma_server: "http://localhost:8000".to_string(),
chroma_database: "default".to_string(),
chroma_token: None,
};
similarity_search(&similarity_args).await?;
let mut conversation_tree = ConversationTree::new();
let question_id = conversation_tree.question(vec![similarity_args.query.clone()])?;
conversation_tree.add_answer(question_id, vec!["Generated response based on similar entries.".to_string()])?;
println!("Generated response: {:?}", conversation_tree.get_qa(question_id, conversation_tree.get_current_answer_id(question_id)));
println!("Integration complete. Outputting response...");
Ok(())
}