vector-search
임베딩을 이용한 검색
크로마 설치
!pip install langchain-chroma sentence-transformers
문장 BERT: 모형 불러오기
랭체인에 맞춰 별도의 라이브러리 이용
from langchain_community.embeddings.sentence_transformer import SentenceTransformerEmbeddings
sbert = SentenceTransformerEmbeddings(model_name='jhgan/ko-sroberta-multitask')
인덱싱
from langchain_chroma import Chroma
vector_store = Chroma.from_texts(
texts=books['제목'].tolist(),
embedding=sbert)
검색
vector_store.similarity_search('살아남은 것이 다정하다', k=4)
Rank Fusion
Retriever들의 검색 결과를 RRF 방식으로 Rank Fusion
from langchain.retrievers import EnsembleRetriever
크로마를 Retriever 형식으로 변환(검색결과 4개로 설정)
vr = vector_store.as_retriever(search_kwargs={"k": 4})
두 개의 검색 엔진을 결합
er = EnsembleRetriever(retrievers=[bm25, vr], weights=[0.4, 0.6])
검색
er.invoke('살아남은 것이 다정하다')
공식에 들어가는 상수 확인(기본값 60)
er.c