[Developer] #569 plain text vector Top-K probe
This commit is contained in:
@@ -0,0 +1,55 @@
|
||||
package com.cloudhandson.vpdbackoffice.service;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
import static org.assertj.core.api.Assertions.assertThatThrownBy;
|
||||
import static org.mockito.Mockito.mock;
|
||||
|
||||
import com.cloudhandson.vpdbackoffice.domain.vector.VectorQueryEmbedding;
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.springframework.jdbc.core.JdbcTemplate;
|
||||
|
||||
class VectorKnowledgeServiceTest {
|
||||
|
||||
@Test
|
||||
void vectorizesPlainTextWithTheLocalEmbeddingAndBuildsOrdsBody() {
|
||||
OpenAiCompatibleClient embeddingClient = mock(OpenAiCompatibleClient.class);
|
||||
VectorKnowledgeService service = service(embeddingClient);
|
||||
|
||||
VectorQueryEmbedding result = service.vectorizeQuery(" Oracle VPD에서 ORDS 권한 확인 ", "demo");
|
||||
|
||||
assertThat(result.query()).isEqualTo("Oracle VPD에서 ORDS 권한 확인");
|
||||
assertThat(result.embeddingMode()).isEqualTo("DEMO");
|
||||
assertThat(result.embeddingModel()).isEqualTo("로컬 임베딩(개발용)");
|
||||
assertThat(result.requestBody()).startsWith("{\"embedding\":[").contains("]}");
|
||||
}
|
||||
|
||||
@Test
|
||||
void rejectsAiModeWhenEmbeddingConfigurationIsMissing() {
|
||||
OpenAiCompatibleClient embeddingClient = mock(OpenAiCompatibleClient.class);
|
||||
VectorKnowledgeService service = service(embeddingClient);
|
||||
|
||||
assertThatThrownBy(() -> service.vectorizeQuery("검색어", "AI"))
|
||||
.isInstanceOf(AppException.class)
|
||||
.hasMessageContaining("AI 임베딩이 설정되지 않았습니다");
|
||||
}
|
||||
|
||||
@Test
|
||||
void rejectsBlankPlainTextBeforeCallingOrds() {
|
||||
VectorKnowledgeService service = service(mock(OpenAiCompatibleClient.class));
|
||||
|
||||
assertThatThrownBy(() -> service.vectorizeQuery(" ", "DEMO"))
|
||||
.isInstanceOf(AppException.class)
|
||||
.hasMessageContaining("검색 질문");
|
||||
}
|
||||
|
||||
private VectorKnowledgeService service(OpenAiCompatibleClient embeddingClient) {
|
||||
return new VectorKnowledgeService(
|
||||
mock(JdbcTemplate.class),
|
||||
new ObjectMapper(),
|
||||
embeddingClient,
|
||||
mock(ProtectedObjectService.class),
|
||||
mock(BearerTokenService.class),
|
||||
mock(OrdsProbeService.class));
|
||||
}
|
||||
}
|
||||
@@ -28,10 +28,15 @@ class GuidedFlowTemplateTest {
|
||||
assertThat(probe)
|
||||
.contains("name=\"bearerToken\"")
|
||||
.contains("검증 세션 사용자")
|
||||
.contains("벡터 검색어 (평문)")
|
||||
.contains("임베딩 방식")
|
||||
.doesNotContain("벡터 검색 요청 본문 (JSON)")
|
||||
.doesNotContain("name=\"tokenKeyId\"");
|
||||
assertThat(result)
|
||||
.contains("적용된 사용자와 권한")
|
||||
.contains("토큰 적용 후 SQL")
|
||||
.contains("벡터 검색 Top-K")
|
||||
.contains("벡터 거리 (SCORE)")
|
||||
.contains("vpd_predicate")
|
||||
.contains("다음에 할 일")
|
||||
.contains("<details")
|
||||
|
||||
Reference in New Issue
Block a user