RAG 체인 만들기
이제 RAG 워크플로의 모든 구성 요소를 하나로 연결해 보세요! 문서를 준비하고 검색을 위해 Chroma 데이터베이스에 적재했습니다. 학술 논문에서 검색된 청크를 포함해 질문에 답하도록 프롬프트 템플릿도 만들었습니다.
이전 연습 문제에서 만든 프롬프트 템플릿은 prompt_template로 제공되며, OpenAI 모델은 llm으로 초기화되어 있습니다. 또한 retriever를 다시 만드는 코드가 스크립트에 포함되어 있습니다.
이 연습은 강의의 일부입니다
LangChain으로 LLM 애플리케이션 개발하기
연습 안내
- 파이프 연산자(
|)를 사용해retriever,prompt_template,llm을 순서대로 연결하는 LCEL 체인을 만드세요. - 체인에서는 retriever를
"context"에, 사용자 입력을"question"에 매핑해야 합니다. - 제공된 질문으로
.invoke()메서드를 호출해 체인을 실행하세요.
실습형 인터랙티브 연습
이 예제를 이 샘플 코드를 완성하여 풀어보세요.
vectorstore = Chroma.from_documents(
docs,
embedding=OpenAIEmbeddings(api_key='', model='text-embedding-3-small'),
persist_directory=os.getcwd()
)
retriever = vectorstore.as_retriever(
search_type="similarity",
search_kwargs={"k": 3}
)
# Create a chain to link retriever, prompt_template, and llm
rag_chain = ({"context": ____, "question": ____}
| prompt_template
| llm)
# Invoke the chain
response = rag_chain.____("Which popular LLMs were considered in the paper?")
print(response.content)