Jev와 Milvus로 검색하기 (Search with Jev and Milvus)
벡터 검색은 쿼리와 관련된 정보를 찾아 줘요. 유용한 검색 애플리케이션을 만드는 것은 그보다 더 많은 결정을 포함해요. 어떤 패시지가 실제로 질문에 답하는지, 이전 답변을 재사용할 수 있는지, 에이전트가 검색을 멈출 충분한 증거를 가졌는지 같은 것들이죠.
Milvus와 Jev는 이 워크플로우의 서로 다른 부분을 담당해요. Milvus는 임베딩을 저장하고 후보 레코드를 검색하며, 제품 버전이나 지식베이스 범위 같은 제약 조건을 위한 메타데이터 필터를 제공해요. Jev는 지침에 따라 검색된 텍스트의 의미를 평가해요. 애플리케이션은 그 판단을 사용해 증거를 선택하거나 다음 검색 단계를 제어할 수 있어요.
출처: Milvus 문서
본문
Jev는 무엇을 하나요? (What does Jev do?)
Jev 요청은 컨텍스트와 하나 이상의 판단 질문을 제공해요. Jev의 typed outputs에는 고정 옵션 중 선택, 순서가 있는 점수, yes/no 확률이 포함돼요. 이 출력 덕분에 애플리케이션 코드는 자유 형식의 설명을 파싱하지 않고도 결정을 내릴 수 있어요. 생성 모델은 필요할 때 여전히 답변이나 후속 검색 쿼리를 작성할 수 있어요.
예를 들어 사용자가 Atlas v2를 설치하는 방법을 물어본다고 해 봐요. Milvus는 검색을 v2 문서로 제한하고 설치, 업그레이드, 트러블슈팅에 관한 유사한 패시지를 반환할 수 있어요. 그러면 Jev가 어떤 패시지가 초기 설정을 설명하는지 평가해요. 애플리케이션은 선택한 증거를 답변 생성 모델에 전달해요.
책임은 단순해요.
- Milvus로 검색: 필요한 메타데이터 제약 내에서 후보를 찾아요.
- Jev로 판단: 해당 후보를 질문과 작업별 기준에 대해 평가해요.
- 애플리케이션 코드로 행동: 결과를 재정렬하고, 컨텍스트를 필터링하고, 답변을 재사용하거나 검색을 계속해요.
일부 결정은 검색 전에 이뤄져요. Jev는 검색 범위를 선택하거나 컬렉션에 들어가기 전에 들어오는 문서를 평가할 수 있어요. 접근 제어와 정확한 필터는 애플리케이션의 책임으로 남아요.
검색 시나리오 살펴보기 (Explore the search scenarios)
Search with Jev 컬렉션에는 9개의 실행 가능한 튜토리얼이 있어요. 각각 작은 합성 데이터셋을 사용하며 검색된 레코드, 판단, 결과 동작을 보여 줘요.
더 나은 증거 선택하기 (Select better evidence)
- 검색 결과 재순위화: 문서와 코딩 에이전트 메모리를 재정렬해요. 노트북 포트 오류에 대한 메모리가 컨테이너 연결 문제와 비슷해 보일 수 있는데, 더 유용한 메모리는 실제 컨테이너-호스트 수정을 기록한 것이에요.
- 검색 컨텍스트 필터링: Milvus가 버전 필터를 적용한 뒤 초기 설치 지침과 업그레이드·트러블슈팅 패시지를 구분해요.
- 그래프 관계 재순위화: 저자의 출생지에 대한 질문에 답할 때 책-저자 다리와 저자-출생지 관계를 모두 선택한 뒤, 원본 패시지를 가져올 때 그 순위를 유지해요.
검색과 답변 재사용 제어하기 (Control search and answer reuse)
- 검색 중단 시점 결정: 생성 모델이 축적된 증거에서 검색을 제안하고, Jev는 원래 질문에 답할 수 있는지 판단해요. 예시는 직접 답변, 두 단계 질문, 답 없이 검색 한도에 도달하는 사용 불가능한 사실을 다뤄요.
- 검색 쿼리 라우팅: 문서, 청구, 메모리 검색을 선택한 뒤 해당 Milvus 필터를 적용해요. 범위 밖 쿼리는 별도 경로를 타요.
- 시맨틱 캐시 재사용 검증: 유사한 캐시된 요청을 검색한 뒤, 그 답변이 새 요청의 작업, 언어, 컨텍스트 요구 사항도 충족하는지 확인해요.
지식 파이프라인 개선과 점검 (Improve and inspect the knowledge pipeline)
- 인덱싱 전 문서 선별: 실질적인 운영 지침과 홍보성 또는 불완전한 자료를 구분하며, 인덱스·검토·제외 동작을 별도로 수행해요.
- 검색된 패시지 검열: 어시스턴트를 다른 방향으로 돌리려는 텍스트를 식별하면서 일반적인 보안 조언은 유지해요. 추가 검열 단계이지 보안 보장은 아니에요.
- 검색 증거 평가: 패시지 관련성, 증거가 충분한지, 답변이 근거 없는 주장을 하는지 판단해요. 예시는 의도적으로 증거를 제거하거나 근거 없는 문장을 추가해 차이를 명확히 보여 줘요.
준비된 재순위화 인터페이스 (A ready-made reranking interface)
Milvus Model은 애플리케이션 쪽 JevRerankFunction을 제공해요. 쿼리와 후보 문서 텍스트를 넘기면 관련성 순으로 정렬된, 원래 인덱스를 포함한 점수 결과를 받아요. 그 인덱스를 사용해 Milvus가 반환한 레코드를 재정렬해요.
Jev 통합은 병합되었어요. 현재 API는 구현과 생성자 옵션에서 확인할 수 있어요. TYPESAFE_API_KEY를 받으며 기본값은 jev-latest예요. 이 통합이 포함된 패키지 버전을 사용하세요.
현재 래퍼는 claim-and-evidence 관련성 프롬프트를 사용해요. 이 기준이 자신의 작업에 맞는지 확인하세요. 메모리 호환성, 중단, 라우팅 같은 커스텀 판단이 필요하다면, TypeSafe API를 직접 사용하는 연결된 튜토리얼을 따라가세요. 튜토리얼은 Python 애플리케이션 코드에서 직접 API 호출을 보여 줘요.
Milvus로 시도해 보기 (Try it with Milvus)
Colab에서 재순위화 튜토리얼 열기로 후보 검색과 순위화부터 시작해요. 로컬 설정과 전체 튜토리얼 목록은 컬렉션 README를 참고하세요.
예시는 임베딩에 Gemini API 키, Jev에 TypeSafe API 키를 사용해요. 에이전트 검색 튜토리얼은 쿼리와 답변 생성에도 Gemini를 사용해요. 샘플 텍스트가 이 API 제공자에게 전송되며 호출이 크레딧을 소모할 수 있어요.
튜토리얼은 기본적으로 Milvus Lite로 실행되며 Milvus 서버나 Zilliz Cloud용 연결 옵션을 포함해요. 배포 방식과 관계없이 동일한 작업 분할이 적용돼요. Milvus가 후보를 검색하고 애플리케이션이 관련 텍스트를 Jev에 보내 판단해요.
예시를 자신의 기준과 임계값의 출발점으로 취급하세요. 관련성 점수가 답변이 정확하다는 것을 보장하지는 않으며, 이 작은 학습 데이터셋은 프로덕션 정확도나 속도를 입증하지 않아요.
구현과 평가 결과 살펴보기 (Explore implementations and evaluation results)
다음 오픈소스 프로젝트는 이러한 아이디어를 더 큰 검색 워크플로우에 적용해요. 연결된 보고서가 각 실험의 데이터셋, 비교, 한계를 설명해요.
| 프로젝트 | 검색 사용 사례 | Jev 작업 |
|---|---|---|
| MemSearch | 코딩 에이전트를 위한 영속 Markdown 메모리 | Jev 구현 · 평가 |
| Vector Graph RAG | 멀티홉 질문을 위한 벡터·그래프 검색 | Jev 구현 · 평가 |
| DeepSearcher | 개인 지식에 대한 반복 검색 | 실험 러너 · 검색 중단 평가 (독립 실험) |
| GPTCache | 호환 요청에 대한 답변 재사용 | Jev 구현 · 평가 |
DeepSearcher의 기여는 독립적인 검색 중단 실험이에요. 다른 구현 링크는 작업별 Jev 통합을 보여 줘요. 이 프로젝트들의 결과는 공유 벤치마크로 취급하기보다 각각의 평가 맥락에서 읽어야 해요.
더 알아보기 (Learn more)
- Jev 문서 — Jev 개념과 사용법
- Milvus bootcamp 저장소 — 더 많은 검색 튜토리얼
- Milvus Model — 애플리케이션 쪽 reranker 함수