Baize v0.4.0: 도구 매칭 기능 업그레이드 — 선택적 벡터 검색, 어휘 기반 기준선 유지
요약
Baize v0.4.0은 AI 어시스턴트의 도구 검색 기능을 업그레이드했습니다. 기존의 BM25/TF-IDF 기반 어휘 매칭(lexical baseline)을 유지하면서, 새로운 밀집 채널(dense channel)을 추가하여 벡터 유사도 검색을 도입했습니다. 이를 통해 사용자가 다른 단어를 사용해도 정확한 도구를 찾을 수 있게 되었습니다.
핵심 포인트
- 밀집 채널 추가로 의역 및 의미 기반 도구 검색 가능
- BM25와 밀집 채널의 결과를 RRF로 융합하여 성능 극대화
- Ollama 또는 OpenAI 호환 API를 통한 유연한 임베딩 소스 지원
- 기존 어휘 매칭(lexical baseline)은 그대로 유지되어 안정성 확보
이번 릴리스의 내용
Baize는 팀 사용자를 위한 AI 어시스턴트 런타임입니다. 기존 서비스에 연결하고 OpenAPI/Swagger 스타일 문서를 업로드하면, 해당 엔드포인트들이 어시스턴트가 호출할 수 있는 도구(tool)가 됩니다. 실제 내부 백엔드는 일반적으로 수백 개의 도구를 카탈로그에 가져옵니다.
이러한 규모는 문제를 야기합니다: 수백 개의 도구 스키마를 모든 프롬프트에 채워 넣는 것은 비용이 많이 들고, 모델은 매우 긴 목록 중에서 선택해야 합니다. Baize는 이미 결정 계층(decision layer)으로 첫 번째 문제를 해결했습니다. 즉, 메인 모델 호출 전에 저렴하고 결정론적인 단계가 후보 도구들을 좁혀줍니다. 공개된 수치에 따르면: 3개의 백엔드에서 걸친 37개의 실제 읽기 전용 요청(총 390개 도구, DeepSeek-Flash)을 대상으로 했을 때, 기본 16개 후보로 좁힘으로써 turn-0 프롬프트 토큰을 약 34% 줄였고, 5개 루프에 걸친 185회 실행에서 99.5%의 성공률을 달성했습니다.
하지만 어휘 기반 기준선(lexical baseline)은 알려진 한계가 있습니다: 이는 토큰으로 순위를 매기기 때문입니다. 같은 의미라도 표현이 다르면 도구가 단순히 노출되지 않을 수 있습니다. v0.4.0은 이 단계를 개선하면서도 기존의 기준선을 건드리지 않습니다.
v0.4.0에서 추가된 내용
Baize의 도구 검색은 항상 본질적으로 Tool-RAG였습니다: 각 도구는 작은 문서(이름, 설명, HTTP 메서드 및 경로, 매개변수 이름)로 인덱싱됩니다.
어휘 기반 기준선은 이전과 완전히 동일하게 유지됩니다. 모든 도구 문서는 BM25 인덱스와 희소 TF-IDF 인덱스를 갖게 되며; 쿼리 시 두 점수는 RRF(Reciprocal Rank Fusion)로 융합됩니다. 이는 기본적으로 작동하며, 종속성이 전혀 필요 없고, 마찰 없는 경로를 유지합니다.
새로운 기능은 밀집 채널(dense channel)입니다. 임베더를 설정하면 각 도구 문서도 벡터를 얻게 됩니다. 쿼리 시점에는 쿼리를 임베딩하고 코사인 유사도를 계산하며, 융합 과정에서 밀집 채널이 주된 역할을 하고 BM25는 보조적인 채널로 격하됩니다. 이 두 가지는 RRF(Reciprocal Rank Fusion)를 통해 다시 병합되어 모델에 전달됩니다. 역할 분담: BM25는 정확한 용어—귀사의 도메인 내 고유 명사나 확정된 구문—를 포착하고, 밀집 채널은 의역을 포착합니다. 따라서 사용자가 다른 단어를 사용하여 동일한 것을 요청해도 올바른 도구가 검색됩니다. 혼합 모드(mixed mode)와 순수 어휘 모드(pure lexical mode)는 구분되는 내부 상태이며 관찰 가능하고 되돌릴 수 있습니다.
임베딩 소스는 다음 중 하나를 선택할 수 있습니다:
- 로컬 Ollama. 텍스트를 클라우드 임베더로 전송하고 싶지 않은 설정에 적합합니다. 설정 페이지에서 전체 흐름을 안내합니다: 원클릭 Ollama 설치, 일치하는 모델 가져오기(pulling), 설치 및 모델 경로 표시, 사용자 지정 모델 디렉토리, 그리고 필요 없을 때 깔끔한 제거 기능까지 제공됩니다. 명령줄 사용이 필요 없습니다.
- 모든 OpenAI 호환 임베딩 API. 이미 호환되는 엔드포인트를 가지고 있다면, 기본 URL과 키를 입력하면 됩니다—Baize가 채팅 모델에 사용하는 것과 동일한 방식입니다.
설계 트레이드오프(Design tradeoffs)
이것을 기본값(default)이 아닌 선택적 향상 기능으로 만든 것은 의도적인 결정이었습니다:
- 제로 비용 온보딩(Zero-cost onboarding). 새로 설치해도 어휘 매칭이 바로 작동합니다. 어휘 회상만으로는 충분하지 않다고 느낄 때만 밀집 채널(dense channel)을 선택적으로 사용하면 됩니다.
- 어휘 경로로 실패 시 개방(Fail open to the lexical path). 만약 밀집 채널에 문제가 생기면 — Ollama가 준비되지 않았거나, 임베딩 API 시간 초과 등의 경우 — 검색이 자동으로 순수 어휘 인덱스로 폴백(fallback)하여 대화가 계속됩니다. 이는 런타임의 실패 시 개방 철학(fail-open philosophy)과 일관되게 작동합니다: 속도 향상이 결코 새로운 실패 지점이 되어서는 안 됩니다.
- 좁히기 기능이 도구 사용을 비활성화하지 않음(Narrowing never disables tools). 가지치기(Pruning)는 이 단계의 프롬프트에 어떤 스키마가 포함될지 결정할 뿐입니다. 등록된 모든 도구는 모델이 직접 이름을 지정하면 여전히 실행됩니다. 아무것도 일치하는 것이 없으면 전체 세트로 폴백하며, 시스템/로그인 도구는 항상 유지됩니다.
- 찾기 쉬워짐(Easier to find). 런타임 설정 페이지가 이제 여러 탭으로 구성되었습니다: 일반(common), 속도 향상(speedups), 메모리 및 압축(memory & compaction), 보안(security). 도구 매칭 기능은
방향은 명확합니다. 도구를 많이 연결할수록 이 단계에서의 검색(retrieval)이 더 중요해집니다. Baize는 '기본적으로 비용 제로(zero-cost by default), 필요에 따른 향상, 실패 시 개방(fail open)' 원칙을 유지합니다. 새로운 의존성을 원하지 않는 사용자는 변화를 느끼지 못하며, 임베딩(embeddings)에 약간의 비용을 지불할 의향이 있는 사용자는 더 신뢰할 수 있는 도구 호출(tool recall) 기능을 얻게 됩니다.
v0.4.0 버전이 출시되었습니다: https://github.com/rebornace/baize
매칭 품질이나 Ollama 원클릭 흐름에 대한 피드백은 언제나 환영합니다. 저는 이슈들을 계속 확인하고 기능을 배포할 예정입니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기