Skip to content

Commit 0766034

Browse files
committed
Begin working with kalosm and generating embeddings in the morning.
1 parent ef58029 commit 0766034

File tree

10 files changed

+48
-12
lines changed

10 files changed

+48
-12
lines changed

apps/fluster/src-tauri/src/features/ai/ai_client.rs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
11
use crate::core::types::errors::errors::FlusterResult;
22

3-
use super::ai_providers::{ai_provider::AiProvider, ollama_provider::OllamaProvider};
3+
use super::ai_providers::ai_provider::AiProvider;
44

5-
pub struct AiClient {}
5+
pub struct AiClient {
6+
pub provider: dyn AiProvider,
7+
}
68

79
// FIXME: Add an onboarding screen and a field to the HealthReport struct that installs the text embedding model if it is not installed already.
810
impl AiClient {

apps/fluster/src-tauri/src/features/ai/ai_providers/ai_provider.rs

Lines changed: 0 additions & 5 deletions
This file was deleted.

apps/fluster/src-tauri/src/features/ai/ai_providers/local_ai_provider.rs

Lines changed: 24 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,37 @@
11
use kalosm::language::*;
22

3-
pub async fn get_embeddings(dir_path: &str) -> FlusterResult<()> {
4-
let f = DocumentFolder::new(dir_path).unwrap();
5-
Ok(())
3+
use crate::{
4+
core::types::errors::errors::{FlusterError, FlusterResult},
5+
features::ai::data::{
6+
traits::ai_provider::AiProvider, types::embeddings_result::EmbeddingResult,
7+
},
8+
};
9+
10+
pub struct LocalAiClient {}
11+
12+
impl AiProvider for LocalAiClient {
13+
fn get_text_embeddings(&self, dir_path: &str) -> FlusterResult<EmbeddingResult> {
14+
let f = DocumentFolder::new(dir_path).unwrap();
15+
println!("DocumentFolder: {:?}", f);
16+
Err(FlusterError::NotImplemented)
17+
}
18+
19+
// pub async fn get_embeddings(dir_path: &str) -> FlusterResult<()> {
20+
// let f = DocumentFolder::new(dir_path).unwrap();
21+
// Ok(())
22+
// }
623
}
724

825
#[cfg(test)]
926
mod tests {
27+
1028
use super::*;
1129

1230
#[tokio::test]
1331
async fn gets_embeddings() {
14-
let res = get_embeddings("/Users/bigsexy/Desktop/notes/content/").await;
32+
let res = LocalAiClient {}
33+
.get_text_embeddings("/Users/bigsexy/Desktop/notes/content/")
34+
.await;
1535
assert!(res.is_ok(), "Get's embeddings without throwing an error.");
1636
// assert_eq!(result, 4);
1737
}
Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1 @@
1-
pub mod ai_provider;
21
pub mod local_ai_provider;
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
pub mod traits;
2+
pub mod types;
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
use crate::{
2+
core::types::errors::errors::FlusterResult,
3+
features::ai::data::types::embeddings_result::EmbeddingResult,
4+
};
5+
6+
pub trait AiProvider {
7+
fn get_text_embeddings(&self, dir_path: &str) -> FlusterResult<EmbeddingResult>;
8+
}
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
pub mod ai_provider;
2+
pub mod embeddings_result;
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
use std::collections::HashMap;
2+
3+
pub type EmbeddingVec = Vec<f32>;
4+
5+
/// A map of the file system path and the embedding vector.
6+
pub type EmbeddingResult = HashMap<String, EmbeddingVec>;
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
pub mod embeddings_result;
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
11
pub mod ai_client;
22
pub mod ai_providers;
3+
pub mod data;
34
pub mod static_defaults;

0 commit comments

Comments
 (0)