inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

프로젝트로 배우는 Python 챗봇 & RAG - LangChain, Gradio 활용

Chroma DB를 활용하여 PDF 파일에 대해 RAG 기반 질의응답 구현 (실습)

질문에 의해 결정된 {context} 값의 토큰량을 확인하는 방법이 있을까요?

315

김정헌

작성한 질문수 1

0

궁금한 점이 있어서 질문드립니다.

 

강의 소스에서, 다음 코드를 보면, retrieval_chain 변수에 {context} 결정 값이 있을 것으로 예상하고 있는데요.

retrieval_chain = create_retrieval_chain(retriever, document_chain) 
response = retrieval_chain.invoke({"input" : "질문" })

retrieval_chain.invoke() 하기 전에, {context} 값을 확인하는 방법이 있을지요?

 

llm 모델을 바꿔가며 실험해보니,

retrieval_chain.invoke() 후 response['context'] 내용이 llm 모델마다 많이 달라지는 것을 관찰했어요.

gpt-3.5-turbo-16k-0613, gpt-3.5-turbo-0125, gpt-4, gpt-4-turbo 모델에서 실험해봤습니다.

그렇다면,

llm 모델에 따라 제출할 {context} 내용이 달라질 수도 있다고 이해하면 맞을까요?

{input} 값으로 벡터 검색한 내용이 {context} 값이 되는 단순한 방식은 아닌 것으로 이해했습니다.

 

 

 

챗봇 gradio chatgpt llm langchain openai-api

답변 2

1

김정헌

와우~!

친절하고 세심하게 알려주셔서 감사합니다 강사님

최고에요^^

0

판다스 스튜디오

감사합니다^^

즐거운 하루 되세요~!

0

판다스 스튜디오

안녕하세요. 우선 좋은 질문을 해주셔서 감사합니다.

실험하실 때 사용한 retriver가 아래 그림과 같이 Chroma 벡터 리트리버의 기본 설정을 적용했다면 유사도 기준으로 동일한 문서가 검색되어 {context} 내용으로 전달되는 것이 맞습니다. 다만 "mmr"이나 LLM 모델을 활용하여 쿼리를 생성하는 방식을 사용하신다면 벡터 검색 결과가 달라질 수 있습니다.

 

langchain 소스코드를 확인했는데 특이 사항이 없었습니다. 검색 문서를 그대로 전달하도록 구성되어 있습니다. (링크)

retriever = db.as_retriever()

 

이 설정에서 gpt-3.5-turbo-16k-0613, gpt-3.5-turbo-0125, gpt-4 모델을 제가 실험했을 때는 항상 동일한 문서가 검색되었습니다. OpenAI 모델을 사용하신다면 토큰 사용량을 확인할 수 있습니다. 아래 그림에서 보시면 Prompt Token 개수가 859개로 같은 것을 보실 수 있습니다. (아래 그림 참조)

with get_openai_callback() as cb:
    response = retrieval_chain.invoke({"input": "what is the attention mechanism in transformers?"})
    print(cb)

 

image

사용하신 벡터스토어와 리트리버를 포함한 코드를 주시면 상황을 이해하는데 더 도움이 될 것 같습니다.

추가적으로 궁금한 부분이 있으면 언제든 편하게 말씀해주세요.

 

감사합니다.

0

김정헌

강사님께서 강의 교재로 사용한 소스 코드를 그대로 사용하되,
pdf 문서를 달리해봤습니다.

'디지털트윈 활성화 전략.pdf' 문서인데, 본 답글에 문서를 첨부할 수 없네요..

 

아무튼, 알려주신 콜백 방법으로 출력해보니,
강사님 말씀이 맞았습니다. 제가 착각했네요.
response['input'], response['context'] 내용이

LLM 모델이 어떻든 관계 없이 동일함을 확인하였습니다.

그럼, 최초 질문으로 돌아가 볼께요.

retrieval_chain.invoke() 하기 전에,
response['context'] 값과 동일한 값을 다른 변수에서 얻을 수 있는 방법이 있는지 궁금합니다.

아래 링크 문서 잠시 봤는데요, 여기에 답이 있는 것인가요?

https://api.python.langchain.com/en/latest/_modules/langchain/chains/retrieval.html#create_retrieval_chain

1

판다스 스튜디오

안녕하세요.

해당 링크에 정의된 create_retrieval_chain 메소드에서 추출할 수 있는 방법은 없습니다.

아래와 같이 retriever 객체에 동일한 쿼리를 전달하면 같은 검색 결과를 얻을 수 있습니다.

retrieved_docs = retriever.get_relevant_documents("what is the attention mechanism in transformers?")

좋은 질문을 해주셔서 저도 꼼꼼하게 문서를 살펴볼 수 있었습니다.

감사합니다.

 

파워쉘에서 패키지 설치 시 오류

0

40

2

Gradio 런치 PDF 관련 에러

0

77

2

휴..

0

70

2

환경설정 질문

0

87

2

poetry add python-dotenv langchain langchain-openai gradio 설치 안 되요

0

154

3

OpenAI API를 활용하여 LLM Chain 구현하기 (실습)

0

282

3

OpenAI API를 활용하여 LLM Chain 구현하기 (실습) 에서

0

226

1

커널선택시 poetry env가 보이지 않습니다.

0

195

2

환경설정문제

0

193

2

[질문드립니다] poetry export -f requirements.txt --output requirements.txt

0

162

1

[심화질문] Gradio ChatInterface로 PDF 챗봇 애플리케이션 구현

0

240

2

creawai Agent 선언 부분 오류 문의

0

152

1

10강 langchain_community 찾을 수 없는 오류

0

270

1

CrewAI 설치시 오류(주신 pyproject.toml 이용)

0

370

2

오류문의

0

222

2

llm.invoke(prompt_text) 실행시 에러 발생

0

401

2

Tavily 검색 도구, CrewAI Sequential Agent 활용 방법 (실습) 수업자료.

0

321

1

OPENAI_API_KEY 인식중에 에러가 발생하네요,

0

416

1

ffmpy 설치 실패, ChefBuildError

0

246

1

커널에서 poetry env가 보이지 않습니다.

0

381

2

Chroma 오류

0

746

4

RAG에서의 chain 코드

0

164

1

프롬프트 기법에 대한 소식을 어디서 얻을 수 있을까요?

0

167

1

api key 호출 시

0

191

1