inflearn logo
강의

講義

知識共有

RAGを活用したLLM Application開発(feat. LangChain)

4.1 Streamlitのインストールとuser message作成

new_question에 대한 답 출력

解決済みの質問

74

itmedahwa

投稿した質問数 2

0

new_question 이 ''연봉 5천만원인 거주자의 소득세는 얼마인가요?'' 이라는 질문만 내놓고, 답은 내놓지 않습니다

%pip install python-dotenv langchain langchain-upstage langchain-community langchain-text-splitters langchain-pinecone docx2txt
from langchain_community.document_loaders import Docx2txtLoader
from langchain_text_splitters import RecursiveCharacterTextSplitter

text_splitter = RecursiveCharacterTextSplitter(
    chunk_size=1500,
    chunk_overlap=200,
)
loader = Docx2txtLoader('./tax.docx')
document_list = loader.load_and_split(text_splitter=text_splitter)
from dotenv import load_dotenv
from langchain_upstage import UpstageEmbeddings

# 환경변수를 불러옴
load_dotenv()

# OpenAI에서 제공하는 Embedding Model을 활용해서 `chunk`를 vector화
embedding = UpstageEmbeddings(model="embedding-query")
from langchain_pinecone import PineconeVectorStore

# 데이터를 처음 저장할 때 
index_name = 'tax-upstage-index'
database = PineconeVectorStore.from_documents(document_list, embeddin
g, index_name=index_name)
query = '연봉 5천만원인 직장인의 소득세는 얼마인가요?'

# `k` 값을 조절해서 얼마나 많은 데이터를 불러올지 결정
retrieved_docs = database.similarity_search(query, k=3)
retrieved_docs
from langchain_upstage import ChatUpstage

llm = ChatUpstage()
from langchain_core.prompts import PromptTemplate

prompt_with_template = '아래 질문에 답변해주세요:\n\n {query}'

prompt_template = PromptTemplate(template=prompt_with_template, input_variables={"query"})
from langchain_core.output_parsers import StrOutputParser
from langchain_core.prompts import ChatPromptTemplate

dictionary = ["사람을 나타내는 표현 -> 거주자"]

prompt = ChatPromptTemplate.from_template(f"""
    사용자의 질문을 보고, 우리의 사전을 참고해서 사용자의 질문을 변경해주세요.
    만약 변경할 필요가 없다고 판단된다면, 사용자의 질문을 변경하지 않아도 됩니다.
    그런 경우에는 질문만 리턴해주세요
    사전: {dictionary}
    
    질문: {{question}}
""")

dictionary_chain = prompt | llm | StrOutputParser()
tax_chain = {"query": dictionary_chain} | prompt_template
new_question = dictionary_chain.invoke({"question": query})
new_question

RetrievalQA 가 사라져서 PromptTemplate 랑 Pinecorn으로 어떻게든 대체하려고 했는데 엉망이 된거 같습니다. ㅠㅠ

어떻게 하면 답까지 내놓게 할 수 있을까요?

vector-database llm langchain rag openai-api

回答 2

0

jasonkang

new_question은 dictionary_chain을 활용해서 사용자의 질문을 검색이 조금 더 잘되게 수정하는 용도입니다. 코드를 조금 더 따라가보시면 답변을 얻으실 수 있을거에요!

0

communityai8509

안녕하세요, 인프런 AI 인턴입니다. 다화 (만점)님께서 질문하신 내용에 대해 검토해보겠습니다.

주어진 코드에서 dictionary_chain.invokenew_question을 사용하는 부분에서 제대로 된 결과가 생성되지 않는 문제를 겪고 계신 것 같습니다. 이 문제는 프롬프트 템플릿과 체인의 구성에서 발생할 수 있습니다. 여러분이 사용하려는 처리 과정 일부가 빠져있거나, 툴체인의 적절한 연결이 되지 않았기 때문일 수 있습니다.

문제 해결 가이드

문제 요약

  • dictionary_chain이 사용자의 질문을 받고 의도한 대로 변환하지 못함.
  • 최종 new_question 변수에 적절한 답변을 생성하지 못함.

해결 방안

  1. Dictionary Chain 작동 확인: 현재 설정의 프롬프트와 체인을 점검하여, 변환하고자 하는 질문이 제대로 변환 및 전달되는지 확인해야 합니다.

  2. Prompt and Chain 수정

    • Prompt Template: prompt_with_templateprompt_template이 잘못 연결된 것 같습니다. ChatPromptTemplate을 통해 정의된 부분이 일관되게 작동하도록 해주세요.
   from langchain_core.prompts import PromptTemplate
   from langchain.chains import RetrievalQA
   
   # QA 체인을 통해 질문을 처리합니다.
   qa_chain = RetrievalQA.from_chain_type(
       llm=llm,
       retriever=database.as_retriever(),
       chain_type_kwargs={"prompt": prompt_with_template}
   )
  1. 데이터베이스 및 벡터 스토어 활용:

    • Pinecone 등 벡터 데이터베이스의 설정이 올바른지 검토해야 합니다. 적절하게 데이터가 저장되고 검색되는지 확인하세요.
  2. LLM 및 Embedding 확인:

    • 사용하고 있는 UpstageEmbeddingsChatUpstage의 설정이 올바르게 연결되어 있는지 확인하십시오.
  3. 최종 실행 과정:

    • qa_chain으로 query를 처리하여 적절한 응답을 생성하고 있는지 최종 결과를 수동적으로 확인 후 디버깅 하세요.

추가 링크 및 학습 자료

  • 관련 질문과 답변 자료를 통해 더 많은 정보를 얻을 수 있습니다. 다양한 실습 사례를 통해 자신의 코드에 적용할 수 있는 힌트를 얻으실 수 있습니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

소득세법 docx 파일 공유 요청건

0

65

1

EXAONE 모델 불러오기 안되는 문제

0

89

2

[5.1 강의] LLM Evaluator에 Upstage를 사용하는 방법 + 변경된 Langsmith Docs를 참고하여 구현하는 방법 공유

0

104

2

강의 9에 QA관련된 import가 되지 않네요

0

111

2

🚨 python3.14 를 쓰고 계시면 chroma 에서 ConfigError 가 발생합니다.

1

200

1

강의와 책 관련 질문

0

87

1

문서 전처리 고민

0

111

1

RAG 배포 질문드립니다

0

95

1

강의 내용과는 별개로 궁금한 점이 있습니다

0

89

2

폐쇄망 챗봇 모델

0

94

1

AI agent 쿠폰

0

95

2

저는 왜 그대로 했는데 답변이 틀리게 나오는지 모르겠네요

0

102

2

langchain howto/sequence는 지금 doc 공식 사이트 어디서 확인할 수 있나요?

1

95

1

랭체인 라이브러리

0

148

2

[LangGraph를 활용한 AI Agent 개발] 쿠폰 유효기간

0

106

1

postgresql의 pgvector 벡터는 어떤가요?

0

345

2

doc관련

0

128

2

load_dotenv() 실행 False

0

96

1

RAG 답변 개선을 위한 정답지 활용 구조 검토 요청

0

119

2

3.2 from langchain.chains ~ 에서 모듈을 찾지 못할 때.

1

406

2

강의 완료 오류

0

89

1

hub.pull 이슈

0

131

2

[3.3 강의] Upstage를 사용한 RAG 구현 성공기 공유

1

150

1

RAG 문서 관리 방법

0

106

2