ㄱ
99
작성한 질문수 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
22
1
예제를 좀 다양하게 해주세요. 너무 간단한 예제만 있어서 ... 좀 그렇습니다.
0
16
2
RateLimitError
0
26
2
dotenv, langchain_community 로드가 되지 않습니다.
0
28
1
테스트데이터셋 평가지표 값 문제
0
63
1
언어 감지 및 검색 라우팅
0
69
2
동영상이 검은 화면으로 나옵니다.
0
91
2
강의가 진행되지 않습니다.
0
81
2
'팀 단위 AI 업무 혁신' 자문 관련하여 문의드리고자 합니다. (연락처 요청)
0
72
1
Rerank에 대해 질문드립니다.
0
79
2
Cross Encoder Reranker 임포트 에러 관련 내용입니다.
0
120
2
HuggingFaceCrossEncoder 임포트 에러
0
103
2
아나콘다랑 pytry없이. 단순 파이참에서 venv 설정해서 설치하는건 불가능하나요?
0
90
1
2.7 전체 RAG파이프라인 구성에서 4번째 줄 오류
0
94
1
rag 와 랭체인
0
144
2
score 기반 서치
0
57
2
KR.txt파일이 없습니다.
0
86
2
krag를 이용한 검색기법 평가관련 질문
0
85
2
MMR 관련 질문입니다.
0
89
1
Text_splitter관련 질문입니다.
0
74
2
오픈api key는 따로 구매해야되는 걸까요?
0
344
2
과거 채팅이력을 LLM에 줄때 포멧
0
88
1
OpenAIEmbeddings모델이 사용하는 토크나이저는 뭘까요?
0
183
2
ChatPromptTemplate의 from_messages로 메세지를 구성할 때 system은 어떻게 설정해야하나요?
0
108
2





