inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

RAG를 활용한 LLM Application 개발 (feat. LangChain)

3.2 LangChain과 Chroma를 활용한 RAG 구성

create_retrieval_chain, Custom LCEL 을 사용해서 chain을 구성하면 코드가 어떻게 되는지 보고 싶습니다.

해결된 질문

456

NoboDy J

작성한 질문수 4

0

from langchain.chains import RetrievalQA

qa_chain = RetrievalQA.from_chain_type(
    llm, 
    retriever=database.as_retriever(),
    chain_type_kwargs={"prompt": prompt}
)

 

이 예제 코드에서 create_retrieval_chain, Custom LCEL 을 사용해서 chain을 구성한 코드를 보고싶습니다.

vector-database llm langchain rag openai-api

답변 1

0

제이쓴

print(qa_chain)

이런식으로 확인하실 수 있습니다! 아마 StuffDocumentsChain 이 찍힐건데 안에 들어있는 프롬프트랑 등등 이것저것 보이실거에요. 소스코드는 랭체인 깃헙 레포 에서 확인하실 수 있습니다!

0

NoboDy J

  1. RetrievalQA 이 체인은 Deprecated 되었나요?
    2. 그리고 제가 공식문서를 보고 작성한 코드인데, 이렇게 작성해도 되는지 코드리뷰 한 번 부탁드립니다!

from dotenv import load_dotenv
from langchain_openai import ChatOpenAI
from langchain_text_splitters import RecursiveCharacterTextSplitter
from langchain_community.document_loaders import Docx2txtLoader
from langchain_openai import OpenAIEmbeddings
from langchain_chroma import Chroma
from langchain import hub
from langchain.chains import create_retrieval_chain
from langchain.chains.combine_documents import create_stuff_documents_chain
from langchain_core.prompts import ChatPromptTemplate


load_dotenv()

llm = ChatOpenAI(model_name="gpt-4o-mini")

text_splitter = RecursiveCharacterTextSplitter(
    chunk_size=1500,
    chunk_overlap=200,
)
loader = Docx2txtLoader("./tax.docx")
docs = loader.load_and_split(text_splitter=text_splitter)
embedding = OpenAIEmbeddings(model="text-embedding-3-large")
vetorstore = Chroma.from_documents(documents=docs, embedding=embedding)
retriever = vetorstore.as_retriever()

system_prompt = """
    - 당신은 최고의 한국 소득세 전문가 입니다.
    - 답변은 영어로 제공해주세요.
    - [Context]를 참고해서 사용자의 질문에 답변해주세요.
    
    [Context]
    {context}
"""

prompt = ChatPromptTemplate.from_messages(
    [
        ("system", system_prompt),
        ("human", "{input}"),
    ]
)

# prompt = hub.pull("langchain-ai/retrieval-qa-chat")
question_answer_chain = create_stuff_documents_chain(llm, prompt)
rag_chain = create_retrieval_chain(retriever, question_answer_chain)

input = '연봉 5천만원인 직장인의 소득세는 얼마인가?'
result = rag_chain.invoke({"input": input})
result

 

  1. prompt = hub.pull("langchain-ai/retrieval-qa-chat")를 사용하면 system_prompt는 따로 사용 할 수 없는 것인지 궁금합니다.

질문이 많은데, 처음하다보니 확실히 알고 넘어가야 할 것 같아서 질문드립니다. 번거로우시겠지만 답변 부탁드리겠습니다.

1

제이쓴

  1. 작성하신대로 진행하셔도 됩니다
    3. retrieval-qa-chat 이라는 프롬프트가 system prompt라서, 별도로 system prompt 작성을 원하시면 hub.pull() 을 사용하지 않으시는게 좋습니다. 만약 기존의 프롬프트에서 확장을 하고싶으시면 langsmith hub에서 내용을 확인하시고, 그대로 복사하셔서 커스텀 하고싶은 내용을 추가하시면 됩니다

소득세법 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

new_question에 대한 답 출력

0

74

2

랭체인 라이브러리

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

88

1

hub.pull 이슈

0

131

2

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

1

149

1