NLWeb: Microsoft의 AI 기반 웹사이트 검색 프로토콜
카테고리
프로그래밍/소프트웨어 개발
서브카테고리
웹 개발
대상자
- 개발자 및 AI 엔지니어
- 난이도 관점: 중간 (기본적인 REST API 및 Schema.org 이해 필요)
핵심 요약
- NLWeb은 Schema.org 구조화 데이터를 활용해 웹사이트에 대화형 인터페이스를 추가하는 표준 프로토콜
Schema.org
와MCP(Model Context Protocol)
지원- 대화형 검색의 핵심 기능
- 다중 턴 대화에서 맥락 보존(예: "식탁용 채식 레시피", "1시간 이내 조리 가능")
- LLM(Large Language Model) 활용 전략
- 하나의 복잡한 프롬프트 대신 50개 이상의 작은 질문 분리 (정확성 향상, 환상 방지)
섹션별 세부 요약
1. 프로토콜 계층
- REST API
/ask
엔드포인트 - 자연어 쿼리 수신 →
Schema.org
JSON 응답 반환 - MCP 서버
/mcp
엔드포인트 list_tools
,call_tool
등 MCP 클라이언트 호환 API 지원- 기본 API 파라미터
query
,site
,prev
(이전 쿼리),mode
(리스트, 요약, 생성)
2. 구현 계층
- 쿼리 처리 흐름
- 병렬 전처리 (맥락 분석, 메모리 감지)
- 벡터 검색 (Qdrant 등 벡터 저장소 활용)
- LLM 기반 결과 순위 매기기
- 선택적 후처리 (요약, 생성)
- 최적화 기법
- "Fast Track" 경로: 검색 단계와 전처리 병렬 처리
3. 구현 예시 및 설정
- Python 기반 빠른 시작
```bash
git clone
cd NLWeb
python -m venv myenv
pip install -r requirements.txt
python -m tools.db_load Behind-the-Tech
python app-file.py
```
- curl 활용 예시
```bash
curl -X POST -d '{"query": "MCP servers for GitHub"}' http://localhost:8000/ask
```
- CLI 도구 지원
- 설정, 테스트, 실행 간소화
4. 구현 시 고려사항
- 성능 제약 요소
- LLM 호출 50회 이상 (비용 및 지연 시간)
- 벡터 저장소와 실시간 데이터 동기화
- 제한 사항
- 프로덕션 규모 배포 필요성
- 커스터마이징된 프롬프트 공학
결론
- NLWeb은 대화형 웹 검색의 전략적 방향으로, 기존
Schema.org
/RSS
데이터를 활용할 수 있는 개발자에게 유용 - 현재는 프로토타입 단계로, 프로덕션 적용을 위해 LLM 호출 비용 최적화 및 확장성 고려 필요
- 핵심 팁:
Schema.org
구조화 데이터가 있는 웹사이트에서 대화형 검색 기능을 빠르게 구현할 수 있음