summaryrefslogtreecommitdiffstats
path: root/src/config
diff options
context:
space:
mode:
authorsigoden <sigoden@gmail.com>2024-06-27 12:30:09 +0800
committerGitHub <noreply@github.com>2024-06-27 12:30:09 +0800
commitf82524fd154a1bf4a7277db868147afdb0cd507a (patch)
tree2fd588377d63b47b4ae1a051a0e363a9737f3f8f /src/config
parent33a0049a81103c1f6c5639b9cec43cb14a9ef367 (diff)
downloadaichat-f82524fd154a1bf4a7277db868147afdb0cd507a.tar.gz
feat: implement native rag url loader (#660)
Diffstat (limited to 'src/config')
-rw-r--r--src/config/input.rs13
-rw-r--r--src/config/mod.rs16
2 files changed, 16 insertions, 13 deletions
diff --git a/src/config/input.rs b/src/config/input.rs
index a41b1c7..3b15d1f 100644
--- a/src/config/input.rs
+++ b/src/config/input.rs
@@ -10,7 +10,6 @@ use crate::utils::{base64_encode, sha256, AbortSignal};
use anyhow::{bail, Context, Result};
use fancy_regex::Regex;
use lazy_static::lazy_static;
-use mime_guess::from_path;
use std::{
collections::HashMap,
fs::File,
@@ -407,8 +406,16 @@ fn is_image_ext(path: &Path) -> bool {
fn read_media_to_data_url<P: AsRef<Path>>(image_path: P) -> Result<String> {
let image_path = image_path.as_ref();
-
- let mime_type = from_path(image_path).first_or_octet_stream().to_string();
+ let mime_type = match image_path.extension().and_then(|v| v.to_str()) {
+ Some(extension) => match extension {
+ "png" => "image/png",
+ "jpg" | "jpeg" => "image/jpeg",
+ "webp" => "image/webp",
+ "gif" => "image/gif",
+ _ => bail!("Unsupported media type"),
+ },
+ None => bail!("Unknown media type"),
+ };
let mut file = File::open(image_path)?;
let mut buffer = Vec::new();
file.read_to_end(&mut buffer)?;
diff --git a/src/config/mod.rs b/src/config/mod.rs
index 69609f4..ff337c0 100644
--- a/src/config/mod.rs
+++ b/src/config/mod.rs
@@ -1434,16 +1434,12 @@ impl Config {
}
fn setup_rag_document_loaders(&mut self) {
- [
- ("pdf", "pdftotext $1 -"),
- ("docx", "pandoc --to plain $1"),
- ("url", "curl -fsSL $1"),
- ]
- .into_iter()
- .for_each(|(k, v)| {
- let (k, v) = (k.to_string(), v.to_string());
- self.rag_document_loaders.entry(k).or_insert(v);
- });
+ [("pdf", "pdftotext $1 -"), ("docx", "pandoc --to plain $1")]
+ .into_iter()
+ .for_each(|(k, v)| {
+ let (k, v) = (k.to_string(), v.to_string());
+ self.rag_document_loaders.entry(k).or_insert(v);
+ });
}
}