📌 Description
정정(조사 완료) — 최초 작성 시 embedding_model_id 불일치나 is_searchable 다중 행을 의심했으나 둘 다 아니었습니다. 검색 결함이 아니라 정책 변경을 따라가지 못한 테스트입니다.
LocalDocumentIndexingE2ETest가 develop 기준으로 실패합니다. 의미 검색 결과에 DOCX 문서가 포함되지 않아 anyMatch 단정이 깨집니다.
실제 원인
DOCX는 검색 SQL의 WHERE 조건을 모두 통과합니다. 조건을 단계별로 분해해 확인했습니다.
+ model+ACTIVE+INDEXED = [{document_id=3, c=2}, {document_id=4, c=1}] ← DOCX(4) 포함
탈락 지점은 SQL이 아니라 VectorSearchQueryService.selectCandidates의 최소 유사도 필터입니다.
[SEARCH] candidate filter minSimilarity=0.30 maxChunksPerDocument=2 before=3 after=2
원시 유사도 실측값입니다.
| 문서 |
유사도 |
결과 |
| PDF chunk 1 |
0.8272 |
통과 |
| PDF chunk 2 |
0.4262 |
통과 |
| DOCX chunk 1 |
0.2218 |
임계값 0.30 미달로 제외 |
테스트 픽스처를 보면 당연한 결과입니다.
- 질의:
How does pgvector HNSW improve cosine similarity search for embeddings?
- DOCX 본문:
Flour water yeast and salt are combined before dough fermentation and oven baking.
제빵 문서라 pgvector 질의와 무관합니다. 유사도 0.2218은 정상이고, 최소 유사도 가드레일이 이를 제거하는 것도 의도된 동작입니다.
즉 이 테스트는 "의미적으로 무관한 문서도 검색 결과에 반드시 나와야 한다" 고 단정하고 있었습니다. 최소 유사도 정책(#190·#192·#197·#199·#201) 도입 이전에 작성돼 정책 변경을 반영하지 못한 상태입니다.
영향 범위
local-e2e 태그가 기본 test 태스크에서 제외돼 ./gradlew test로는 실행되지 않습니다.
- CI에도 빌드·테스트 워크플로가 없어 아무도 막히지 않습니다.
- 제품 결함이 아니므로 사용자 영향은 없습니다.
✅ To-do
✅ 완료 기준
📌 Description
LocalDocumentIndexingE2ETest가 develop 기준으로 실패합니다. 의미 검색 결과에 DOCX 문서가 포함되지 않아anyMatch단정이 깨집니다.실제 원인
DOCX는 검색 SQL의 WHERE 조건을 모두 통과합니다. 조건을 단계별로 분해해 확인했습니다.
탈락 지점은 SQL이 아니라
VectorSearchQueryService.selectCandidates의 최소 유사도 필터입니다.원시 유사도 실측값입니다.
테스트 픽스처를 보면 당연한 결과입니다.
How does pgvector HNSW improve cosine similarity search for embeddings?Flour water yeast and salt are combined before dough fermentation and oven baking.제빵 문서라 pgvector 질의와 무관합니다. 유사도 0.2218은 정상이고, 최소 유사도 가드레일이 이를 제거하는 것도 의도된 동작입니다.
즉 이 테스트는 "의미적으로 무관한 문서도 검색 결과에 반드시 나와야 한다" 고 단정하고 있었습니다. 최소 유사도 정책(#190·#192·#197·#199·#201) 도입 이전에 작성돼 정책 변경을 반영하지 못한 상태입니다.
영향 범위
local-e2e태그가 기본test태스크에서 제외돼./gradlew test로는 실행되지 않습니다.✅ To-do
✅ 완료 기준
./gradlew localE2eTest --tests "*LocalDocumentIndexingE2ETest*"가 통과한다.SEARCH_VECTOR_MIN_SIMILARITY=0.0으로 가드레일을 무력화하면 테스트가 실패한다(단정이 실제로 정책을 지키는지 확인).