Spaces:
Runtime error
Runtime error
fix: change dto schema and update some query logic
Browse files
src/models/dtos/keyframes/mod.rs
CHANGED
|
@@ -4,7 +4,9 @@ use crate::models::entities::{keyframes::KeyframeEntity, videos::VideoEntity};
|
|
| 4 |
pub struct KeyframeDto {
|
| 5 |
id: i64,
|
| 6 |
name: String,
|
|
|
|
| 7 |
video_name: String,
|
|
|
|
| 8 |
frame_index: i64,
|
| 9 |
frame_timestamp: f32,
|
| 10 |
}
|
|
@@ -13,13 +15,17 @@ impl From<(KeyframeEntity, VideoEntity)> for KeyframeDto {
|
|
| 13 |
fn from((mut keyframe, mut video): (KeyframeEntity, VideoEntity)) -> Self {
|
| 14 |
let id = keyframe.id();
|
| 15 |
let name = std::mem::take(keyframe.name_mut());
|
|
|
|
| 16 |
let video_name = std::mem::take(video.name_mut());
|
|
|
|
| 17 |
let frame_index = keyframe.frame_index();
|
| 18 |
let frame_timestamp = keyframe.frame_timestamp();
|
| 19 |
Self {
|
| 20 |
id,
|
| 21 |
name,
|
|
|
|
| 22 |
video_name,
|
|
|
|
| 23 |
frame_index,
|
| 24 |
frame_timestamp,
|
| 25 |
}
|
|
|
|
| 4 |
pub struct KeyframeDto {
|
| 5 |
id: i64,
|
| 6 |
name: String,
|
| 7 |
+
video_id: i64,
|
| 8 |
video_name: String,
|
| 9 |
+
watch_url: String,
|
| 10 |
frame_index: i64,
|
| 11 |
frame_timestamp: f32,
|
| 12 |
}
|
|
|
|
| 15 |
fn from((mut keyframe, mut video): (KeyframeEntity, VideoEntity)) -> Self {
|
| 16 |
let id = keyframe.id();
|
| 17 |
let name = std::mem::take(keyframe.name_mut());
|
| 18 |
+
let video_id = video.id();
|
| 19 |
let video_name = std::mem::take(video.name_mut());
|
| 20 |
+
let watch_url = std::mem::take(video.watch_url_mut());
|
| 21 |
let frame_index = keyframe.frame_index();
|
| 22 |
let frame_timestamp = keyframe.frame_timestamp();
|
| 23 |
Self {
|
| 24 |
id,
|
| 25 |
name,
|
| 26 |
+
video_id,
|
| 27 |
video_name,
|
| 28 |
+
watch_url,
|
| 29 |
frame_index,
|
| 30 |
frame_timestamp,
|
| 31 |
}
|
src/models/dtos/vectors/keyframes/requests/mod.rs
CHANGED
|
@@ -13,8 +13,4 @@ impl VectorizedKeyframeRequestDto {
|
|
| 13 |
pub fn top_k(&self) -> u64 {
|
| 14 |
self.top_k
|
| 15 |
}
|
| 16 |
-
|
| 17 |
-
// pub fn object_threshold(&self) -> f64 {
|
| 18 |
-
// self.object_threshold
|
| 19 |
-
// }
|
| 20 |
}
|
|
|
|
| 13 |
pub fn top_k(&self) -> u64 {
|
| 14 |
self.top_k
|
| 15 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
| 16 |
}
|
src/models/states/mod.rs
CHANGED
|
@@ -32,11 +32,13 @@ impl AppState {
|
|
| 32 |
}
|
| 33 |
|
| 34 |
async fn qdrant_client_helper() -> anyhow::Result<Arc<Qdrant>> {
|
| 35 |
-
let client = Qdrant::from_url(
|
| 36 |
-
"
|
| 37 |
-
|
| 38 |
-
|
| 39 |
-
|
|
|
|
|
|
|
| 40 |
.build()?;
|
| 41 |
Ok(Arc::new(client))
|
| 42 |
}
|
|
|
|
| 32 |
}
|
| 33 |
|
| 34 |
async fn qdrant_client_helper() -> anyhow::Result<Arc<Qdrant>> {
|
| 35 |
+
let client = Qdrant::from_url(
|
| 36 |
+
&std::env::var("QDRANT_URL").expect("`QDRANT_URL` environment variable must be set"),
|
| 37 |
+
)
|
| 38 |
+
.api_key(
|
| 39 |
+
std::env::var("QDRANT_API_KEY")
|
| 40 |
+
.expect("`QDRANT_API_KEY` environment variable must be set"),
|
| 41 |
+
)
|
| 42 |
.build()?;
|
| 43 |
Ok(Arc::new(client))
|
| 44 |
}
|
src/services/queries/keyframes/mod.rs
CHANGED
|
@@ -1,6 +1,6 @@
|
|
| 1 |
use qdrant_client::{
|
| 2 |
Qdrant,
|
| 3 |
-
qdrant::{
|
| 4 |
};
|
| 5 |
use rayon::iter::{IntoParallelIterator, ParallelIterator};
|
| 6 |
use translators::{GoogleTranslator, Translator};
|
|
@@ -44,14 +44,8 @@ impl<'a> VectorizedKeyframeService<'a> {
|
|
| 44 |
.client
|
| 45 |
.query(
|
| 46 |
QueryPointsBuilder::new(QDRANT_KEYFRAME_COLLECTION_NAME)
|
| 47 |
-
.add_prefetch(
|
| 48 |
-
PrefetchQueryBuilder::default()
|
| 49 |
-
.query(Query::new_nearest(embeddings.clone()))
|
| 50 |
-
.using("images")
|
| 51 |
-
.limit(top_k * 10),
|
| 52 |
-
)
|
| 53 |
.query(Query::new_nearest(embeddings))
|
| 54 |
-
.using("
|
| 55 |
.limit(top_k),
|
| 56 |
)
|
| 57 |
.await?
|
|
|
|
| 1 |
use qdrant_client::{
|
| 2 |
Qdrant,
|
| 3 |
+
qdrant::{Query, QueryPointsBuilder},
|
| 4 |
};
|
| 5 |
use rayon::iter::{IntoParallelIterator, ParallelIterator};
|
| 6 |
use translators::{GoogleTranslator, Translator};
|
|
|
|
| 44 |
.client
|
| 45 |
.query(
|
| 46 |
QueryPointsBuilder::new(QDRANT_KEYFRAME_COLLECTION_NAME)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 47 |
.query(Query::new_nearest(embeddings))
|
| 48 |
+
.using("images")
|
| 49 |
.limit(top_k),
|
| 50 |
)
|
| 51 |
.await?
|