ㄱ
95
작성한 질문수 2
from langchain.retrievers.document_compressors import DocumentCompressorPipeline
from langchain_community.document_transformers import EmbeddingsRedundantFilter
# 중복 문서 제거
redundant_filter = EmbeddingsRedundantFilter(embeddings=embeddings_model)
# 쿼리와 관련성이 높은 문서만 필터링
relevant_filter = EmbeddingsFilter(embeddings=embeddings_model, similarity_threshold=0.5)
# Re-ranking
re_ranker = LLMListwiseRerank.from_llm(llm, top_n=2)
pipeline_compressor = DocumentCompressorPipeline(
transformers=[redundant_filter, relevant_filter, re_ranker]
)
pipeline_compression_retriever = ContextualCompressionRetriever(
base_compressor=pipeline_compressor,
base_retriever=chroma_db.as_retriever()
)
question = "테슬라 회장은 누구인가요?"
compressed_docs = pipeline_compression_retriever.invoke(question)
print(f"쿼리: {question}")
print("검색 결과:")
for doc in compressed_docs:
print(f"- {doc.page_content} [출처: {doc.metadata['source']}]")
print("-"*100)
print()`(4) DocumentCompressorPipeline`
- 여러 압축기를 순차적으로 결합하는 방식
- BaseDocumentTransformers를 추가하여, 문서를 더 작은 조각으로 나누거나 중복 문서를 제거하는 등의 작업도 가능여기에서 result = chain.invoke() 로 받아서 result의 데이터를 보면,
context = result['context'][i]
query_similarity_score = context.state['query_similarity_score']이렇게 similarity_score 처럼 rerank score같은거 보고싶은데,
# 크로스 인코더를 사용하여 유사성 점수를 계산합니다.
sentence_pairs = [[query, prediction]]
similarity_scores = cross_encoder_model.predict(sentence_pairs)이런식으로 계산을 해야하나요? 추출하고 싶은데 방법을 잘 모르겠습니다.
답변 1
0
안녕하세요. 판다스 스튜디오입니다.
LLMListwiseRerank를 사용하면, 관련성 기준으로 순위에 따라 정렬하는 방식으로 작동합니다. (아래 링크 참조)
https://inf.run/5eeJZ
이 코드를 기반으로 관련성(relevance)을 평가하는 reranker의 프롬프트를 수정해서, 관련성 점수를 함께 출력하고 이를 기준으로 정렬하도록 코드를 수정해서 적용해야 할 것 같습니다.
LLMListwiseRerank 클래스를 상속받아서, 커스텀 클래스를 만들면 될 것 같습니다.
감사합니다!
테스트데이터셋 평가지표 값 문제
0
53
1
언어 감지 및 검색 라우팅
0
52
2
동영상이 검은 화면으로 나옵니다.
0
68
2
강의가 진행되지 않습니다.
0
69
2
'팀 단위 AI 업무 혁신' 자문 관련하여 문의드리고자 합니다. (연락처 요청)
0
57
1
Rerank에 대해 질문드립니다.
0
68
2
Cross Encoder Reranker 임포트 에러 관련 내용입니다.
0
104
2
HuggingFaceCrossEncoder 임포트 에러
0
82
2
아나콘다랑 pytry없이. 단순 파이참에서 venv 설정해서 설치하는건 불가능하나요?
0
81
1
2.7 전체 RAG파이프라인 구성에서 4번째 줄 오류
0
81
1
rag 와 랭체인
0
115
2
score 기반 서치
0
50
2
KR.txt파일이 없습니다.
0
78
2
krag를 이용한 검색기법 평가관련 질문
0
77
2
MMR 관련 질문입니다.
0
84
1
Text_splitter관련 질문입니다.
0
62
2
오픈api key는 따로 구매해야되는 걸까요?
0
267
2
과거 채팅이력을 LLM에 줄때 포멧
0
74
1
OpenAIEmbeddings모델이 사용하는 토크나이저는 뭘까요?
0
174
2
ChatPromptTemplate의 from_messages로 메세지를 구성할 때 system은 어떻게 설정해야하나요?
0
98
2
create_retrieval_chain에서 context는 지정된 인자인가요?
0
64
1
vectorstore의 as_retriever와 similarity_search는 같은 로직인가요?, 사용되는 검색 알고리즘은 뭔가요?
0
95
2
evaluate_retrieval_at_K 함수 문의드립니다.
0
68
2
검색기 관련 질문드립니다.
0
88
2





