feat(ai): 向量搜索 + hit test API
- KnowledgeV2Service.vector_search: pgvector 余弦相似度搜索 - SearchHit DTO: chunk_id/document_id/similarity/metadata - hit_test handler: POST /ai/documents/hit-test (embed query → 搜索) - AiState 添加 embedding 字段,共享 EmbeddingService 实例 - top_k 限制最大 20 Phase 2 Task 11
This commit is contained in:
@@ -594,6 +594,13 @@ async fn main() -> anyhow::Result<()> {
|
||||
cache_ttl,
|
||||
));
|
||||
|
||||
let embedding_svc = std::sync::Arc::new(
|
||||
erp_ai::service::embedding::EmbeddingService::from_settings(&db).await,
|
||||
);
|
||||
let knowledge_v2_svc = std::sync::Arc::new(
|
||||
erp_ai::service::knowledge_v2::KnowledgeV2Service::new(db.clone()),
|
||||
);
|
||||
|
||||
erp_ai::AiState {
|
||||
db: db.clone(),
|
||||
event_bus: event_bus.clone(),
|
||||
@@ -612,13 +619,15 @@ async fn main() -> anyhow::Result<()> {
|
||||
),
|
||||
knowledge: std::sync::Arc::new(erp_ai::service::knowledge::KnowledgeService::new(
|
||||
db.clone(),
|
||||
std::sync::Arc::new(
|
||||
erp_ai::service::embedding::EmbeddingService::from_settings(&db).await,
|
||||
),
|
||||
embedding_svc.clone(),
|
||||
)),
|
||||
knowledge_v2: std::sync::Arc::new(
|
||||
erp_ai::service::knowledge_v2::KnowledgeV2Service::new(db.clone()),
|
||||
),
|
||||
knowledge_v2: knowledge_v2_svc.clone(),
|
||||
document: std::sync::Arc::new(erp_ai::service::document::DocumentService::new(
|
||||
db.clone(),
|
||||
knowledge_v2_svc,
|
||||
embedding_svc.clone(),
|
||||
)),
|
||||
embedding: embedding_svc,
|
||||
chat_session: std::sync::Arc::new(
|
||||
erp_ai::service::chat_session::ChatSessionService::new(db.clone()),
|
||||
),
|
||||
|
||||
Reference in New Issue
Block a user