parent
7526280223
commit
5ba1b3efa6
2 changed files with 13 additions and 10 deletions
2
Cargo.lock
generated
2
Cargo.lock
generated
|
@ -164,7 +164,7 @@ checksum = "8c3c1a368f70d6cf7302d78f8f7093da241fb8e8807c05cc9e51a125895a6d5b"
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "based"
|
name = "based"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
source = "git+https://git.hydrar.de/jmarya/based#00bb6f152d758252d62a511705ef35c8aa118168"
|
source = "git+https://git.hydrar.de/jmarya/based#86dbdcf75df7fb6ce1d9c312ca640b1a4541763c"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"bcrypt",
|
"bcrypt",
|
||||||
"chrono",
|
"chrono",
|
||||||
|
|
21
src/ai.rs
21
src/ai.rs
|
@ -1,6 +1,6 @@
|
||||||
use std::collections::VecDeque;
|
use std::collections::VecDeque;
|
||||||
|
|
||||||
use based::{get_pg, request::api::ToAPI};
|
use based::{get_pg, request::api::ToAPI, result::LogNoneAndPass};
|
||||||
use ollama_rs::generation::embeddings::request::{EmbeddingsInput, GenerateEmbeddingsRequest};
|
use ollama_rs::generation::embeddings::request::{EmbeddingsInput, GenerateEmbeddingsRequest};
|
||||||
use serde::Serialize;
|
use serde::Serialize;
|
||||||
use serde_json::json;
|
use serde_json::json;
|
||||||
|
@ -47,7 +47,7 @@ impl Embedding for Document {
|
||||||
ver.as_ref().unwrap_or(&latest)
|
ver.as_ref().unwrap_or(&latest)
|
||||||
);
|
);
|
||||||
|
|
||||||
let content_html = self.render_local(ver).await.unwrap();
|
let content_html = self.render_local(ver).await?;
|
||||||
let content = html2md::parse_html(&content_html);
|
let content = html2md::parse_html(&content_html);
|
||||||
generate_embedding(content).await
|
generate_embedding(content).await
|
||||||
}
|
}
|
||||||
|
@ -110,7 +110,16 @@ impl EmbedStore {
|
||||||
}
|
}
|
||||||
|
|
||||||
pub async fn embed_document(doc: &Document, ver: &str) {
|
pub async fn embed_document(doc: &Document, ver: &str) {
|
||||||
if let Some(embed) = doc.embedding(Some(ver.to_string())).await {
|
if let Some(embed) = doc
|
||||||
|
.embedding(Some(ver.to_string()))
|
||||||
|
.await
|
||||||
|
.log_warn_none_and_pass(|| {
|
||||||
|
format!(
|
||||||
|
"No embeds could be generated for {} / {}",
|
||||||
|
doc.domain, doc.path
|
||||||
|
)
|
||||||
|
})
|
||||||
|
{
|
||||||
let _ = sqlx::query(
|
let _ = sqlx::query(
|
||||||
"DELETE FROM doc_embedding WHERE domain = $1 AND path = $2 AND ver = $3",
|
"DELETE FROM doc_embedding WHERE domain = $1 AND path = $2 AND ver = $3",
|
||||||
)
|
)
|
||||||
|
@ -128,12 +137,6 @@ impl EmbedStore {
|
||||||
.execute(get_pg!())
|
.execute(get_pg!())
|
||||||
.await
|
.await
|
||||||
.unwrap();
|
.unwrap();
|
||||||
} else {
|
|
||||||
log::warn!(
|
|
||||||
"No embeds could be generated for {} / {}",
|
|
||||||
doc.domain,
|
|
||||||
doc.path
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue