[2023년 8월 23일] retriv
0.2.2가 나왔습니다!
이 릴리스에는 다중 필드 문서 및 필터에 대한 실험적 지원이 추가되었습니다. 어드밴스드 리트리버 문서를 참고하세요.
[2023년 2월 18일] retriv
0.2.0이 나왔습니다!
이 릴리스에는 고밀도 및 하이브리드 검색에 대한 지원이 추가되었습니다. Dense Retrieval은 쿼리와 문서의 벡터 표현의 의미론적 유사성을 활용하며, 이는 retriv
로 직접 계산하거나 다른 소스에서 가져올 수 있습니다. 하이브리드 검색은 비공식적으로 희소 검색이라고 하는 기존 검색과 밀집 검색 결과를 혼합하여 검색 효율성을 더욱 향상시킵니다. 라이브러리가 거의 완전히 다시 작성되었으므로 이전 버전으로 빌드된 인덱스는 더 이상 지원되지 않습니다.
retriv는 Sparse(BM25, TF-IDF를 사용한 기존 검색), Dense(의미 체계 검색) 및 Hybrid 검색(Sparse 검색과 Dense 검색의 혼합)을 지원하는 Python으로 구현된 사용자 친화적이고 효율적인 검색 엔진입니다. 이는 단 한 줄의 코드 로 검색 엔진을 구축할 수 있게 해줍니다.
retriv는 고속 벡터 연산 및 자동 병렬화를 위한 Numba, Transformer 기반 언어 모델의 쉬운 액세스 및 사용을 위한 PyTorch 및 Transformers, 대략적인 최근접 검색을 위한 Faiss를 기반으로 구축되었습니다. 또한 최소한의 개입으로 내부 구성 요소를 조정할 수 있도록 자동 조정 기능을 제공합니다.
지원되는 모든 검색기는 동일한 검색 인터페이스를 공유합니다.
retriv는 AutoFaiss를 활용하여 사용 가능한 하드웨어를 기반으로 10ms 응답 시간을 보장함으로써 대략적인 최근접 이웃 검색을 위한 Faiss 구성을 자동으로 조정합니다. 또한 최소한의 사용자 개입이 필요한 BM25의 매개변수에 대한 자동 조정 기능을 제공합니다. 내부적으로 retriv는 하이퍼파라미터 최적화 프레임워크인 Optuna와 정보 검색 평가 라이브러리인 ranx를 활용하여 BM25에 대한 여러 매개변수 구성을 테스트하고 가장 적합한 구성을 선택합니다. 마지막으로 검색 효율성을 극대화하기 위해 Hybrid Retriever가 계산한 어휘 및 의미 관련성 점수의 중요성을 자동으로 균형을 맞출 수 있습니다.
python>=3.8
pip install retriv
# Note: SearchEngine is an alias for the SparseRetriever
from retriv import SearchEngine
collection = [
{ "id" : "doc_1" , "text" : "Generals gathered in their masses" },
{ "id" : "doc_2" , "text" : "Just like witches at black masses" },
{ "id" : "doc_3" , "text" : "Evil minds that plot destruction" },
{ "id" : "doc_4" , "text" : "Sorcerer of death's construction" },
]
se = SearchEngine ( "new-index" ). index ( collection )
se . search ( "witches masses" )
산출:
[
{
"id" : " doc_2 " ,
"text" : " Just like witches at black masses " ,
"score" : 1.7536403
},
{
"id" : " doc_1 " ,
"text" : " Generals gathered in their masses " ,
"score" : 0.6931472
}
]
다른 기능이 구현되는 것을 보고 싶으십니까? 기능 요청을 열어주세요.
기여하고 싶나요? 이메일을 보내주세요.
retriv는 MIT 라이선스에 따라 라이선스가 부여된 오픈 소스 소프트웨어입니다.