hybrid-search-implementation
RAG를 위한 하이브리드 검색 구현
순수 벡터 검색은 정확한 매치를 놓치고 키워드 검색은 의미론적 쿼리에서 실패합니다. 이 스킬은 RRF 융합, 선형 결합, 크로스 인코더 재순위화를 사용하여 두 접근 방식을 결합하는 즉시 사용 가능한 템플릿을 제공합니다.
스킬 ZIP 다운로드
Claude에서 업로드
설정 → 기능 → 스킬 → 스킬 업로드로 이동
토글을 켜고 사용 시작
테스트해 보기
"hybrid-search-implementation" 사용 중입니다. 벡터와 키워드 검색 결과를 어떻게 결합하나요?
예상 결과:
- Reciprocal Rank Fusion (RRF)을 사용하세요:
- 1. 두 검색을 실행하여 순위 리스트를 얻습니다
- 2. 각 결과에 대해 점수 = sum(weight / (k + rank))를 계산합니다
- 3. 결합된 점수를 정렬하여 융합합니다
- 예시:
- vector_results = [('doc1', 0.9), ('doc2', 0.8)]
- keyword_results = [('doc2', 0.95), ('doc3', 0.7)]
- fused = rrf_fusion([vector_results, keyword_results])
- # Returns [('doc2', 0.03), ('doc1', 0.016), ('doc3', 0.016)]
"hybrid-search-implementation" 사용 중입니다. RRF와 선형 융합의 차이점은 무엇인가요?
예상 결과:
- RRF (Reciprocal Rank Fusion):
- - 점수 = sum(1 / (k + rank))
- - 순위 기반, 점수 정규화 불필요
- - k=60이 표준 상수
- - 튜닝 없이도 잘 작동
- 선형 결합:
- - 점수 = alpha * vector_score + (1-alpha) * keyword_score
- - [0,1]로 점수 정규화 필요
- - Alpha는 데이터셋별로 경험적 튜닝 필요
- - 더 제어 가능하지만 튜닝 필요
"hybrid-search-implementation" 사용 중입니다. 하이브리드 검색에 재순위화를 추가해야 하나요?
예상 결과:
- 네, 재순위화는 품질을 크게 개선합니다:
- 1. 하이브리드 검색에서 더 많은 후보를 가져옵니다 (50-100개)
- 2. 크로스 인코더를 사용하여 쿼리-문서 쌍의 점수를 매깁니다
- 3. 재순위화된 상위 k개 결과를 반환합니다
- 트레이드오프:
- - + 더 나은 정밀도와 관련성
- - - 추가 지연 시간 (크로스 인코더 추론)
- - 모델: cross-encoder/ms-marco-MiniLM-L-6-v2가 좋은 시작점
보안 감사
안전All static findings are false positives. The skill contains documentation templates for hybrid search algorithms (RRF, linear fusion) with PostgreSQL, Elasticsearch, and custom RAG pipelines. Static scanner misidentified mathematical formulas as crypto operations, markdown code fences as command execution, and benign terminology as security risks. No malicious code or credential exfiltration present.
위험 요인
⚡ 스크립트 포함 (1)
📁 파일 시스템 액세스 (1)
품질 점수
만들 수 있는 것
더 나은 재현율을 가진 RAG 시스템 구축
의미론적 이해와 정확한 매칭을 결합하여 LLM 컨텍스트를 위한 문서 검색을 개선합니다. 개념적 유사성과 특정 용어가 모두 필요한 쿼리를 처리합니다.
엔터프라이즈 검색 구현
의미론적으로 관련된 콘텐츠와 제품 코드, 이름 또는 식별자와 같은 정확한 용어를 포함하는 문서를 모두 찾는 검색 시스템을 만듭니다.
검색 품질 메트릭 개선
RRF와 같은 융합 기술을 적용하여 정밀도를 희생하지 않고 재현율을 높입니다. 개별 점수를 로깅하여 검색 품질을 디버깅하고 조정합니다.
이 프롬프트를 사용해 보세요
벡터와 키워드 검색 결과를 결합하기 위해 Reciprocal Rank Fusion을 구현하는 것을 도와주세요. (doc_id, score) 튜플의 두 리스트가 있습니다. 이들을 융합하는 방법을 보여주세요.
임베딩을 위한 pgvector와 전문 검색을 위한 tsvector를 사용하는 PostgreSQL 테이블을 설정하는 방법을 보여주세요. HNSW 및 GIN 인덱스 정의를 포함해주세요.
RRF 순위 기능을 사용하여 밀집 벡터 kNN과 BM25 텍스트 매칭을 결합하는 Elasticsearch 하이브리드 검색 쿼리를 작성하는 것을 도와주세요.
벡터와 키워드 검색을 병렬로 실행하고, 구성 가능한 방법(RRF 또는 선형)으로 결과를 융합하며, 선택적으로 크로스 인코더로 재순위화하는 완전한 HybridRAGPipeline 클래스를 만들어주세요.
모범 사례
- 매개변수 튜닝 없이 잘 작동하는 RRF 융합으로 시작하세요. k=60을 표준 상수로 사용하세요.
- 좋은 재현율을 보장하기 위해 융합 전에 개별 검색에서 더 많은 후보를 가져오세요 (최종 제한의 3배).
- 개발 중에 벡터와 키워드 점수를 별도로 로깅하세요. 이는 결과가 누락된 경우 디버깅에 도움이 됩니다.
- 프로덕션 시스템에서는 크로스 인코더 재순위화를 사용하세요. 품질 개선이 상당합니다.
피하기
- 단일 융합 가중치가 모든 쿼리에 대해 작동한다고 가정하지 마세요. 일부 쿼리는 더 많은 의미론적 매칭이 필요하고 다른 쿼리는 키워드 매칭이 필요합니다.
- 키워드 검색을 완전히 건너뛰지 마세요. 정확한 용어 매칭은 이름, 코드 및 특정 구문을 벡터보다 더 잘 처리합니다.
- 후보를 과도하게 가져오지 마세요. 재현율 요구사항과 지연 시간의 균형을 맞추세요. 재순위화 전에 50-100개의 후보가 일반적으로 충분합니다.