mirror of
https://github.com/perstarkse/minne.git
synced 2026-03-26 19:31:32 +01:00
release: 1.0.0
This commit is contained in:
@@ -893,158 +893,6 @@ mod tests {
|
||||
}
|
||||
}
|
||||
|
||||
#[tokio::test]
|
||||
async fn seeds_manifest_with_transactional_batches() {
|
||||
let namespace = "test_ns";
|
||||
let database = Uuid::new_v4().to_string();
|
||||
let db = SurrealDbClient::memory(namespace, &database)
|
||||
.await
|
||||
.expect("memory db");
|
||||
db.apply_migrations()
|
||||
.await
|
||||
.expect("apply migrations for memory db");
|
||||
|
||||
let manifest = build_manifest();
|
||||
seed_manifest_into_db(&db, &manifest)
|
||||
.await
|
||||
.expect("manifest seed should succeed");
|
||||
|
||||
let text_contents: Vec<TextContent> = db
|
||||
.client
|
||||
.query(format!("SELECT * FROM {};", TextContent::table_name()))
|
||||
.await
|
||||
.expect("select text_content")
|
||||
.take(0)
|
||||
.unwrap_or_default();
|
||||
assert_eq!(text_contents.len(), 1);
|
||||
|
||||
let entities: Vec<KnowledgeEntity> = db
|
||||
.client
|
||||
.query(format!("SELECT * FROM {};", KnowledgeEntity::table_name()))
|
||||
.await
|
||||
.expect("select knowledge_entity")
|
||||
.take(0)
|
||||
.unwrap_or_default();
|
||||
assert_eq!(entities.len(), 1);
|
||||
|
||||
let chunks: Vec<TextChunk> = db
|
||||
.client
|
||||
.query(format!("SELECT * FROM {};", TextChunk::table_name()))
|
||||
.await
|
||||
.expect("select text_chunk")
|
||||
.take(0)
|
||||
.unwrap_or_default();
|
||||
assert_eq!(chunks.len(), 1);
|
||||
|
||||
let relationships: Vec<KnowledgeRelationship> = db
|
||||
.client
|
||||
.query("SELECT * FROM relates_to;")
|
||||
.await
|
||||
.expect("select relates_to")
|
||||
.take(0)
|
||||
.unwrap_or_default();
|
||||
assert_eq!(relationships.len(), 1);
|
||||
|
||||
let entity_embeddings: Vec<KnowledgeEntityEmbedding> = db
|
||||
.client
|
||||
.query(format!(
|
||||
"SELECT * FROM {};",
|
||||
KnowledgeEntityEmbedding::table_name()
|
||||
))
|
||||
.await
|
||||
.expect("select knowledge_entity_embedding")
|
||||
.take(0)
|
||||
.unwrap_or_default();
|
||||
assert_eq!(entity_embeddings.len(), 1);
|
||||
|
||||
let chunk_embeddings: Vec<TextChunkEmbedding> = db
|
||||
.client
|
||||
.query(format!(
|
||||
"SELECT * FROM {};",
|
||||
TextChunkEmbedding::table_name()
|
||||
))
|
||||
.await
|
||||
.expect("select text_chunk_embedding")
|
||||
.take(0)
|
||||
.unwrap_or_default();
|
||||
assert_eq!(chunk_embeddings.len(), 1);
|
||||
}
|
||||
|
||||
#[tokio::test]
|
||||
async fn rolls_back_when_embeddings_mismatch_index_dimension() {
|
||||
let namespace = "test_ns_rollback";
|
||||
let database = Uuid::new_v4().to_string();
|
||||
let db = SurrealDbClient::memory(namespace, &database)
|
||||
.await
|
||||
.expect("memory db");
|
||||
db.apply_migrations()
|
||||
.await
|
||||
.expect("apply migrations for memory db");
|
||||
|
||||
let manifest = build_manifest();
|
||||
let result = seed_manifest_into_db(&db, &manifest).await;
|
||||
assert!(
|
||||
result.is_ok(),
|
||||
"seeding should succeed even if embedding dimensions differ from default index"
|
||||
);
|
||||
|
||||
let text_contents: Vec<TextContent> = db
|
||||
.client
|
||||
.query(format!("SELECT * FROM {};", TextContent::table_name()))
|
||||
.await
|
||||
.expect("select text_content")
|
||||
.take(0)
|
||||
.unwrap_or_default();
|
||||
let entities: Vec<KnowledgeEntity> = db
|
||||
.client
|
||||
.query(format!("SELECT * FROM {};", KnowledgeEntity::table_name()))
|
||||
.await
|
||||
.expect("select knowledge_entity")
|
||||
.take(0)
|
||||
.unwrap_or_default();
|
||||
let chunks: Vec<TextChunk> = db
|
||||
.client
|
||||
.query(format!("SELECT * FROM {};", TextChunk::table_name()))
|
||||
.await
|
||||
.expect("select text_chunk")
|
||||
.take(0)
|
||||
.unwrap_or_default();
|
||||
let relationships: Vec<KnowledgeRelationship> = db
|
||||
.client
|
||||
.query("SELECT * FROM relates_to;")
|
||||
.await
|
||||
.expect("select relates_to")
|
||||
.take(0)
|
||||
.unwrap_or_default();
|
||||
let entity_embeddings: Vec<KnowledgeEntityEmbedding> = db
|
||||
.client
|
||||
.query(format!(
|
||||
"SELECT * FROM {};",
|
||||
KnowledgeEntityEmbedding::table_name()
|
||||
))
|
||||
.await
|
||||
.expect("select knowledge_entity_embedding")
|
||||
.take(0)
|
||||
.unwrap_or_default();
|
||||
let chunk_embeddings: Vec<TextChunkEmbedding> = db
|
||||
.client
|
||||
.query(format!(
|
||||
"SELECT * FROM {};",
|
||||
TextChunkEmbedding::table_name()
|
||||
))
|
||||
.await
|
||||
.expect("select text_chunk_embedding")
|
||||
.take(0)
|
||||
.unwrap_or_default();
|
||||
|
||||
assert_eq!(text_contents.len(), 1);
|
||||
assert_eq!(entities.len(), 1);
|
||||
assert_eq!(chunks.len(), 1);
|
||||
assert_eq!(relationships.len(), 1);
|
||||
assert_eq!(entity_embeddings.len(), 1);
|
||||
assert_eq!(chunk_embeddings.len(), 1);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn window_manifest_trims_questions_and_negatives() {
|
||||
let manifest = build_manifest();
|
||||
|
||||
@@ -7,7 +7,7 @@ use std::{
|
||||
use anyhow::{anyhow, Context, Result};
|
||||
use common::storage::{db::SurrealDbClient, types::text_chunk::TextChunk};
|
||||
|
||||
use crate::{args::Config, eval::connect_eval_db, corpus, snapshot::DbSnapshotState};
|
||||
use crate::{args::Config, corpus, eval::connect_eval_db, snapshot::DbSnapshotState};
|
||||
|
||||
pub async fn inspect_question(config: &Config) -> Result<()> {
|
||||
let question_id = config
|
||||
|
||||
@@ -20,9 +20,10 @@ use retrieval_pipeline::{
|
||||
use crate::{
|
||||
args::Config,
|
||||
cache::EmbeddingCache,
|
||||
corpus,
|
||||
datasets::ConvertedDataset,
|
||||
eval::{CaseDiagnostics, CaseSummary, EvaluationStageTimings, EvaluationSummary, SeededCase},
|
||||
corpus, slice, snapshot,
|
||||
slice, snapshot,
|
||||
};
|
||||
|
||||
pub(super) struct EvaluationContext<'a> {
|
||||
|
||||
@@ -3,7 +3,7 @@ use std::time::Instant;
|
||||
use anyhow::Context;
|
||||
use tracing::info;
|
||||
|
||||
use crate::{eval::can_reuse_namespace, corpus, slice, snapshot};
|
||||
use crate::{corpus, eval::can_reuse_namespace, slice, snapshot};
|
||||
|
||||
use super::super::{
|
||||
context::{EvalStage, EvaluationContext},
|
||||
|
||||
@@ -5,12 +5,12 @@ use common::storage::types::system_settings::SystemSettings;
|
||||
use tracing::{info, warn};
|
||||
|
||||
use crate::{
|
||||
corpus,
|
||||
db_helpers::{recreate_indexes, remove_all_indexes, reset_namespace},
|
||||
eval::{
|
||||
can_reuse_namespace, cases_from_manifest, enforce_system_settings, ensure_eval_user,
|
||||
record_namespace_state, warm_hnsw_cache,
|
||||
},
|
||||
corpus,
|
||||
};
|
||||
|
||||
use super::super::{
|
||||
|
||||
@@ -48,7 +48,9 @@ pub(crate) async fn prepare_slice(
|
||||
.database
|
||||
.db_namespace
|
||||
.clone()
|
||||
.unwrap_or_else(|| default_namespace(ctx.dataset().metadata.id.as_str(), ctx.config().limit));
|
||||
.unwrap_or_else(|| {
|
||||
default_namespace(ctx.dataset().metadata.id.as_str(), ctx.config().limit)
|
||||
});
|
||||
ctx.database = ctx
|
||||
.config()
|
||||
.database
|
||||
|
||||
Reference in New Issue
Block a user